采用Docker和解决Github Pages禁止百度爬虫的问题

发布时间: 更新时间: 总字数:749 阅读时间:2m 作者: 分享

GitPage因为某些原因拒绝了百度爬虫,苦逼了好久,终于找到了绕行火焰山的方法,看到的朋友偷着乐吧。

解决方案

GitHub Pages搭建的网站,在百度搜索引擎访问的时候,经常性的会返回 403 forbidden,从而百度会认为网站访问不稳定,对网站降权,甚至K站。

要想解决这个问题,只有买个VPS自己撘一个jekyll解析博客了。但是我的域名没有备案,单纯用国外的VPS,用户访问起来也会有慢的问题,毕竟Github Pages的CDN还是很牛逼的。因此,只有欺骗百度的蜘蛛,让他到其他的站点抓取页面,该站点和GitPage保持同步。

现在NDS技术是十分发达的,一般大公司内的域名解析是可以按省、运营商等来做的。大家常用的DNSPOD也支持这么牛逼的功能,免费用户可以 按电信、联通、教育网、百度、搜索引擎等分别设置解析,付费用户可以分省、分国家、分大洲等等。

工具

Dockers,DNSPOD,nginx等。

部署Jekyll环境

本Blog采用Docker镜像来管理Jekyll,为了一劳永逸。具体的制作方法可以参考:

http://www.xiexianbin.cn/docker/2015/08/03/Dockerfile-build-jekyll-server/

搭建博客站点

1. 下载Docker镜像

docker pull xiexianbin/centos6:jekyll

2. 启动docker实例

docker run -d -t -i -p 8081:8080 -v /root/docker:/opt/docker --name jekyll xiexianbin/centos6:jekyll

3. 克隆GitPage代码

[root@xianbin ~]# docker attach jekll2

[root@8b3720024cce /]#
[root@8b3720024cce /]# cd /opt/docker/
[root@8b3720024cce docker]# git clone https://github.com/XieXianbin/xiexianbin.github.io.git
Initialized empty Git repository in /opt/docker/xiexianbin.github.io/.git/
remote: Counting objects: 1330, done.
remote: Compressing objects: 100% (35/35), done.
remote: Total 1330 (delta 18), reused 0 (delta 0), pack-reused 1295
Receiving objects: 100% (1330/1330), 2.10 MiB | 61 KiB/s, done.
Resolving deltas: 100% (645/645), done.
[root@8b3720024cce docker]# cd xiexianbin.github.io/
[root@8b3720024cce xiexianbin.github.io]# jekyll serve --port 8080 --host 0.0.0.0 &
[1] 30
[root@8b3720024cce xiexianbin.github.io]# Configuration file: /opt/docker/xiexianbin.github.io/_config.yml
            Source: /opt/docker/xiexianbin.github.io
       Destination: /opt/docker/xiexianbin.github.io/_site
      Generating... done.
    Server address: http://0.0.0.0:8080
  Server running... press ctrl-c to stop.

4. 定时更新博客代码

采用crontab每小时与gitpage同步一次。

crontab -e
* */1 * * * cd /opt/docker/xiexianbin.github.io; git pull >> /tmp/github_blog_pull_record.log 2>&1;

配置智能NDS

登录DNSPOD,进入域名解析的设置页面,添加一条针对百度蜘蛛解析:

dnspod for baidu spider

然后,就可以到百度站长测试抓取。我的第二天,百度收录成功。

当然,我用nginx的做端口转发哦,解决80端口的复用问题。

完毕。

Home Archives Categories Tags Docs