解析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 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
织梦模板标记简介
Mar 11 PHP
基于xcache的配置与使用详解
Jun 18 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
php实例分享之mysql数据备份
May 19 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
基于thinkphp6.0的success、error实现方法
Nov 05 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获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Python socket模块方法实现详解
2019/11/05 Python
如何获取Python简单for循环索引
2019/11/21 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
迎八一活动主题
2014/01/31 职场文书
函授药学自我鉴定
2014/02/07 职场文书
党员实事承诺书
2014/03/26 职场文书
文秘应届生求职信
2014/07/05 职场文书