我正在使用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);
我的file_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请求看起来与浏览器请求完全相同。
答案 0 :(得分:-1)
服务器检测到你的一种可能方法是php代码而不是浏览器检查你的cookie。用php curl请求一次到服务器并注入你得到的cookie到你的下一个请求。 点击这里: http://docstore.mik.ua/orelly/webprog/pcook/ch11_04.htm 另一种方式,服务器可以理解你是一个机器人(PHP代码)是检查referer http标头。 你可以在这里了解更多: http://en.wikipedia.org/wiki/HTTP_referer