大家好!我一直忙于 Anubis 的工作,很高兴能分享我添加的新功能和增强功能。我希望我能早点解决这个问题,但我一直在研究人工智能浏览器操作符,并做了一些徒劳的尝试来在代码中静态检测它们。一旦我有更多内容要展示,我将在以后的帖子中分享更多相关内容。
以下是自 Anubis 首次发布以来我所做的工作:
- 机器人策略文件
- DNSBL检查
失败的实验:视频元素检测
本月早些时候,我尝试向 Anubis 添加第一个浏览器环境检查,这是一个简单的测试,可确保您的浏览器可以正确渲染视频元素。我认为这是检查某人是否使用 headful 浏览器的相当简单的方法,但事实证明 iOS Safari 不支持我用于测试的那种 .mp4 视频。我会想出一些办法,但我必须首先弄清楚如何在 iOS Safari 上进行自动化测试。
测试的基本前提是检查浏览器是否支持视频元素以及是否能够实际加载视频文件。我的假设是,许多无头浏览器将设置在没有安装所有这些编解码器的环境中(因为它们使用相当多的空间),因此它们将无法加载视频文件。我将尝试不同的视频格式,看看是否效果更好。
机器人策略 JSON 文件
这是我本月在 Anubis 中发布的最大功能。之前我将一些“合理的默认行为”硬编码到 Anubis 中。这使我能够启动该项目,但这意味着 Anubis 默认情况下不会触发 RSS 源或其他“低风险”请求。我想让用户更轻松地自定义 Anubis 对不同类型请求的反应方式,因此我添加了一个机器人策略 JSON 文件。机器人策略允许用户定义更适合其特定需求和环境的规则。以下是允许 GoogleBot 但阻止 ChatGPT 的示例:
{ "bots" : [ { "name" : "googlebot" , "user_agent_regex" : "\\+http\\:\\/\\/www\\.google\\.com/bot\\.html" , "action" : "ALLOW" } , { "name" : "chatgpt" , "user_agent_regex" : "\\+https\\:\\/\\/openai\\.com\\/gptbot" , "action" : "DENY" } , { "name" : "generic-browser" , "user_agent_regex" : "Mozilla" , "action" : "CHALLENGE" } ] }
我在Bot 策略 JSON 文档中有更多关于此的文档。
DNSBL检查
我还为 Anubis 添加了DNS 阻止列表支持。如果您在策略文件中启用它,则会检查DroneBL中每个客户端的 IPv4 或 IPv6 地址。如果客户端在阻止列表中,Anubis 将阻止该请求。这是阻止已知不良行为者访问您的网站的好方法。
我计划将来支持自定义 DNS 阻止列表(例如Tor 出口节点阻止列表),但目前 DroneBL 将帮助清除互联网上许多最滥用的主机。
要启用 DNSBL 检查,请将dnsbl: true
添加到机器人策略 JSON 文件中。如果您没有机器人策略文件,则默认情况下此功能处于启用状态。
不成熟的前瞻性想法:通过 WebAssembly 远程更新检查器
我一直在思考如何让 Anubis 能够更好地应对 AI 资源不断变化的格局。我希望能够通过 Anubis 下载和运行的 WebAssembly 二进制文件定义额外的检查。这将使我能够发送新的支票,而不必等待您更新阿努比斯。
我需要在这里计算出很多细节,但我认为主机会对 WebAssembly 二进制文件进行一些调用:
- ListChallenges() -> []挑战
- CheckChallenge(挑战, 输入) -> bool
- 检查IP(IP) -> 布尔值
这将使我能够定义新的挑战(例如视频元素挑战)并部署它们,而无需更新 Anubis。我将在不久的将来在这方面做更多的工作,但我想与大家分享这个想法。
这将是一个选择加入的功能,需要对我有很大的信任才能不滥用该功能。我将设法使其尽可能安全。
不成熟的想法:允许未启用 JavaScript 的用户绕过挑战
当前版本的 Anubis 需要启用 JavaScript 才能通过挑战。我一直在思考如何让没有启用 JavaScript 的用户绕过这个挑战。我曾有过的更糟糕的想法之一是为非 JS 用户提供一个 HTML 表单,要求他们写出橙色的名称。令人惊讶的是,这比你想象的要好得多。我已经用几个模型完成了定价逻辑,并假设您阻止用户输入大约 64 个字符,您可以用绝对可以忽略不计的金额获得相当高的真阳性率。
我将更多地尝试这个想法,并考虑在未来的版本中实现它。这将是可选的,并且默认情况下不会启用。
结论
这就是我一直在做的事情!感谢您阅读并关注阿努比斯。我很惊讶该项目的进展如此之大。我很高兴看到它接下来会走向何方。如果您有任何问题、反馈或想法,请在 GitHub 上提出问题!