如何创建这样的blog(2)--解决爬虫无法爬取git个人博客的问题
gitcafe创建项目
配置域名
继如何创建这样一个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上创建了项目
添加了ssh后
'git@gitcafe.com:tedcy/tedcy.git' git remote add gitcafe
然后写个Makefile
[root@localhost.localdomain _posts]# cat ../Makefile
:
push
git push origin master:gitcafe-pages git push gitcafe master
每次commit后make就行了
另外git是有功能可以同时提交到多个远程主机的,嫌麻烦的可以使用这个功能
我这里是防止gitcafe哪一天挂了,能灵活一些
#配置域名
gitcafe以前是支持在dnspod加入A记录,值是他的IP的,因为被DDOS的关系,现在只支持CNAME的方式
注意的dnspod上要把默认,电信,联通全部加上CNAME记录,我的经验是只用默认的话,有时候会刷不出来
然后在gitcafe的自定义域名加入weakyon.com,就OK了
现在百度爬虫爬起来就没问题了
-vA "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" weakyon.com curl
返回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
/connect: 180.364 mean, 1180.62 max, 149.744 min
msecs/first-response: 454.225 mean, 3649.72 max, 380.274 min
msecs:
HTTP response codes200 -- 2276 code
后备方案
gitcafe最近用的人很多,从国内的大趋势考虑,可能以后也会不支持CNAME的方式
如果这种情况真的发生了,那么只能自己用VPS搭建一套jekyll环境了
也就相当于自己用VPS去实现现在gitcafe实现的东西,然后用CDN给域名加速
这样VPS的流量和性能应该都不需要太好,够用就行了
当然,还是希望这样的情况不会发生,也祝gitcafe能越办越好0.0