如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题

2024-04-27

1. 如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题

总结一下,解决办法:
换供应商,这个方案不是很靠谱,github 还是很好用的
让 github 改,这个也很难
利用 CDN 加速 ,这个方案可行!

Github是通过 UA 来判定百度爬虫并返回 403 Forbidden 的。而百度爬虫的 UA 一般是这样的:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
那么使用 CDN 来解决这个问题的关键就在于,让百度爬虫不要直接向 Github 的服务器发送请求,而是通过 CDN 边缘服务器的缓存来抓取网站的内容。边缘服务器本身是不会关心 UA 的,所以问题就迎刃而解了。


结果是只有偶尔能够抓取成功,结果很让人失望吧?让我们来分析以下原因,首先罗列我目前可知的一些情况:
所有抓取成功的页面都访问了 209.9.130.5 节点
所有抓取失败的页面都访问了 209.9.130.6 节点
我本机ping jerryzou.com会 ping 到 209.9.130.8 节点
好了,细心的同学应该已经发现问题所在了,百度爬虫大部分的请求被导到了 209.9.130.6 节点,但是这个节点上没有页面的缓存!!如果百度爬虫是某个页面的第一个访问者,CDN 的边缘服务器会用百度爬虫的 UA 去请求 Github 的服务器,得到的结果自然是被拒绝了。
最终我们得到了通过 CDN 来解决这个问题的必要条件:你的博客必须有巨大的访问量!这样才能保证 CDN 的每一个边缘服务器上都有任何一个页面的缓存。

如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题

2. 如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题

总结一下,解决办法:
换供应商,这个方案不是很靠谱,github 还是很好用的
让 github 改,这个也很难
利用 CDN 加速 ,这个方案可行!

Github是通过 UA 来判定百度爬虫并返回 403 Forbidden 的。而百度爬虫的 UA 一般是这样的:
Mozilla/5.0 (compatible; Baiduspider/2.0; +www.baidu.com/search/spider.html)
那么使用 CDN 来解决这个问题的关键就在于,让百度爬虫不要直接向 Github 的服务器发送请求,而是通过 CDN 边缘服务器的缓存来抓取网站的内容。边缘服务器本身是不会关心 UA 的,所以问题就迎刃而解了。

结果是只有偶尔能够抓取成功,结果很让人失望吧?让我们来分析以下原因,首先罗列我目前可知的一些情况:
所有抓取成功的页面都访问了 209.9.130.5 节点
所有抓取失败的页面都访问了 209.9.130.6 节点
我本机ping jerryzou.com会 ping 到 209.9.130.8 节点
好了,细心的同学应该已经发现问题所在了,百度爬虫大部分的请求被导到了 209.9.130.6 节点,但是这个节点上没有页面的缓存!!如果百度爬虫是某个页面的第一个访问者,CDN 的边缘服务器会用百度爬虫的 UA 去请求 Github 的服务器,得到的结果自然是被拒绝了。
最终我们得到了通过 CDN 来解决这个问题的必要条件:你的博客必须有巨大的访问量!这样才能保证 CDN 的每一个边缘服务器上都有任何一个页面的缓存。

3. 如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题

总结一下,解决办法:
换供应商,这个方案不是很靠谱,github 还是很好用的
让 github 改,这个也很难
利用 CDN 加速 ,这个方案可行!

Github是通过 UA 来判定百度爬虫并返回 403 Forbidden 的。而百度爬虫的 UA 一般是这样的:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
那么使用 CDN 来解决这个问题的关键就在于,让百度爬虫不要直接向 Github 的服务器发送请求,而是通过 CDN 边缘服务器的缓存来抓取网站的内容。边缘服务器本身是不会关心 UA 的,所以问题就迎刃而解了。

结果是只有偶尔能够抓取成功,结果很让人失望吧?让我们来分析以下原因,首先罗列我目前可知的一些情况:
所有抓取成功的页面都访问了 209.9.130.5 节点
所有抓取失败的页面都访问了 209.9.130.6 节点
我本机ping jerryzou.com会 ping 到 209.9.130.8 节点
好了,细心的同学应该已经发现问题所在了,百度爬虫大部分的请求被导到了 209.9.130.6 节点,但是这个节点上没有页面的缓存!!如果百度爬虫是某个页面的第一个访问者,CDN 的边缘服务器会用百度爬虫的 UA 去请求 Github 的服务器,得到的结果自然是被拒绝了。
最终我们得到了通过 CDN 来解决这个问题的必要条件:你的博客必须有巨大的访问量!这样才能保证 CDN 的每一个边缘服务器上都有任何一个页面的缓存。

如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题