解析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 相关文章推荐
codeigniter数据库操作函数汇总
Jun 12 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
php用wangeditor3实现图片上传功能
Aug 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
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
js 数据类型转换总结笔记
2011/01/17 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
jquery获取节点名称
2015/04/26 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
python通过yield实现数组全排列的方法
2015/03/18 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
毕业自荐书
2013/12/09 职场文书
产品促销活动策划书
2014/01/15 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
法学求职信
2014/06/22 职场文书
家长学校培训材料
2014/08/20 职场文书
完整版商业计划书
2014/09/15 职场文书
党员剖析材料范文
2014/09/30 职场文书
社会实践活动总结格式
2015/05/11 职场文书
合同补充协议书
2016/03/24 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
JavaScript的Set数据结构详解
2022/02/18 Javascript
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技