解析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 相关文章推荐
mysq GBKl乱码
Nov 28 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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中显示数组与对象的实现代码
2011/04/18 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
php-app开发接口加密详解
2018/04/18 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
复古服装:RetroStage
2019/05/10 全球购物
2014年档案管理工作总结
2014/11/17 职场文书
文明礼仪倡议书
2015/04/28 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL