Inline-onebox 不会使用 SiteSetting.onebox_user_agent

您好,

我们最近在服务器上部署了 Anubis 来防御资源密集型的 AI 爬虫。它会向带有类浏览器用户代理的请求发送一个静态页面,标题为“正在确认您不是机器人!”然后进行 JavaScript 难度证明,最后重定向到正确的页面。用户代理名称中不包含 Mozilla 的请求可以直接访问页面。

现在,Discourse 的 onebox 链接预览已损坏,但仅限于内联链接。

查看服务器日志,Discourse 发送了两种不同类型的用户代理:

  • Discourse Forum Onebox v3.4.1 用于大的 onebox 链接预览(请参阅 03f3e84ce520d375aa1c66bb0e95cc5ed9832776 中的 lib/onebox/helpers.rb#L217-L226

  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15 用于内联链接预览(请参阅 03f3e84ce520d375aa1c66bb0e95cc5ed9832776 中的 lib/final_destination.rb#L40

我尝试了管理设置中的“强制自定义用户代理主机”,该设置声称“用于在所有请求上使用自定义 onebox 用户代理的主机。”,但没有起到任何作用。

我也尝试更改了 onebox_user_agent 隐藏设置,但这只会更改常规 onebox 链接预览的用户代理,而不会更改内联预览的用户代理。

在我看来,这似乎是一个 bug,难道不应该为内联链接预览也使用相同的可配置的“Discourse Forum Onebox”用户代理吗?

谢谢!

1 个赞

我收到了两个不同的 onebox 请求,一个使用浏览器用户代理的 HEAD 请求,以及一个使用可识别用户代理的 GET 请求。如果 HEAD 请求被重定向(到一个挑战页面),则会跟随三个请求,所有这些请求都指向重定向的页面。

我必须在我们的挑战系统中将所有 HEAD 请求列入白名单,才能使 onebox 工作。不仅是内联 onebox,也包括阻止 onebox。

这感觉更像是功能请求而非错误。内联 onebox 和 onebox 是不同的功能,它们以不同的方式使用网络。也许我们需要另一个站点设置。

我同意至少再添加一个隐藏的内联 onebox 设置,这样可以解除您的阻塞。

这个问题解决了吗?我们在 Fedora 讨论区也收到了投诉。

不,我们从未为此添加过站点设置。我们仍然需要一个。将通知团队这对您造成了影响。

隐藏了 inline_onebox_user_agent 设置的拉取请求(PR)已被合并。您可以使用它来覆盖内联 onebox 的代理(agent)标头。

@osmith,您能确认该设置是否解决了内联链接和 Anubis 的问题吗?

我现在无法测试。但是,如果隐藏设置覆盖了用户代理(user-agent)如所述,那么它就解决了内联链接和 Anubis 的问题。感谢您的实施!

1 个赞

此主题在 4 天后自动关闭。不再允许新的回复。