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