这两天尝试 CloudFlare 官方免费 CNAME 接入方式,详情见文章:
经过测试通过 Cloudflare pages function方法已失效,最后只有通过 SaaS配置成功。
问题出现
然而,在百度搜索资源平台的sitemap 抓取及抓取诊断却出了问题:
- sitemap状态变为解析错误
- 在抓取诊断中报错:
socket读写错误


百度官方对socket读写错误的解释:
【socket 读写错误】
当百度 spider 访问服务器,进行 tcp 通信的时候,socket 读写发生异常,导致数据不能正常返回。请检查服务器连接状况和防火墙设置是否符合预期。
尝试解决
在查询了一圈网上资料后,确定了需要在 Cloudflare 上配置 WAF 防火墙规则。
1、百度爬虫抓取诊断链接失败解决方法
登录 Cloudflare → 安全性 → WAF → 防火墙规则 → 创建防火墙规则。

2、百度爬虫抓取Sitemap地图失败解决方法
同样的地方:登录 Cloudflare → 安全性 → WAF → 防火墙规则 → 创建防火墙规则。

- 字段,选择“用户代理”
- 运算符,选择“包含”
- 添加新的用户代理,点击最后的“Or”
- 值,分别输入以下百度蜘蛛UA用户代理
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)
整体表达式如下:
(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)")
写在后面
为什么这篇文章只是尝试解决问题呢,因为经过以上步骤后,在百度抓取诊断后测试的结果是时灵时不灵,结果不尽如人意。

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

感慨万千!
评论