计数器也在数机器人
计数器一直在把机器人也算进去。所有人的计数器都是如此。直到这个月之前,这里没有人能说出具体有多少,因为一直没有任何机制在测量这件事——而一个请求计数器图片的爬虫,看起来和一个请求计数器图片的人一模一样。
现在,这项数据有了测量。结果比预期的更糟。
最初几天的数据
统计从 8 月 9 日开始。就本站所有计数器而言,来自爬虫而非真人的访问占比如下:
- 8 月 9 日——16,070 次访问中有 1,193 次,约 7%
- 8 月 10 日——20,181 次访问中有 1,624 次
- 8 月 11 日——20,918 次访问中有 1,954 次
- 8 月 12 日——22,740 次访问中有 2,707 次,约 12%
大致在 7% 到 12% 之间。四天的数据算不上趋势,本文也不会把它当作趋势来呈现——这种波动可能来自爬虫本身的变化,也可能是随着特征库不断扩充,检测捕捉到了更多爬虫。
真正引人注目的数字
平均值掩盖了真正有意思的部分。逐日查看单个计数器的数据可以发现,共测得 2,412 个「计数器-日」,其中有 631 个「计数器-日」里,被计入的访问大多数都是机器人。
换句话说,大约有四分之一的「计数器-日」里,大多数「访客」其实都不是访客。这就是一个访问量不高的网站从内部看到的样子:少数几个真实的人,加上一支从不停歇、从不休息、也从不阅读任何内容的爬虫队伍,在持续巡逻。
在一个小网站上,明明不可能有人在看,计数却还在悄悄上涨——这就是答案,现在它也出现在统计页面上,标注为 Bots (30 days)。
如何识别它们
依据的是客户端自报的名称。Baiduspider、Googlebot、Amazonbot、AhrefsBot、各种可用性监控工具,以及那些完全不加掩饰的工具:curl、wget、python-requests、Scrapy。完全不提供名称的请求也会被当作机器人处理,因为浏览器总会提供一个名称。
这份名单刻意保持简短,只匹配那些含义明确、不会混淆的特征,这意味着规规矩矩的爬虫会被识别出来,而谎称自己是 Chrome 的爬虫则不会。这个方向是对的:把机器人算成人,只是个小误差;把人当成机器人剔除掉,则是再也拿不回来的数据。
尚未做出的决定
坦白说一句:机器人目前仍会计入总数。它们被单独列出以便查看,但计数器上显示的那个大数字,依然把它们算在内。
要排除它们,只需一个设置项,而这个选项目前是刻意关闭的。一旦打开,本站每一个计数器显示的数字都会在一夜之间下降约十分之一,而且没有征求过任何人的意见。对于那些从 2007 年就开始运行、已经成为某人页面上一点小小骄傲的计数器来说,悄悄扣掉一大块总数,并不是一次中立的技术修正。
所以目前的做法是先把数字如实显示出来。如果它应该被扣除,而不只是被报告出来,这个意见值得听取——本站设有支持表单,表单的另一端是一个真实的人。