2016-04-08 5 views
1

Я знаю, что этот вопрос рассматривался несколько раз, но ни одна из исправлений, похоже, не работает с моей конкретной проблемой. Я пытаюсь захватить любую страницу из http://www.lewmar.com, но некоторые из них как они блокируют все попытки. Мой последний сценарий выглядит следующим образом:cURL и get_file_contents заблокирован

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», но еще до сих пор не могут получить что-нибудь вернулся.

Кто-нибудь знает, как они могут распознавать cURL и блокировать.

Приветствия

+0

http://stackoverflow.com/questions/34288640/testing-curl-the-code-not-working/34290456#34290456 – Andreas

+0

Спасибо за предложение, но оно не работает на этом конкретном сайте. –

ответ

0

При первом посещении этого сайта он проверяет, чтобы увидеть, если у вас есть печенье. Если вы этого не сделаете, он отправит вам сообщение и отправит перенаправление (на ту же страницу). У вас нет ничего в вашем коде для хранения файлов cookie, поэтому вы в конечном итоге обходите по кругу. Curl отказывается после 20 перенаправлений. Решение: включить файлы cookie!

curl_setopt ($ ch, CURLOPT_COOKIESESSION, true);

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

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

+0

Спасибо, я добавил дополнительные заголовки и снова запустил сценарий. Я вижу, что новый файл cookie записывается в файл cookie.txt следующим образом: # Netscape HTTP Cookie File # http://curl.haxx.se/rfc/cookie_spec.html # Этот файл был создан libcurl! Редактируйте на свой страх и риск. www.lewmar.com \t FALSE \t/\t FALSE \t \t 1491653865 Drupal.visitor.commerce_currency \t GBP cookies2.txt не получает создан, и я до сих пор не получают ничего вернулся из завитков. Я не очень хорош с печеньем, поэтому, может быть, мне не хватает чего-то действительно простого? –

+0

Я также вынул CURLOPT_REFERER, так что, может быть, попробовать? – DewiW

Смежные вопросы