解析file_get_contents模仿浏览器头(user_agent)获取数据


Posted in PHP onJune 27, 2013

什么是user agent
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
网站可以通过判断不同UA来呈现不同的网站,例如手机访问和PC访问显示不同的页面。
PHP在用file_get_contents函数采集网站时,有时会明明用浏览器可以看,但就是采不到任何内容。
这很有可能是服务器上做了设置,根据 User_agent判断是否为正常的浏览器请求,因为默认PHP的file_get_contents函数是不发送ua的。
如果要采集这样的网站,我们就必须要让PHP模拟浏览器发送UA,欺骗网站返回正常内容。

实现如下:
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.560; .NET4.0C; .NET4.0E)');
这是模拟IE8环境下的UA,当然你也可以换成其他的。比如中火狐
也可以这样读取:

$opts = array(
'http'=>array(
    'method'=>"GET",
    'header'=>"Host: zh.wikipedia.org\r\n" . 
              "Accept-language: zh-cn\r\n" . 
              "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.560; .NET4.0C; .NET4.0E)" .
              "Accept: *//*"
)
);
PHP 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
Oct 09 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
php把session写入数据库示例
Feb 26 PHP
PHP的password_hash()使用实例
Mar 17 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
tp5框架的增删改查操作示例
Oct 31 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
php-7.3.6 编译安装过程
Feb 11 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 #PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 #PHP
领悟php接口中interface存在的意义
Jun 27 #PHP
CURL状态码列表(详细)
Jun 27 #PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 #PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 #PHP
深入解析phpCB批量转换的代码示例
Jun 27 #PHP
You might like
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
python解析xml文件实例分享
2013/12/04 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
python并发编程之线程实例解析
2017/12/27 Python
Python中文件的读取和写入操作
2018/04/27 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
python3中property使用方法详解
2019/04/23 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
python不同版本的_new_不同点总结
2020/12/09 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
电子专业推荐信范文
2013/11/18 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
《忆江南》教学反思
2014/04/07 职场文书
升学宴学生致辞
2015/09/29 职场文书
小学四年级作文之写景
2019/08/23 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers