这个问题有点难,curl抓取不到页面。

xroha 2015-03-07 03:42:19
百度经验里的url,如:http://jingyan.baidu.com/article/e2284b2b24eeb2e2e6118dfd.html

直接看页面源代码,是有文章数据。
但是用curl .都无法正常获取文章内容。
这是为什么?已经伪造了IP,来路,cookie等,但还是抓取不到。
注意:在本地可以抓取,但是上传到服务器就不行了,
测试了三个服务器,SAE,阿里云,商务中国的空间,都无法获取。
百度是通过什么防止抓取数据的?怎么破解?

以下是代码:

function fcontents( $url, $timeout = 5, $referer = "" ){
$t = parse_url($url);
$ch = curl_init();
$header = array (
'User-Agent: Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.1.1916.153 Safari/537.36','X-FORWARDED-FOR:154.135.25.15', 'CLIENT-IP:154.135.25.15'
);
$cookie_jar = dirname(__FILE__)."/jy.cookie";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_REFERER, "http://$t[host]/"); //构造来路
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}


...全文
360 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chichumeng 2015-03-11
  • 打赏
  • 举报
回复
呃..看错.
chichumeng 2015-03-11
  • 打赏
  • 举报
回复
$content = file_get_contents('http://jingyan.baidu.com/article/e2284b2b24eeb2e2e6118dfd.html');
preg_match('/<div\sclass="content-listblock-text">(.*)<\/div>/Uis',$content,$arr);
header('Content-type:text/html;charset=utf8');
print_r($arr[1]);
xroha 2015-03-07
  • 打赏
  • 举报
回复
引用 7 楼 fdipzone 的回复:
1.如果本地可以,服务器不行。程序是没有问题的。 2.SAE,阿里云,商务中国的空间 这些都支持curl吗,有试试采集其他地址吗? 3.有可能这段时间这些服务器都采集百度,所以被屏蔽掉了。
1,确实是本地可以,服务器不可以。 2,尝试过不同IP的服务器,确定都支持curl,可以抓取到页面,但是无法获取到正确的页面数据。 3,如果真是这些服务器的IP都被百度屏蔽了,那只能说太巧。
傲雪星枫 2015-03-07
  • 打赏
  • 举报
回复
1.如果本地可以,服务器不行。程序是没有问题的。 2.SAE,阿里云,商务中国的空间 这些都支持curl吗,有试试采集其他地址吗? 3.有可能这段时间这些服务器都采集百度,所以被屏蔽掉了。
xroha 2015-03-07
  • 打赏
  • 举报
回复
引用 5 楼 wander_wind 的回复:
百度感知到你的IP访问频率很可疑 要么就是有复杂的cookie验证流程
更换过不同IP的服务器,也使用curl 伪造了IP,感觉应该不是IP被限制了。 复杂的COOKIE验证到有可能,但是这个复杂有破解码? 到底是一种什么流程?
智商众筹 2015-03-07
  • 打赏
  • 举报
回复
百度感知到你的IP访问频率很可疑 要么就是有复杂的cookie验证流程
xroha 2015-03-07
  • 打赏
  • 举报
回复
http://1.epzuzu.sinaapp.com/curl.php SAE上抓取后返回的信息
xroha 2015-03-07
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
他们都支持 curl 吗?
header返回的信息也没有看到什么不同,现在抓取会302,不知道百度是怎么判断的。
xroha 2015-03-07
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
他们都支持 curl 吗?
只是,原来还能抓取到,最近几天不行了。不知道百度怎么设置的。
xuzuning 2015-03-07
  • 打赏
  • 举报
回复
他们都支持 curl 吗?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧