解析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 相关文章推荐
实现分十页分向前十页向后十页的处理
Oct 09 PHP
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
php写的简易聊天室代码
Jun 04 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 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强制运行广告的方法
2014/12/01 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
python中set常用操作汇总
2016/06/30 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
党章学习思想汇报
2014/01/14 职场文书
少先队入队活动方案
2014/02/08 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
毕业生自荐信格式
2014/03/07 职场文书
公司周年庆寄语
2019/06/21 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技