这两天尝试CloudFlare官方免费CNAME接入方式,详情见文章:
有两种新方案—CloudFlare官方免费CNAME接入教程
介于网络环境不同,很多人有需求在保留国内域名 DNS 服务器不改变的情况下,还能接入国外服务商比如 CloudFl...
经过测试通过 Cloudflare pages function方法已失效,最后只有通过 SaaS配置成功。
问题出现
然而,在百度搜索资源平台的sitemap抓取及抓取诊断却出了问题:
- sitemap状态变为解析错误
- 在抓取诊断中报错:
socket
读写错误
百度官方对socket
读写错误的解释:
【socket读写错误】 当百度spider访问服务器,进行tcp通信的时候,socket读写发生异常,导致数据不能正常返回。请检查服务器连接状况和防火墙设置是否符合预期。
尝试解决
在查询了一圈网上资料后,确定了需要在Cloudflare上配置WAF防火墙规则。
1、百度爬虫抓取诊断链接失败解决方法
登录Cloudflare → 安全性 → WAF → 防火墙规则 → 创建防火墙规则。
2、百度爬虫抓取Sitemap地图失败解决方法
同样的地方:登录Cloudflare → 安全性 → WAF → 防火墙规则 → 创建防火墙规则。
- 字段,选择“用户代理”
- 运算符,选择“包含”
- 添加新的用户代理,点击最后的“Or”
- 值,分别输入以下百度蜘蛛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)")
写在后面
为什么这篇文章只是尝试解决问题呢,因为经过以上步骤后,在百度抓取诊断后测试的结果是时灵时不灵,结果不尽如人意。
直到看到一位同样遇到这类问题的网友写了这么一段话: