尝试百度Spider抓取异常问题

这两天尝试CloudFlare官方免费CNAME接入方式,详情见文章:

有两种新方案—CloudFlare官方免费CNAME接入教程

介于网络环境不同,很多人有需求在保留国内域名 DNS 服务器不改变的情况下,还能接入国外服务商比如 CloudFl...

经过测试通过 Cloudflare pages function方法已失效,最后只有通过 SaaS配置成功。

问题出现

然而,在百度搜索资源平台的sitemap抓取抓取诊断却出了问题:

  1. sitemap状态变为解析错误
  2. 在抓取诊断中报错:socket 读写错误
多次抓取失败
抓取详情的异常信息

百度官方对socket读写错误的解释:

【socket读写错误】 当百度spider访问服务器,进行tcp通信的时候,socket读写发生异常,导致数据不能正常返回。请检查服务器连接状况和防火墙设置是否符合预期。

尝试解决

在查询了一圈网上资料后,确定了需要在Cloudflare上配置WAF防火墙规则。

1、百度爬虫抓取诊断链接失败解决方法

登录Cloudflare → 安全性 → WAF → 防火墙规则 → 创建防火墙规则。

合法机器人爬虫

2、百度爬虫抓取Sitemap地图失败解决方法

同样的地方:登录Cloudflare → 安全性 → WAF → 防火墙规则 → 创建防火墙规则。

用户代理配置
  1. 字段,选择“用户代理”
  2. 运算符,选择“包含”
  3. 添加新的用户代理,点击最后的“Or”
  4. 值,分别输入以下百度蜘蛛UA用户代理
代码语言:javascript
复制
Baiduspider/2.0
Baiduspider-image
Baiduspider-render/2.0
http://www.baidu.com/search/spider.html
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

整体表达式如下:

代码语言:javascript
复制
(http.user_agent contains "Baiduspider/2.0" and http.user_agent contains "Baiduspider-image" and http.user_agent contains "Baiduspider-render/2.0" and http.user_agent contains "http://www.baidu.com/search/spider.html" and http.user_agent contains "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" and http.user_agent contains "Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)")

写在后面

为什么这篇文章只是尝试解决问题呢,因为经过以上步骤后,在百度抓取诊断后测试的结果是时灵时不灵,结果不尽如人意。

结果不尽如人意

直到看到一位同样遇到这类问题的网友写了这么一段话:

网友的话