PHP 发送的 HTTP headers

HTTP headers sent by PHP

我正在使用 CURL 和 file_get_contents 找出服务器请求页面和浏览器请求(有机)之间的基本区别。

我正在双向请求 PHPINFO 页面,发现它在不同情况下给出不同的输出。

例如,当我使用浏览器时,PHPINFO 显示如下: _服务器["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 请求看起来与浏览器请求相同。

服务器检测您是 php 代码而非浏览器的一种可能方法是检查您的 cookie。使用 php 向服务器发送一次 curl 请求,然后将您获得的 cookie 注入下一个请求。 在这里检查: http://docstore.mik.ua/orelly/webprog/pcook/ch11_04.htm 服务器可以了解您是机器人的另一种方式(php 代码)是检查 referer http header。 你可以在这里了解更多: http://en.wikipedia.org/wiki/HTTP_referer