cURL和get_file_contents被阻止

时间:2016-04-08 10:46:31

标签: php curl

我知道这个问题已经在几次处理过,但是没有任何修复似乎与我的特定问题有关。 我试图抓住http://www.lewmar.com中的任何页面,但有些人试图阻止所有尝试。我的最新脚本如下:

function curl_get_contents($url)
  {
    $ch = curl_init();
    $browser_id = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0";

    $ip = $_SERVER["SERVER_ADDR"];
    curl_setopt($ch, CURLOPT_USERAGENT, $browser_id);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $ip);

    $headers = array();
    $headers[] = 'Cache-Control: max-age=0';
    $headers[] = 'Connection: keep-alive';
    $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    $headers[] = 'Accept-Language: en-US,en;q=0.5';

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

$url = 'http://www.lewmar.com';
$contents = curl_get_contents($url);
echo strlen($contents); 

我试图复制大部分标题,但该网站似乎没有检查“Javascript”#39;兼容性,但仍然无法返回任何内容。

有没有人知道他们如何识别cURL和阻止。

干杯

1 个答案:

答案 0 :(得分:0)

当您第一次访问该网站时,它会检查您是否有Cookie。如果不这样做,它会发送一个并发送重定向(到同一页面)。您的代码中没有任何内容可以存储Cookie,因此您最终会围成一圈。卷曲在20次重定向后放弃。解决方案:启用cookie!

curl_setopt($ ch,CURLOPT_COOKIESESSION,true);

curl_setopt($ ch,CURLOPT_COOKIEJAR,'cookies.txt');

curl_setopt($ ch,CURLOPT_COOKIEFILE,'cookies2.txt');