百度爬虫被 Github 拒绝
前两天在知乎看到一个问题:如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题?
我一看,这不是和我的情况一模一样吗?
我赶紧上去看了看我网站的统计信息:
是的,从4月份开始,百度来源跌停了…
这位博主联系了 Github 的支持部门(传送门),对方的答复是百度爬虫爬得太猛烈,所以就禁掉了。
但是从我平时的统计信息来看,Google 的爬虫效率高,也更勤快,怎么不把 Google 禁掉了?
其实那段时间还发生了这样一件事情:百度统计js被劫持用来DDOS Github
虽然不知道有没有关系,但我猜还是有一点的。
解决思路
既然 Github 彻底和百度决裂了,那我们也只能自己动手来解决了。Github 可能是封了百度的 IP,也有可能是封了百度爬虫的User-Agent。
所以要解决这个问题,最好就不要让百度爬虫直接访问 Github 了,需要在中间套一层反向代理。
那么问题又来了,既然我可以搭一个反向代理服务器了,那我为什么不直接把博客放在这台服务器上?放 Github Pages 上不就是为了少一台服务器,少一点费用吗?
那有没有免费的第三方反向代理服务呢?当然有,其实现在各种CDN服务不就是吗?而且还额外提供了各种网络环境下的加速功能。
但是使用 CDN 也会有一个非常大的缺点:只能对静态资源做,因为 CDN 和反向代理有一个很大的不同就是:它会做缓存,并向各个节点分发。
所以 CDN 一般都是用来给静态资源做加速的。如果你对动态页面做加速,用户看到的页面在一段时间内就一直不会变了。但是我们不怕!因为 Github Pages 本来就是全静态的!
最近我尝试了如下几种方案:
- 加速乐
- 七牛云存储
- 又拍云
最后我选择了又拍云,因为前两者都不能满足我的需求,下面就给大家介绍一下它们的不同,和它们的问题。
加速乐
加速乐其实是一个 DNS 解析服务商。你需要把自己域名的 NS 地址改成它的,才能使用加速功能。除了加速,还有很多额外的防黑功能。
但加速乐的问题是,它并不是纯粹的 CDN 服务商,它的加速和 CDN 还是有很大区别的。
首先加速乐会去判断内容是不是该被加速(例如后缀是不是 js,css,html 等静态资源)。我的博客设置的域名都是没有后缀的,例如:/2015/06/github-pages-and-cdn/,不一定会被加速。
然后加速乐也不是百分百加速,它可能会根据各种情况去判断是否要加速。
用了几天后发现,百度爬虫还是 100% 被拒绝。
七牛云存储
七牛做得很不错,它有一个镜像存储功能
我把我网站的 CNAME 写成了我七牛云存储空间的地址,然后配置了一下镜像。
这样当我访问www.dozer.cc/index.html的时候,会请求到七牛的服务器。七牛会自动帮我访问dozer47528.github.io/index.html的内容,帮我缓存,并返回给我。
用了几天后,发现百度爬虫完全正常了!因为此时,百度爬虫访问的其实全都是七牛的资源。
但是过了几天,我又发现了一个问题!我的博客更新后七牛根本不会更新它缓存的内容。
后来仔细看了一下文档才发现,七牛提供的镜像存储只是给你当迁移工具用的。人家没说会自动刷新缓存。
既然这样,又只能放弃了。
又拍云
最后一站是又拍云,对又拍的印象其实不是很好。以前用又拍存照片,后来我想迁移,官方不仅没有迁移工具,而且网站还没一键清空功能,实在是恼火。当然这是5年前的事情了,近几年又拍在云服务这块发展的还是很不错的。
又拍同样有和七牛一样的功能,但是人家的名字就不一样,叫做:CDN 回源配置
而且人家上面有设置缓存时间的功能,上面明确写了:CDN 缓存时间是指 UPYUN 回源取得文件后,文件在 UPYUN CDN 网络中的缓存的时间,超过缓存时间则重新回源获取文件。
是的,这才是真正满足我需求的功能!
仔细用了一下,发现又拍各方面还是都比七牛做的到位一点。
恩,刚配置完,看看效果,如果效果满意就不更新本文了,到此结束。如果还有问题,那必然会有后续的解决方案。
关于价格
上述三家各有特色,如果是个人博客这样的网站,流量不会很大,它们都有免费套餐,完全够用。
大家可以根据自己的需求选择不同的服务商。
为什么不用国外的 CDN
原因其实很简单:速度慢、易被墙。
大家经常会发现,很多国外的网站都是可以打开,但是页面时乱七八糟的。
原因就是那个网站用了 CDN 服务,而这家 CDN 服务商被墙了。
CDN 是防火墙重灾地,所以如果你的博客是面向国内用户,那么用国外的 CDN 是一个不太明智的选择。
由 udpwork.com 聚合
|
评论: 0
|
要! 要! 即刻! Now!