Curl facebook.com bản desktop bị lỗi

hi mn, em thử curl với facebook bản mobile (m.facebook.com) thì get được dữ liệu đúng như khi mình truy cập link đó ở trình duyệt, nhưng khi curl bản desktop www.facebook.com thì nó sẽ luôn bị như này

ví dụ link trang cá nhân của zuck: https://www.facebook.com/zuck , khi curl link nafykết quả sẽ bị như bên dưới. nhưng curl https://m.facebook.com/zuck thì được

không biết là facebook chặn hay là do gì nữa, ai biết ko ạ.

code day a

$url = 'https://www.facebook.com/zuck';
$cookie = '';// cookie facebook
echo postData('https://www.facebook.com/zuck', $cookie); //error
echo postData('https://m.facebook.com/zuck', $cookie); //ok
echo postData('https://mbasic.facebook.com/zuck', $cookie, 'mobile'); //ok
function postData($url, $cookie = null, $type = 'desktop')
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    if ($cookie != null) {
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    }
    if ($type == 'mobile') {
        curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14');
    } else {
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36');
    }
   
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

Code bên dưới có thể curl thành công url

<?php

$url = 'https://www.facebook.com/zuck';





$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");


$headers = array();
$headers[] = "User-Agent:" . getRandomUserAgent();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

echo $result;

function getRandomUserAgent()

{

    $userAgents=array(

        "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6)    Gecko/20070725 Firefox/2.0.0.6",

        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",

        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",

        "Opera/9.20 (Windows NT 6.0; U; en)",

        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50",

        "Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]",

        "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9",

        "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48"       

    );

    $random = rand(0,count($userAgents)-1);

 

    return $userAgents[$random];

}


?>
4 Likes

mình chạy nó ra trang trắng, và nếu được thì đây là curl không có cookie (chưa đăng nhập) thì chắc là được, nhưng mình cần gửi cả cookie để lấy html sau khi đăng nhập với cookie.

nhưng mình viết code theo cách khác để xử lí task hiện tại rồi, không cần curl link này nữa. cảm ơn b ihii

nhưng vẫn muốn biết lí do tại sao lại hiện lỗi đó khi curl ở bản desktop nhỉ??@

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?