ProxyTracer:VPN 与代理拦截器

:information_source: 摘要 使用 ProxyTracer API 在用户注册、登录期间或全局范围内检测和阻止 VPN、Tor 及代理流量。
:hammer_and_wrench: 仓库链接 https://github.com/ProxyTracer/discourse-proxytracer
:open_book: 安装指南 如何在 Discourse 中安装插件

本插件利用 ProxyTracer API 在 Discourse 中检测和阻止 VPN、Tor 及代理流量。

功能特性

  • 提供精细控制,可在用户新注册、现有用户认证或全局针对所有网站访客时阻止 VPN、Tor 和代理用户。如果您允许 VPN、Tor 和代理用户访问论坛内容,则可以节省 API 请求,仅启用注册和认证阶段的保护。
  • 采用缓存机制存储最近的 IP 地址评估结果,从而减少 API 请求并降低延迟。您可以在设置中控制 IP 地址评估结果的保留时长。
  • 若发生 API 超时或网络故障,插件将优先保障用户访问权限,以防止大规模锁定。此行为可通过选项进行更改。
  • 内置对精确 IP 地址和 CIDR 子网白名单的支持。

配置步骤

  1. ProxyTracer 仪表板 获取标准 API 密钥。
  2. 进入 Discourse 管理面板:管理 → 插件 → ProxyTracer,查找 ProxyTracer 的设置项。
  3. ProxyTracer API Key 字段中输入您的 API 密钥。
  4. 通过切换 Enabled during Signup(注册时启用)、Enabled during Login(登录时启用)和/或 Enabled for All Visitors(对所有访客启用)来启用保护参数。
  5. 将任何受信任的 IP 地址或 CIDR 范围添加到 Whitelisted IPs(白名单 IP)列表中。
  6. (可选)根据您的服务器具体流量需求,调整 API 超时时间和 Redis 缓存持续时间限制。
  7. (可选)自定义被阻止用户看到的阻止消息。例如,您可以添加联系网站管理员的说明,以防用户认为阻止不当,或他们并非通过代理、Tor 或 VPN 访问网站。

设置项

包含设置项及其说明的表格

名称 说明
API 超时(毫秒) 等待 API 响应的时间上限,超过此时间则视为超时。
缓存持续时间(小时) 在再次检查 API 之前,记住某个 IP 地址的时长。
错误时开放访问 如果 API 崩溃或超时,仍允许用户注册或登录,以防止锁定所有用户。
注册时启用 在新用户尝试注册时阻止代理和 VPN。
登录时启用 在现有用户尝试登录时阻止代理和 VPN。
对所有访客启用 阻止代理和 VPN 访问或查看论坛上的任何页面。(警告:此选项会检查每一位访客,并大量消耗您的 API 配额)。
阻止消息 用户被阻止时显示的确切错误消息。
白名单 IP 被严格允许绕过阻止的 IP 地址或 CIDR 范围(例如:192.168.1.0/24)。

网络配置:Cloudflare 与反向代理

:warning: 为确保 ProxyTracer 有效运行,Discourse 应用程序必须接收真实的客户端 IP 地址。

为确保正确的 IP 地址转发,您可以参考这些 详细说明

紧急访问

如果您将自己锁在系统外,可以按照这些 简单步骤 恢复访问权限。


如果您想进行测试,可以注册 ProxyTracer 并获取一些免费的 API 积分用于测试。

4 个赞

积分会在下个月重新开始计算吗?

你问的是注册时的免费积分吗?如果是的话,那只是一次性充值。

这难道不会完全违背该插件的初衷吗?任何人都可以使用安全模式。

1 个赞

这取决于具体情况。有一个站点设置允许您禁用安全模式,这对于受控主题组件以及其他用户不应轻易禁用的组件/插件(如广告、访客门禁等)很有帮助。但如果您已退出登录,这也会使管理员使用安全模式变得更加困难。我认为他们仍然可以通过 管理员登录 来启用它。

对于此插件,我怀疑安全模式是否有帮助。安全模式仅禁用插件的前端部分,而此插件完全由 Ruby 编写。因此,我认为禁用 JavaScript 自定义并无太大帮助。这一事实让我对该插件略存疑虑,同样令我怀疑的是,它包含了一个 about.json 文件,仿佛它是一个主题组件。但最终,每个人都要对自己在论坛上安装的代码负责。

2 个赞

您完全正确,我可以通过在 freshly 启动的 Discourse 实例上进行测试来确认这一点。我随即更新了文档,添加了实际有效的操作说明,即登录服务器并手动禁用该插件:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exit

我可以确认,当“对所有访问者启用”设置处于开启状态,且有人尝试通过 VPN/代理连接并访问安全模式时,安全模式将无法访问

确实,对于标准插件而言,about.json 是多余的,我已将其从仓库中移除。

感谢 @Moin 的所有反馈。如果您有任何其他意见或建议,欢迎在此留言。代码完全开源,欢迎任何贡献:GitHub - ProxyTracer/discourse-proxytracer

@ProxyTracer 当我尝试使用 Cloudflare Warp 登录时,返回的是“未知错误”,而不是被拦截的提示。

发现得很及时!这个问题应该在 0.1.1 版本中已修复。能否确认升级后问题是否已解决?

1 个赞