两步解决百度爬虫无法爬取git博客的问题

逛知乎时偶然发现有网友在讨论“github 禁止了百度爬虫的抓取”的问题,于是用百度站长试着抓取一遍,果然抓取失败,403[Forbidden]。作为国内不能用google的用户来说,禁止了百度爬虫意味着访问量会急剧下降,就达不到技术分享交流的目的了。继续浏览知乎,发现他们都找到了解决方法:

  • 利用cdn缓存
  • 更换托管网站
  • 买个vps搭建博客镜像

第一个方案太繁琐,第三个需要买vps,还不如买个服务器,何必折腾呢,我倒觉得第二个方案可行,于是博客转移到了coding。但是由于最近深圳coding公司的服务器不稳定的因素,导致百度蜘蛛爬取超时,跟coding客服反映,他们也是各种理由。无奈,最后还是重归github。

那么还是那个问题,既然不想放弃 Github,唯一的办法就是不让百度爬虫直接抓取 Github 的内容,而是抓取网站的一个镜像。于是我想到了部署两个镜像的方案,一个部署在 github,一个部署在 coding,利用 DNS 解析,让百度蜘蛛只抓取 coding 的内容,从而绕开了 Github 对百度蜘蛛的限制。具体步骤如下:

  • 注册一个 coding 账号,新建一个仓库,Git上传时同时部署到github和coding,然后在 coding pages 服务中绑定你的域名,并部署到 master。(普通会员的 Coding Pages 在访问时默认会先加载 Pages 广告,所以要在你的博客首页底部放置 “Hosted by Coding Pages”,并且要在刚才绑定自定义域名的页面下方勾选已放置那个字段,审核通过后才能去广告)。
  • 新建一个 DNS 解析记录,重定向到pages.coding.me,解析线路选择百度,如果你的coding绑定的是根域名,比如:chjiyun.com,则主机记录选择 @,如果是二级域名则填顶级域名前的字符(例:me.chjiyun.com,主机记录填me)。

17_9_8_01.png

注意:由于我的博客站点使用的是二级域,并非顶级域,而且www.chjiyun.comme.chjiyun.com所属不同的仓库,但同属同一个 git 账户(chjiyun)。上图有一个小错误,第二个记录值应该填chjiyun.github.io.,也就是说指向github的记录值应该为这种格式username.github.io.(这是github官方要求的,他们发送邮件建议我更改CNAME记录),设置后 Github 服务器会根据仓库根目录下的CNAME文件301重定向到对应的域。

17_9_8_02.png

hexo 搭建的博客安装这个插件 hexo-deployer-git 就可以解决同时部署的问题,在这之前你必须得生成一对ssh密钥,然后把公钥放到 coding 上,再配置 config 文件,具体教程请参考我的另一篇文章:多个密钥 ssh-key 的生成与管理

如果上面的问题你都已经解决了,那么恭喜你,您的博客自动提交更新应该没什么问题了,百度会自动爬取并收录的。

注意:利用百度主动提交链接的方式也可以很容易解决爬虫的问题:
Daocloud和Coding持续构建Hexo
Hexo插件之百度主动提交链接

参考资料:
解决 Github Pages 禁止百度爬虫的方法与可行性分析
如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题?