走开;离开;滚开;别再纠缠 (根据具体语境选择合适的释义)

这是一个用于对抗低效率大规模 AI 抓取和机器人的自托管滥用检测和规则执行工具go-away,使用常规非核选项。

  • 功能特点

    • 丰富的规则匹配:使用 Common Expression Language (CEL),允许任意选择客户端属性,支持布尔运算符,可定义模板用于规则匹配和挑战条件。
    • 路径修改:可修改挑战服务的路径和包名,无需编辑源代码或进行分叉,通过命令行参数--path指定新路径。
    • 页面模板和定制支持:可加载内部或外部模板来自定义挑战或错误页面的外观,支持多种主题和自定义 logo,可直接在config.yml文件中修改语言和字符串。
    • 高级动作:除常见的 PASS / CHALLENGE / DENY 规则外,还提供更多动作,并可通过代码扩展。
    • 多挑战匹配:可为规则提供多个挑战选项,用户通过之前通过的挑战可不受影响。
    • 非 JavaScript 挑战:提供多种不依赖 JavaScript 的挑战,用于轻量级请求检查。
    • 自定义 JavaScript / WASM 挑战:提供 WASM 接口用于服务器端证明生成和检查,可实现 Captchas 或浏览器指纹测试。
    • 上游 PROXY 支持:支持 HAProxy PROXY 协议,可发送客户端 IP 而不更改连接或 HTTP 头,适用于 HAProxy、Caddy、nginx 等。
    • 自动 TLS 支持和 HTTP/2 支持:可通过 ACME 目录启用自动证书生成和 TLS,支持 HTTP/2 明文或通过配置上游代理发送h2c://
    • TLS 指纹识别:运行 TLS 时进行客户端的 TLS 指纹识别,可用于条件或其他应用逻辑。
    • 网络范围和自动过滤:检查来源网络范围,可通过获取 JSON / TXT / HTML 页面或列表加载网络范围,并使用jq或正则表达式进行过滤。
    • 多后端支持:支持多个后端,可定义特定于后端的规则和条件,并支持子域通配符。
    • IPv6 Happy Eyeballs 挑战重试:客户端通过 IPv4 或 IPv6 连接时,挑战将自动重试,并标记挑战的地址类型。
  • 示例策略

    • Forgejo:提供用于 Forgejo 实例的策略文件,可编辑http-cookie-check挑战、调整网络范围等。
    • Generic:提供适用于任何站点的基线策略文件,可编辑homesite规则、允许静态文件访问等。
    • Snippets:可定义要包含的代码片段,支持 YAML 锚点/别名。
  • 开发背景和目标:过去几年,该工具所在的 Git 实例遭受大量抓取,最初部署了 Anubis,后开发go-away以替代 Anubis,减少对合法用户的影响,并提供更多动态目标新攻击波的选项。
  • 未来计划:完成代码重构、完善文档、改进策略文件语法、允许用户选择备用挑战、替换默认模板、添加多语言支持、优化测试路径、缓存临时获取的数据、支持动态策略重载、实现多域/子域与一个后端处理、合并规则和条件为一个大型 AST、探索暴露用于 Caddy 的模块、更明确地选择 HTTP/HTTP(s)监听器和证书、暴露挑战解决率的指标等。
  • 其他类似项目:列举了多个类似的自我托管工具,包括 Anubis、powxy、PoW! Bot Deterrent、CSSWAF、anticrawl、ngx_http_js_challenge_module、haproxy-protection 等,介绍了它们的源代码、描述和使用的方法。
  • 开发信息:Go 包可作为git.gammaspectra.live/git/go-away/cmd/go-away的命令或git.gammaspectra.live/git/go-away/lib的库使用。
阅读 11
0 条评论