PHP file_get_contents()的行为与浏览器不同

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP file_get_contents()的行为与浏览器不同脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 PHP下载网页的内容.
当我发出命令时:
$f = file_get_contents("http://mobile.mybustracker.co.uk/mobile.PHP?seArchMode=2");

它返回一个报告服务器关闭页面.然而,当我将相同的URL粘贴到我的浏览器中时,我得到了预期的页面.

有谁知道是什么导致了这个? file_get_contents是否会传输任何区别于浏览器请求的标头?

是的,存在差异 – 浏览器倾向于发送大量的额外的 HTTP headers,我会说;并且两者发送的可能没有相同的值.

在这里,经过几次测试后,似乎需要传递名为Accept的HTTP头.

这可以使用file_get_contents的第三个参数来完成,以指定附加上下文信息:

$opts = array('http' =>
    array(
        'method'  => 'GET',//'user_agent '  => "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100301 ubuntu/9.10 (karmic) Firefox/3.6",'header' => array(
            'Accept: text/htML,application/xhtml+XMl,application/xml;q=0.9,*\/*;q=0.8
'
        ),)
);
$context  = stream_context_create($opts);

$f = file_get_contents("http://mobile.mybustracker.co.uk/mobile.PHP?searchMode=2",false,$context);
echo $f;

有了这个,我就可以获得页面HTML代码.

备注:

>我首先测试了传递用户代理,但似乎没有必要 – 这就是为什么相应的行在这里作为注释
>该值用于Accept标头,是我在尝试使用file_get_contents之前使用Firefox请求该页面时使用的Firefox.

>其他一些值可能没问题,但我没有做任何测试来确定哪个值是必需的值.

有关更多信息,您可以查看:

> file_get_contents
> stream_context_create
> Context options and parameters
> HTTP context options – 这是有趣的页面,在这里;-)

脚本宝典总结

以上是脚本宝典为你收集整理的PHP file_get_contents()的行为与浏览器不同全部内容,希望文章能够帮你解决PHP file_get_contents()的行为与浏览器不同所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。