file_get_contents模仿浏览器头(user_agent)获取
2012-06-06 15:15
435 查看
什么是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: *//*"
)
);
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: *//*"
)
);
相关文章推荐
- file_get_contents模仿浏览器头(user_agent)获取数据
- 解析file_get_contents模仿浏览器头(user_agent)获取数据
- 解析file_get_contents模仿浏览器头(user_agent)获取数据
- php获取本地图片直接输出浏览器,file_get_contents
- PHP下通过file_get_contents\curl的方法实现获取远程网页内容(别忘了还有PhpRPC)
- file_get_contents无法获取到https开头的链接内容问题
- file_get_contents获取https出错的解决办法
- 解析PHP中的file_get_contents获取远程页面乱码的问题【转】
- 通过user-Agent获取浏览器和操作系统信息
- php 模拟浏览器 发送 post 和 get 请求(兼容curl + file_get_contents)
- 解析PHP中的file_get_contents获取远程页面乱码的问题
- 执行、获取远程代码返回:file_get_contents 超时处理的问题详解
- file_get_contents()获取https出现这个错误Unable to find the wrapper “https” – did
- JavaWeb编程:获取的计算机的版本号以及浏览器的版本之类的(${header['User-Agent']})
- php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数
- Java通过浏览器请求头(User-Agent)获取 浏览器类型,操作系统类型,手机机型
- php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数
- 通过user-Agent获取浏览器和操作系统信息
- 使用curl、socket、file_get_contents提交数据和获取数据
- PHP下通过file_get_contents()方法不能正常获取远程网页内容