封掉垃圾搜索引擎

一般来讲,很多人都喜欢自己的网站有很大的流量,但有时候很多流量其实是垃圾流量,有选择性的过滤掉搜索引擎,很有必要,比如Sogou,每个月抓得比Google还要勤奋,但是在它里面搜来搜去居然一个结果都没有?简直让人莫名惊诧,比之于Sogou和Google带来的人流量,封掉它就显得很有现实意义了。

针对上述情况,要封掉的其实不止Sogou一家,那么我们确定,只留下Google和百毒,其它搜索引擎都不让访问,然后呢,我们不允许这两只爬虫索引图片文件,MP3文件,还有其它多媒体文件,这一步我们在robots.txt里面设置:

User-agent: *
 Disallow: /
User-agent: Googlebot
 Disallow: /*.jpg$
 Disallow: /*.png$
 Disallow: /*.mp3$
 Disallow: /*.wmv$
 Disallow: /*.gif$
 Disallow: /*.cgi$
 Disallow: /*.gz$
 Disallow: /*.js$
 Disallow: /*.css$
User-agent: Baiduspider
 Disallow: /*.jpg$
 Disallow: /*.png$
 Disallow: /*.mp3$
 Disallow: /*.wmv$
 Disallow: /*.gif$
 Disallow: /*.cgi$
 Disallow: /*.gz$
 Disallow: /*.js$
 Disallow: /*.css$

很显然,这样的设置,对于病(bing.com)这种国际搜索引擎是很有效果的,但对于Sogou这样的垃圾搜索引擎,效果不大,它依旧是我行我素,所以,我们需要通过甄别其User-Agent,然后在web服务器上过滤。

那么,我们可以在Nginx中设置如下,对于符合Sogou机器人UA的访问,一律给它返回400错误,一般来讲,我们见到的web服务器错误有404,403,500,502,503等等,但这些错误都是临时性的,会导致机器人间隔持续访问,返回400错误,可以告知机器人,除非你改变client端请求,否则你无法得到正确结果。

location / {
                if ($http_user_agent ~ Sogou) {
                return 400;
                        }
这段的意思很明显,我就不解释了。
然后,所有Sogou的访问都会被400掉:
123.126.50.70 - - [28/Nov/2011:22:45:23 +0800] "GET /2011/04/26/ HTTP/1.1" 400 172 "-" "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"