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

经过测试通过 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用户代理
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)")

写在后面

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

结果不尽如人意

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

网友的话

感慨万千!

最后修改:2023 年 03 月 03 日
如果觉得我的文章对你有用,请随意赞赏