Я использую CURL и file_get_contents, чтобы узнать основную разницу между запросом сервера для страницы и запросом браузера (органическим).
Я запрашиваю страницу PHPINFO в обоих направлениях и обнаружил, что она дает разные результаты в разных случаях.
Например, когда я пользуюсь браузером, PHPINFO показывает это: _SERVER ["HTTP_CACHE_CONTROL"] no-cache Эта информация отсутствует, когда я запрашиваю одну и ту же страницу через PHP.
Мой CURL:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/phpinfo.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0");
curl_setopt($ch, CURLOPT_INTERFACE, $testIP);
$output = curl_exec($ch);
curl_close($ch);
Мой файл_get_contents:
$opts = array(
'socket' => array('bindto' => 'xxx.xx.xx.xx:0'),
'method' => 'GET',
'user_agent ' => "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0", // this doesn't work
'header' => array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*\/*;q=0.8')
);
Моя цель: Сделать запрос PHP похожим на запрос браузера.
одним из возможных способов обнаружения сервером вы PHP-код, а не браузером, проверьте ваш файл cookie. с запросом php curl на сервер один раз и вставлять cookie, который вы получаете к следующему запросу. проверьте здесь: http://docstore.mik.ua/orelly/webprog/pcook/ch11_04.htm другой способ, которым сервер может понять, что вы робот (php-код) - это HTTP-заголовок реферирования. вы можете узнать больше здесь: http://en.wikipedia.org/wiki/HTTP_referer