解析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
用函数读出数据表内容放入二维数组
Oct 09 PHP
在任意字符集下正常显示网页的方法一
Apr 01 PHP
一些常用的php简单命令代码集锦
Sep 24 PHP
PHP网站基础优化方法小结
Sep 29 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
Jul 29 PHP
php发送邮件的问题详解
Jun 22 PHP
PHP生成树的方法
Jul 28 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 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/09/16 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
XENON基于JSON变种
2010/07/27 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python实现调用其他python脚本的方法
2014/10/05 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
简单了解python变量的作用域
2019/07/30 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
工作决心书范文
2014/03/11 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
讲座新闻稿
2015/07/18 职场文书
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
Python学习之时间包使用教程详解
2022/03/21 Python
Java的Object类的九种方法
2022/04/13 Java/Android
深入理解 Golang 的字符串
2022/05/04 Golang