人类和机器人会做类似的事情,但机器人会做人类不会做的事情。让我们尝试识别这些东西。在我们查看行为之前,让我们接受RayQuang的评论是有用的。如果访问者具有机器人的用户代理字符串,则它可能是机器人。我不能把任何人用“Google Crawler”(或类似的东西)想象成UA,除非他们正在努力打破一些东西。我知道你不想手动更新列表,但自动拉取那个列表应该很好,即使它在接下来的10年里保持陈旧,它也会有所帮助。
有些人已经提到了Javascript和图像加载,但Google会同时做这两件事。我们必须假设现在有几个机器人可以同时做这两件事,所以这些不再是人类的指标。然而,机器人仍然会唯一地做的是遵循“不可见”的链接。以一种非常狡猾的方式链接到一个页面,我作为用户无法看到。如果遵循这一点,我们就有一个机器人。
机器人通常会(尽管并非总是)尊重机器人.txt。用户不关心机器人.txt,我们可以假设任何检索机器人的人.txt都是机器人。不过,我们可以更进一步,将一个虚拟的CSS页面链接到我们被机器人排除的页面.txt。如果我们的正常CSS被加载,但我们的虚拟CSS没有加载,它绝对是一个机器人。您必须按IP构建(可能是内存中)加载表,并执行未包含在匹配中的表,但这应该是一个非常可靠的信息。
因此,为了使用所有这些:按IP地址维护机器人的数据库表,可能具有时间戳限制。添加任何跟随你的隐形链接的东西,添加任何加载“真实”CSS但忽略机器人.txt CSS的东西。也许添加所有机器人.txt下载器。过滤用户代理字符串作为最后一步,并考虑使用它来进行快速统计分析,并查看这些方法在识别我们知道是机器人的东西方面似乎有多强。