解析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 缓冲的免费实现方法
Oct 09 PHP
php实现用户在线时间统计详解
Oct 08 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
php 注释规范
Mar 29 PHP
深入PHP autoload机制的详解
Jun 09 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
laravel安装和配置教程
Oct 29 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
Laravel 连接(Join)示例
Oct 16 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随机数生成代码与使用实例分析
2011/04/08 PHP
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
Node 代理访问的实现
2019/09/19 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
python计算N天之后日期的方法
2015/03/31 Python
python仿抖音表白神器
2019/04/08 Python
Django框架封装外部函数示例
2019/05/28 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python集合删除多种方法详解
2020/02/10 Python
Python连接mysql方法及常用参数
2020/09/01 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
师范生自我鉴定范文
2013/10/05 职场文书
员工培训邀请函
2014/01/11 职场文书
最新创业融资计划书
2014/01/19 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python