解析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 文件扩展名 获取函数
Jun 03 PHP
PHP 面向对象 final类与final方法
May 05 PHP
php printf输出格式使用说明
Dec 05 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
PHP实现采集抓取淘宝网单个商品信息
Jan 08 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
PHP 9 大缓存技术总结
Sep 17 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
vue实现评论列表功能
2019/10/25 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python中for循环详解
2014/01/17 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python简单实现基数排序算法
2015/05/16 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python内建模块struct实例详解
2018/02/02 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
python文本数据处理学习笔记详解
2019/06/17 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
python 调整图片亮度的示例
2020/12/03 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
五好家庭事迹材料
2014/12/20 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python