CDN加速,解决Github博客被百度蜘蛛禁止录入的问题

先来看看这篇文章解决 Github Pages 禁止百度爬虫的方法与可行性分析,该文章说明了为什么 Github Pages 禁用了百度爬虫,以及CDN的相关知识,这里我来引用一下CDN的原理

CDN 的原理

CDN 的全称是 Content Delivery Network,即内容分发网络,一般用于分发静态内容,比如图片、视频、CSS、JS文件。

  如果不使用 CDN,那所有用户的请求都会直接导向单一的源服务器(Origin Server)。而如果启用了 CDN 服务,那么 CDN 服务提供商会分配给你若干个节点,这里以上图为例,比如分配给你的服务器 3 个东海岸的节点和 3 个西海岸的节点。

  此时用户就不会直接向源服务器发送请求,而是向边缘服务器(Edge Server)发送请求。再看下面这张示意图,当你第一次访问资源 foo.webp 时,边缘服务器没有 foo.webp 的缓存。所以会由它向源服务器发送请求,并获取到 foo.webp。下一次所有经过这个节点的请求,因为存在缓存的缘故,都不用再次向源服务器发送请求,而是由边缘服务器直接返回该文件的缓存即可。这样一来就可以大大降低时延,也减小了源服务器的压力。

Github 可能是封了百度的 IP,也有可能是封了百度爬虫的 User-Agent, 反正就是Github博客无法被百度收录啦,
可以通过下面命令查看,如果被Forbidden了,那就证明被禁了

curl -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" www.example.com

后面的www.example.com替换为你要查看的域名, 使用 CDN 来解决这个问题的关键就在于,让百度爬虫不要直接向 Github 的服务器发送请求,而是通过 CDN 边缘服务器的缓存来抓取网站的内容。边缘服务器本身是不会关心 UA 的,所以问题就迎刃而解了。

国外比较出名的CDN

CloudFlare -IPv6免费CDN加速和免费SSL
Incapsula -日本、香港、美国、欧洲CDN加速
Google PageSpeed Service 谷歌出品的免费CDN

国内比较出名的CDN,不外乎三种

七牛
又拍云
百度加速乐

自己动手搭建专属CDN服务

LuManager CDN 一键安装快速部署全站CDN
Layer –多平台快速生成镜像实现CDN加速
网站使用CDN后获取真实IP地址

如果域名没有备案的话,可以使用国外的,域名有备案的,可以选择使用国内的,当然你也可以自己动手搭建CDN

我在这里说说我的使用经历,我注册过CloudFlare, Incapsula, 又拍云, 前两个我试过直接添加github博客的.io子域名去进行分发, 给出的结果是

We were unable to identify username.github.io as a registered domain. Please ensure you are providing the root domain and not any subdomains (e.g., example.com, not subdomain.example.com) (Code: 1099)

幸好我还有个域名,于是就用上了,又拍云我只是注册了,还没试过,觉得过程比较麻烦,2016年之后,又拍云还需要上传手持身份证照片进行实名认证(实名认证也就算了,还手持身份证,我还是默默的用国外的CDN算了吧),我直接注册后,有客服过了一两个小时,直接给我打电话,号召我尽快注册,CloudFlare的话,它和Incapsula的区别可以参考Incapsula与Cloudflare那一个会更加优秀?, 免费的CloudFlare不提供CNAME方式

注册完Incapsula后,添加你要使用CDN的域名,然后就是检测,它会提供两个A Record(一般是两个)以及一个CNAME Record给你更改,你可以在你自己的域名管理处,更改就行了,依照它的说明重新指向,将你原来指向github的两个A Record替换为它给定的,一个CNAME Record替换为它给定的,等一会儿就行了,github博客里的CNAME仍然是你的域名

这是我在CDN里的DNS转换,下面是我的namecheap的Host Record

Incapsula给我的IP指向是美国那边的,听说香港和日本那边的节点,也是要经过美国那边,不过对大天朝来说,香港和日本这边的访问速度还是快些,如果换节点,可以查看Incapsula的节点,Incapsula所有的CDN节点IP地址可以在这里找到

如果使用国内的CDN,推荐看看这篇文章利用 CDN 解决百度爬虫被 Github Pages 拒绝的问题,对比了国内的CDN的优劣势,以及使用体验

最后,做个参考链接汇总
Incapsula各地CDN节点
2014年十个优秀的免费CDN加速服务-国内和国外免费CDN
解决 Github Pages 禁止百度爬虫的方法与可行性分析
利用 CDN 解决百度爬虫被 Github Pages 拒绝的问题
Incapsula免费CDN服务申请使用及加速效果测评
如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题?
Incapsula与Cloudflare那一个会更加优秀?