有那么一段时间我站上面的 next page 插件出问题了, 然后 last page 显示的是 999999 页. 我在前段时间修正了这个问题, 之后变态的事情就出现了.

几乎是不约而同地, yodao 和 baidu 都对我站上面的认证码链接表示出了浓厚的兴趣, 不停的来抓他. 我用的是 secureimage, 因为这是一个 wp 插件而我懒得写 lighttpd 的 rewrite 规则, 所以从外观上面并不能判断这其实是一个图片链接. 问题在于, secureimage 插件为了使得认证图片不要被 cache, 在 url 里面加入了随机数, 再加上 next page 插件的问题, 一下就在站点上面造成了无数无意义链接.

最先犯傻的是 yodao, 他在劳动节像勤劳的蜜蜂一样连续不断抓了我这个 index.php?image= xxx 的页面很长时间, 用过 secureimage 的应该都知道这个东西生成图片的时候是调用外部程序的, 性能很是差劲. yodao 辛勤工作的唯一结果就是把我机器 load 长时间保持在 1 以上, 加上抓走了很多认证码图片. 终于有一天我忍不住了给 yodao 的开发人员打电话抱怨, 于是很快 yodao bot 就不来做无用功了.

本来以为事情就这样结束了, 没有想到的是 baidu 忽然开始发飙, 重复了和 yodao 一样的行为, 系统负载又变成很高. 没办法, 谁让咱不太认识 baidu 的开发人员呢, 而且自己站点性能低下这个事情说出去也比较没有面子, 咱躲还不行么. 于是折腾了几天, 尝试了几种插件以后, 最终确定了用 reCAPTCHA 加 Simple trackback validation 插件的组合. 总算从根本上面搞定了这个问题.

现在 log 里面就只有 baidu 的踪影了, 这个事情已经过去好多天了, 但是 baidu 还是不屈不挠的继续抓我的 image 页面, 这么多天以来不知道抓走了多少相同的错误页面, 为了减少无意义的流量, 我甚至专门写了一个 wp 插件来对 image 请求直接返回 403 .

如下的这段 log 反映了 baidu 最近的行为. 估计在 baidu 的抓取队列里面还堆着成千上万的这样的错误 url..

202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:36 +0800] “GET /wordpress/index.php?image=1f32744dea0142b191ca8fa2b6a32b5d&paged=10 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:38 +0800] “GET /wordpress/index.php?image=d11c586c26da2f5bf003e47d4f0e5ed4&paged=999988 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:40 +0800] “GET /wordpress/index.php?image=4205623c0643018def4d3090b0ce9470&paged=9 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:42 +0800] “GET /wordpress/index.php?image=2af9efafa040d8bf35055128267feffa&paged=999974 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:44 +0800] “GET /wordpress/index.php?image=70b7ccfef46bdd7d25daf7713a57fc7d&paged=999974 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:47 +0800] “GET /wordpress/index.php?image=1b45a7417b7f143bde8ef8c8644c667c&paged=9 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:48 +0800] “GET /wordpress/index.php?image=96270b839056e6e14160df7b91f8a317&paged=999958 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:50 +0800] “GET /wordpress/index.php?image=3842383fd4cc883525946474ba398090&paged=999991 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:52 +0800] “GET /wordpress/index.php?image=da609f6198c13d44005e90ed628ac77b&paged=7 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:55 +0800] “GET /wordpress/index.php?image=aaa27befe711203f75b84440f5e6547e&paged=999998 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:57 +0800] “GET /wordpress/index.php?image=2b5c35a6df7c37c5eccb48a742f83545&paged=20 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:13:59 +0800] “GET /wordpress/index.php?image=08e6b143f587d1669ad94cbe0db253cb&paged=5 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:14:03 +0800] “GET /wordpress/index.php?image=0b4070b3df714b80565d17cd9f275221&paged=999986 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:14:04 +0800] “GET /wordpress/index.php?image=783abb820d940bf502c1badd6fe0cc6a&paged=6 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:14:12 +0800] “GET /wordpress/index.php?image=d8cabc7a58980ac774bb3f90d63f5e0a&paged=999970 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”
202.108.22.144 blog.kangkang.org - [29/May/2007:16:14:13 +0800] “GET /wordpress/index.php?image=2658d7ca7669155e82c546a6743a3bf4&paged=11 HTTP/1.1” 403 0 “-” “Baiduspider+(+http://www.baidu.com/search/spider.htm)”

但是很令人惊讶的是 baidu 抓取的优先级却做的还可以, 在 baidu 上面搜索这个站点上面的页面, 能发现更新速度还是很及时的. 并没有因为要抓取大量垃圾 url 而延迟抓取真正更新的页面. 不过, 有本领做好优先级固然很好, 但是你真的没有本领识别出来这些都是相同的垃圾页面吗? 这方面 Googlebot 就做的很好, 更新速度也还可以, 垃圾 url 现在基本已经不抓了. Yahoo slurp 现在偶尔也会来抓垃圾页面, 不过没有百度积极而已.

最后: 各位看我 blog 的大爷们,如果你是 baidu 的或者你认识 baidu 管 spider 的哥们, 麻烦帮忙说一声,把抓取队列里面的垃圾都删掉吧…