file_get_contents 和 curl 这俩强悍的函数,在远程抓取时候相当有用处.不过一些网站会根据来访ip是否携带user_agent来判断是正常的浏览器客户端还是机器.所以,我们的任务就是给他们伪造user_agent.
file_get_contents伪造user_agent 方法如下:
ini_set
(
'
user_agent
'
,
'
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com)
'
);
curl_setopt(
$c
,
CURLOPT_USERAGENT
,
'
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com)
'
);
代码
1
.
function
curl_get_file_contents(
$URL
)
2 . {
3 . $c = curl_init();
4 . curl_setopt( $c , CURLOPT_RETURNTRANSFER , 1 );
5 . // curl_setopt($c, CURLOPT_HEADER, 1);//输出远程服务器的header信息
6 . curl_setopt( $c , CURLOPT_USERAGENT , ' Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com) ' );
7 . curl_setopt( $c , CURLOPT_URL , $URL );
8 . $contents = curl_exec( $c );
9 . curl_close( $c );
10 . if ( $contents ) { return $contents ;}
11 . else { return FALSE ;}
12 . }
2 . {
3 . $c = curl_init();
4 . curl_setopt( $c , CURLOPT_RETURNTRANSFER , 1 );
5 . // curl_setopt($c, CURLOPT_HEADER, 1);//输出远程服务器的header信息
6 . curl_setopt( $c , CURLOPT_USERAGENT , ' Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.9qc.com) ' );
7 . curl_setopt( $c , CURLOPT_URL , $URL );
8 . $contents = curl_exec( $c );
9 . curl_close( $c );
10 . if ( $contents ) { return $contents ;}
11 . else { return FALSE ;}
12 . }
这样就可以抓取了,user_agent是可以自己修改的.