PHP发送的HTTP标头

时间:2015-01-10 13:29:08

标签: php curl header file-get-contents

我正在使用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请求看起来与浏览器请求完全相同。

1 个答案:

答案 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