background image

PHP 实例:file_get_contents 模仿浏览器头(user_agent)获取

数据

什么是 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: *//*"
)
);