谁偷走了我的流量?

谁偷走了我的流量?

今天上午,我突然收到一封邮件:

The domain dayanjia.com (dayanjia) has reached 80% of its bandwidth limit (4810.18/6000.00 Megs).

我顿时一惊,我在胡戈戈那里买的主机一个月流量6GB,按理说几乎用不完的,但是今天才3月18日,怎么都已经消耗了80%了啊?!今晚登陆cPanel一看,居然已经用掉了将近5000MB了。这不禁让我大吃一惊,该不会是我的博客访问量暴增吧?嘿嘿~~不过我对这种小概率时间发生并不抱多少希望。还好,主机管理页面提供了Webalizer和Awstats两款统计工具,能让我清楚地看到这些流量究竟去了何处。经过一番排查,幕后凶手终于露出水面。最终令人惊讶的结论是,一款我曾经安装过但后来卸载了的Wordpress插件Global Translator和百度搜索爬虫联手作案吃掉了这些流量!

疯狂的Baidu Spider

根据Webalizer的统计数据,3月份本博客流量的前四名来源User agent均为搜索引擎爬虫(囧rz),但是这其中最嚣张的就算百度的Spider了,竟然有223808次点击,和第二名的Google Bot完全不在一个数量级上。

万恶的Global Translator插件

在cPanel上查看最近访问者的浏览日志,可以发现大多数都是来自百度爬虫。而这些爬虫访问的页面全都是dayanjia.com/fr、dayanjia.com/ko这样带有语言标示的URL,这不禁让我想到了曾经安装过但是后来删掉的一款WordPress插件——Global Translator。

Global Translator是一款Wordpress上非常受欢迎的翻译类插件,它与其他同类插件相比最大的特色就是能够在后台生成调用网页翻译工具(例如Google翻译)翻译后页面的缓存,此外还支持与另一款Wordpress插件Google XML Sitemap联动,将多语言的页面加入Sitemap中。诚然,这个插件对于博客的推广是很有好处的,可以吸引更多国外的人来访问你的博客(尽管Google Translation的翻译时分蹩脚)。但是,那无数的缓存文件肯定会让人抓狂!上个月我将网站迁移到新买的主机上时,就遇到了这个问题,数不胜数的缓存文件用FTP下载回来再上传回去简直是一种折磨。于是我干脆放弃了那些缓存文件,迁移主机时把那个插件也删掉了。但是没想到,请神容易送神难,删掉后的Global Translator“阴魂不散”,直接影响了搜索引擎的抓取工作,更令百度的爬虫陷入超级赛亚人的疯狂访问状态。

凡是我曾经在Global Translator中打开了翻译功能的语言,在插件删掉后,相应的URL依然可以正常命中(见上图),不过有些返回值是301(永久重定向),而有些是200(成功)。从下图的对比中我们可以清楚地看到插件卸载后的遗留问题:

URL中含有残留的语言代码,直接显示首页内容。

而输入其他字符则会跳转到404页面

症结所在

看到这里想必你也猜到问题根源了,就是因为插件卸载后的残留导致了无数缓存页面都重定向到首页了,致使不学好的百度爬虫拼命地抓取首页,而首页一般内容较多,自然占用带宽大,于是不到20天,4GB多的带宽流量就被百度“独享”了。

解决办法

分析了原因,自然要找到相应的办法,不然这个月最后几天我的博客就无法访问到了,而且今后百度的爬虫会不会更加疯狂还是未知数。

修改robots.txt

虽然我们都知道百度的Spider貌似不太喜欢去看robots.txt,但这毕竟是堵住搜索引擎访问最方便最理想化的方法。由于我也记不清楚当初设定了多少种语言翻译了,所以尽量多写些吧!打开网站根目录下的的robots.txt,然后在User-agent: *的后面加上:

Disallow: /ar/
Disallow: /bg/
Disallow: /cs/
Disallow: /da/
Disallow: /de/
Disallow: /el/
Disallow: /en/
Disallow: /es/
Disallow: /fi/
Disallow: /fr/
Disallow: /hr/
Disallow: /hu/
Disallow: /it/
Disallow: /iw/
Disallow: /ja/
Disallow: /ko/
Disallow: /nl/
Disallow: /no/
Disallow: /pl/
Disallow: /pt/
Disallow: /ro/
Disallow: /ru/
Disallow: /sk/
Disallow: /sr/
Disallow: /sv/
Disallow: /th/
Disallow: /tr/
Disallow: /zh-TW/

修改.htaccess

刚才说到百度可能对robots.txt并不友好,因此我们也无法立即判断上面的方法是否真正有效。当然你可以在接下来的几天中观察流量日志的变化以确认它的有效性,但是我们等不及了,因为流量真的就快用完了。我们可以修改.htaccess文件来让用户(包括搜索引擎)访问这些URL时跳转到403(禁止访问)页面,以节省网站流量,当然者比较暴力了,呵呵……打开网站根目录下的.htaccess。然后在RewriteEngine On的下面加上以下命令(你可以根据需要自己修改相应的匹配规则):

RewriteCond %{HTTP_HOST} ^dayanjia.com$ [NC]
RewriteRule ^(ar|bg|cs|da|de|el|en|es|fi|fr|hr|hu|it|iw|ja|ko|tr|zh-TW) - [F]

这样做的效果可谓立竿见影:

结论

我在网上搜索后,发现同样有朋友遇到了类似的问题,比如这里那里。尽管Global Translator这款插件使用起来的确很方便,但是它产生的缓存问题不容忽视,请大家慎用这款插件。如果想要在博客上挂翻译链接的话,可以使用Google提供的代码

GD Star Rating
loading...
谁偷走了我的流量?, 2.3 out of 5 based on 3 ratings

延伸阅读:

  1. 中文编码什么的,最讨厌了……