用file_get_contents采个5分钟就failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in 实际在本地是能打开目标网页的,且能采集的, 然后半小时内一直是不能采,半小时后又能采5分钟。。
用 curl_init试了对方直接返回检测到非法程序,请求被拒绝。。 在那半小时前的5分钟之间用curl_init也是能采的。。
,还有我采集他的链接地址的时候连续1小时采集都没问题(因为流量非常少吧。。),我想它肯定检测单个用户短时间的流量而判断了。怎么破它的反采集啊?$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用户检测的网页里需要增加下面两行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
用 curl_init试了对方直接返回检测到非法程序,请求被拒绝。。 在那半小时前的5分钟之间用curl_init也是能采的。。
,还有我采集他的链接地址的时候连续1小时采集都没问题(因为流量非常少吧。。),我想它肯定检测单个用户短时间的流量而判断了。怎么破它的反采集啊?$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用户检测的网页里需要增加下面两行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
User-Agent、Cookie、Session等Header信息 这些怎么加?
cookie的话好说,其他的缓存就没办法了。,。
怎么仿google啊?
嘿嘿,那么,大概已经猜到你想采集的什么类型的网站……OK,回到技术角度,如20楼所说,如果浏览器可以,程序不行的话,肯定是你程序的问题。
如果还在纠结不定的话,必要时,放弃WIN平台,采用LINUX,LINUX控制台比WIN的CMD强悍。
如我前面说的方法,cron job 设置所有的你要采集的网址,定时开启真实的浏览器访问该网站,然后在控制台里设置浏览器,保存源码到本地磁盘,等所有的源码下载完之后,再写PHP脚本批量分析你前面下载的文件进行采集。