Predator 是一个原型 Web 应用程序,旨在演示反爬虫、反自动化及机器人检测技术。 它可以用作蜜罐、反爬虫系统或漏洞扫描器的误报测试平台。
警告: 我强烈不建议在未确切了解这些演示方法作用的情况下,将其用于生产服务器。请记住,只应实现那些根据 Web 应用程序自身情况看来可用的技术。Predator 是一个技术集合,其代码不应原样使用。
下面的思维导图是对此处演示的技术如何在生产环境中实现的一种粗略可视化。

注意: “观察阶段”中的数值和因素可用于为客户端设置信誉,一旦达到阈值,该信誉便可作为恶意活动的强有力指标。
与真实浏览器相比,机器人发送的 HTTP 请求头往往顺序不同,或者完全缺失。许多机器人出于道德原因会在 User-Agent 头中暴露自己,而另一些则根本不发送。
此处描述的大多数 HTML 变异技术都可以通过基于浏览器的框架(如 selenium 和 puppeteer)绕过,但可以通过 isBot.js 中实现的各种测试来检测它们。
大多数机器人只请求网页和图片,而 .css 等资源文件通常会被忽略,因为当前使用的 HTTP 实现不会下载它们。当网页/图片与这类资源文件的比率高于预定义阈值时,就可以检测到机器人。
爬虫使用的许多 HTML 解析器无法像浏览器那样处理损坏的 HTML。例如,在浏览器中点击以下链接会跳转到 page_1,但受影响的解析器会解析后面的值,即 page_2
<a/href="page_1"/href="page_2">Click</a>
这可以用来阻挡和封禁爬虫,同时不影响用户体验。
一些链接通过 CSS 对用户隐藏,但自动化程序仍然可以看到它们。这些链接可用于检测机器人,并采取所需操作,例如封禁 IP 地址。
当 Predator 怀疑访问者是机器人时,它会生成随机数量的随机链接,这些链接指向一个包含更多随机链接的页面(limbo.php),并且该过程会不断重复。
漏洞扫描器通常会输入一个 payload,然后查看 Web 应用程序是否以某种方式响应。Predator 可以通过在 HTML 中包含预期响应(即签名)来假装存在漏洞。
Predator 目前模仿以下漏洞:
这种方法使得在不实际托管任何易受攻击代码的情况下搭建蜜罐成为可能,并可作为误报测试的测试平台。
PatheticGeek 完成了所有前端魔法,让 Predator 看起来美观。