php程序提供的两个函数file_get_contents 和 curl,在抓取远程内容或模拟浏览器访问的时候相当有用。不过一些网站出于安全等考虑会根据来访ip是否携带user_agent信息来判断是正常的浏览器客户端还是机器,如果是机器则拒绝访问。所以,我们的就需要对file_get_contents和curl伪造user_agent。下面给大家详解一下如何file_get_contents伪造user_agent。
02 | function curl_get_file_contents( $URL ){ |
04 | curl_setopt( $c , CURLOPT_RETURNTRANSFER, 1); |
06 | curl_setopt( $c , CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 |
08 | Safari/537.36 SE 2.X MetaSr 1.0'); |
09 | curl_setopt( $c , CURLOPT_URL, $URL ); |
10 | $contents = curl_exec( $c ); |
12 | if ( $contents ) { return $contents ;} |
|
一、file_get_contents伪造user_agent 方法如下:
1 | ini_set ( 'user_agent' ,'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr |
|
二、curl伪造user_agent的方法:
1 | curl_setopt( $c , CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 |
|
curl伪造user_agent的完整函数方法
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.aerchi.com)');
curl伪造user_agent的方法:
- curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.aerchi.com)');
附带上curl的完整函数方法:
- function curl_get_file_contents($URL)
- {
- $c = curl_init();
- curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
-
- curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;http://www.aerchi.com)');
- curl_setopt($c, CURLOPT_URL, $URL);
- $contents = curl_exec($c);
- curl_close($c);
- if ($contents) {return $contents;}
- else {return FALSE;}
- }
这样就可以抓取了,并且 user_agent是可以自己修改的。