解析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 相关文章推荐
php 日期时间处理函数小结
Dec 18 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
PHP Primary script unknown 解决方法总结
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 使用GD库为页面增加水印示例代码
2014/03/24 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
玩转方法:call和apply
2014/05/08 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
九种原生js动画效果
2015/11/11 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
Python常用模块用法分析
2014/09/08 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
python多进程控制学习小结
2018/10/31 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
对python模块中多个类的用法详解
2019/01/10 Python
django 控制页面跳转的例子
2019/08/06 Python
python numpy中cumsum的用法详解
2019/10/17 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
2015年农村党员公开承诺事项
2015/04/28 职场文书
2015年预算员工作总结
2015/05/14 职场文书
学生会招新宣传语
2015/07/13 职场文书
大学军训心得体会800字
2016/01/11 职场文书
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸