解析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 相关文章推荐
杏林同学录(八)
Oct 09 PHP
MySQL授权问题总结
May 06 PHP
PHP 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
Apr 20 PHP
PHP+MySQL实现消息队列的方法分析
May 09 PHP
PDO::beginTransaction讲解
Jan 27 PHP
PHP匿名函数(闭包函数)详解
Mar 22 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Django实现celery定时任务过程解析
2020/04/21 Python
Django如何批量创建Model
2020/09/01 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
学校对教师的评语
2014/04/28 职场文书
代理人委托书
2014/08/01 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
士兵突击观后感
2015/06/16 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技