解析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 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
php 上传功能实例代码
Apr 13 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php获得用户ip地址的比较不错的方法
Feb 08 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
php实例分享之mysql数据备份
May 19 PHP
php统计数组元素个数的方法
Jul 02 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 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正则走开
2008/03/15 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
python字典基本操作实例分析
2015/07/11 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Django实现文件上传和下载功能
2019/10/06 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
人力资源作业细则
2014/03/03 职场文书
铣工实训报告
2014/11/05 职场文书
售票员岗位职责
2015/02/15 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
nginx lua 操作 mysql
2022/05/15 Servers
Python使用pyecharts控件绘制图表
2022/06/05 Python
Android实现图片九宫格
2022/06/28 Java/Android