如何创建这样的blog(2)--解决爬虫无法爬取git个人博客的问题

原创内容,转载请注明出处

Posted by Weakyon Blog on July 4, 2015

解决爬虫的爬取问题

gitcafe创建项目

配置域名

CDN配置优化

后备方案


如何创建这样一个blog这一篇已经过去快一年了。

然而最近遇到一个新的问题,各大搜索引擎毫无流量。因此写了文章后,除了几个朋友以外也没人看。

我认为我的文章也不是百分百正确的,没大神来评论批评我怎么知道我错哪儿了呢。

解决爬虫的爬取问题

然后我看到知乎这个帖子如何解决百度爬虫无法爬取搭建在Github上的个人博客的问题?

文中的一个解决办法是使用CDN

然后我买了域名weakyon(weak kyon就是弱虚的意思),打算用CDN加速来解决这个问题。

首先尝试了cloudflare,因为帖子里有人用cloudflare解决的。

然而并没有什么用,百度UA有时候能爬到有时候爬不到

爬到时会显示

  
< Via: 1.1 varnish
< Age: 3
< X-Served-By: cache-lax1425-LAX
< X-Cache: HIT
< X-Cache-Hits: 1
< X-Timer: S1435913891.354155,VS0,VE0
< Vary: Accept-Encoding
< Server: cloudflare-nginx
< CF-RAY: 2001631cfe4e22a6-LAX

爬不到时显示

  
< Via: 1.1 varnish
< X-Served-By: cache-lax1431-LAX
< X-Cache: MISS
< X-Cache-Hits: 0
< X-Timer: S1435913599.223805,VS0,VE67
< Vary: Accept-Encoding
< Server: cloudflare-nginx
< CF-RAY: 20015bfb154122a6-LAX

当时我还想着还是有点用,后来回想起来才猜测可能是为了SEO,搜索引擎的UA全部会穿透到源站上。

而github源站使用了CDN,这个varnish缓存应该是github自身CDN的,当CDN命中时能正常爬取,当未命中时就会穿透到github源站上,然后被403

国内的加速乐也是会把爬虫穿透到源站上,导致帖子中那个人用加速乐没什么用。

当然,当时我没想那么多,直接各种换CDN尝试。

国外知名的除了Cloudflare就是Incapsula了,没用。

国内的七牛是迁移用的,又拍云,360网站卫士,百度CDN,以及和dnspod合作的腾讯CDN,如果不想换域名的话,都是要域名备案的。

最后走投无路,在github上的博客用没备案的域名,想让百度能爬到看来是行不通了。

后来想到,把gitcafe作为镜像源不就好了吗。

#gitcafe创建项目

然后就在gitcafe上创建了项目

gitcafe官方帮助文档

添加了ssh后

  
git remote add gitcafe 'git@gitcafe.com:tedcy/tedcy.git'

然后写个Makefile

  
[root@localhost.localdomain _posts]# cat ../Makefile 
push:
        git push origin master
        git push gitcafe master:gitcafe-pages

每次commit后make就行了

另外git是有功能可以同时提交到多个远程主机的,嫌麻烦的可以使用这个功能

我这里是防止gitcafe哪一天挂了,能灵活一些

#配置域名

gitcafe以前是支持在dnspod加入A记录,值是他的IP的,因为被DDOS的关系,现在只支持CNAME的方式

注意的dnspod上要把默认,电信,联通全部加上CNAME记录,我的经验是只用默认的话,有时候会刷不出来

然后在gitcafe的自定义域名加入weakyon.com,就OK了

现在百度爬虫爬起来就没问题了

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

返回200,连接到gitcafe的服务器上

CDN配置优化

一个原因是Cloudflare的dashboard实在是很棒,不舍得不用。

另外一个原因是用just-ping进行ping测试,除了china以外的地方访问,速度都慢的离谱

所以在Cloudflare上把CNAME设置好,然后把域名服务商的NS改到Cloudflare上

最后在Cloudflare的page rule里,添加weakyon.com/*规则,把cache改为basic cache

过一会儿weakyon.com就会解析到Cloudflare的域名了

用just-ping再测了下,速度飞起

在国内线路用压测工具稍微压了下,速度也还可以:

  
[root@localhost.localdomain http_load-14aug2014]# ./http_load -f 100000 -r 50 -s 30 -p 50 test 
2276 fetches, 50 max parallel, 1.1355e+07 bytes, in 30 seconds
4989 mean bytes/connection
75.8667 fetches/sec, 378499 bytes/sec
msecs/connect: 180.364 mean, 1180.62 max, 149.744 min
msecs/first-response: 454.225 mean, 3649.72 max, 380.274 min
HTTP response codes:
  code 200 -- 2276

后备方案

gitcafe最近用的人很多,从国内的大趋势考虑,可能以后也会不支持CNAME的方式

如果这种情况真的发生了,那么只能自己用VPS搭建一套jekyll环境了

也就相当于自己用VPS去实现现在gitcafe实现的东西,然后用CDN给域名加速

这样VPS的流量和性能应该都不需要太好,够用就行了

当然,还是希望这样的情况不会发生,也祝gitcafe能越办越好0.0

04 Jul 2015