ProxyTracer:VPN 与代理拦截器

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

此插件使用 ProxyTracer API 在 Discourse 中检测和阻止 VPN 及代理流量。

功能特性

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

配置步骤

  1. ProxyTracer 仪表板 获取标准 API 密钥。
  2. 进入 Discourse 管理面板:管理 → 插件 → ProxyTracer,找到 ProxyTracer 的设置。
  3. ProxyTracer API 密钥 字段中输入您的 API 密钥。
  4. 通过切换 注册时启用 登录时启用 和/或 对所有访问者启用 来启用防护参数。
  5. 将任何受信任的 IP 地址或 CIDR 范围添加到 白名单 IP 列表中。
  6. (可选)根据您服务器的具体流量需求调整 API 超时时间和 Redis 缓存持续时间限制。
  7. (可选)自定义被阻止用户看到的阻止消息。例如,您可以添加说明,指导用户在认为阻止不合理且未通过代理或 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 信用额度用于测试。

3 个赞

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

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

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

1 个赞

(帖子已被作者删除)

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

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

1 个赞

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

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

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

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

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