Имитация реального браузера в curl - PullRequest
0 голосов
/ 15 октября 2018

В течение некоторого времени я пытался написать идеальные симуляторы браузера, для этого я написал скрипт, который в некоторой степени имитирует браузер и корректно работает на многих страницах с помощью ssl.Недавно во время тестирования сайта pornhub.com и wikipedia.com произошла странная ошибка в моем скрипте, просто для pornhub после нескольких перезагрузок страницы отображается состояние заголовка «Загрузка .. Длина содержимого: 1456» и количество изменений загруженных данных.в режиме реального времени на все меньшие и большие значения.У меня вопрос к очень опытным и профессиональным программистам: сталкивались ли вы с такой ситуацией, если да, у вас есть какие-либо подсказки или исправления для моего скрипта?Если вы активируете его на 3 вкладках браузера и обновите его, вы получите ошибку.

<?php 
function curl($url)
{

    $headers = [
        'Accept-Language: pl,en-US;q=0.9,en;q=0.8',
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    ];
    $cookie = 'cookie.txt'; 
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_REFERER, 'https://www.wikipedia.org');
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    if (!file_exists($cookie)){
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
    }else{     
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
    }
    $c = curl_exec($ch);
    curl_close($ch);
    return $c;
}

echo curl('https://www.wikipedia.org');
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...