【发布时间】:2015-01-10 13:29:08
【问题描述】:
我正在使用 CURL 和 file_get_contents 来找出服务器请求页面和浏览器请求(有机)之间的基本区别。
我在两种方式都请求一个 PHPINFO 页面,发现它在不同的情况下给出不同的输出。
例如,当我使用浏览器时,PHPINFO 会显示: _SERVER["HTTP_CACHE_CONTROL"] 无缓存 当我通过 PHP 请求同一页面时,此信息丢失。
我的卷曲:
$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);
我的文件获取内容:
$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 请求看起来与浏览器请求相同。
【问题讨论】:
-
为什么您希望您的请求看起来像浏览器请求?
-
@Halcyon 这是为了防止服务器以不同于常规浏览器请求的方式处理我的请求。
-
好吧,假装我问你'为什么?' 5 次,然后决定这是否是你真正想要做的。
-
@Halcyon 我需要帮助来完成这个项目。项目完成后我会问老板“为什么”。
-
问题是没有好的解决方案。没有一个好的解决方案的原因是你不应该这样做。如果您正在编写爬虫,人们会想知道您正在爬取他们的网站。说自己不是某人或某物是骗人的。
标签: php curl header file-get-contents