微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

某些网站仅在 Linux 上的 Firefox 中返回禁止响应尽管将用户代理更改为 Chrome 有效;共同的原因? 这些工作这些不起作用

如何解决某些网站仅在 Linux 上的 Firefox 中返回禁止响应尽管将用户代理更改为 Chrome 有效;共同的原因? 这些工作这些不起作用

在过去的几年中,我有时会遇到在 Linux 上的 Firefox 中无法运行的网站,我试图了解原因,以便我可以通过不仅仅是模糊的“它不起作用”来通知所有者工作”。

在这当然会发生。虽然大多数 Web 开发人员都在 Firefox 中进行测试,但很少有人会在 Linux 上的 Firefox 中测试他们的产品,有些人真的不在乎。有些只针对 Chrome/Webkit,根本不关心 Firefox。 这不是这个问题的内容

这里有一些东西让我怀疑在看似无关的网站上重复存在一个根本原因,我怀疑一些重复的配置代码或 Web 内容服务库或应用程序会执行此操作。有点可疑。

问题

受影响的网站对于请求的任何资源仅返回带有 403 HTTP 状态代码的纯 HTML 消息;它看起来像这样:

禁止

您无权访问此服务器上的 /。

这些网站可以工作:

  • 操作系统不是 Linux 发行版

  • 浏览器不是 Firefox

示例网站

虽然我通常不会包含指向其他人网站的链接,但在这种情况下我会这样做,因为它是医生办公室的网站。这些网站应始终可供任何患者使用,以处理紧急情况(在这种情况下,当然应拨打国家紧急电话号码)以外的任何紧急情况,以便在需要时提供联系信息。

该网站显示上述症状:https://www.huisartsenpraktijkdehaan.nl/

虽然有更多的网站,但模式总是相同的。

user-agent 字符串

不过,试图找出导致这种情况的真正原因似乎很简单。如果我将 user-agent 字符串更改为 Chrome 的字符串,它会起作用。 所以我的初步结论是,这纯粹是用户代理驱动的错误/功能

一些进一步的测试产生了这个:

这些工作

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.150 Safari/537.36
Foo
Mozilla/5.0 (X11; Ubuntu; x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (X11; Ubuntu; inux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (X11; Ubuntu; Linu x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (X11; Xubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
X11; Ubuntu; Linu
X11;Ubuntu;Linux
11; Ubuntu; Linux

这些不起作用

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
X11; Ubuntu; Linux
x11; ubuntu; linux

假设

在您的请求的 X11; Ubuntu; Linux HTTP 标头中包含文字字符串 user-agent(不区分大小写,但按原样包括空格和分号)会触发破坏行为。

难题

当然,我可以联系这些网站的所有者(最终我会这样做),但有一个问题。他们可能不会在 Linux 上使用 Firefox(因为你会注意到自己的网站被破坏了),如果他们将消息传递给维护或构建网站的人,回复很可能是“它对你有用,并且它对我有用,那个用户必须有一些奇怪的感染病毒的计算机和一个带有 Bonzy Buddy 工具栏的古老浏览器”,或类似的东西。

所以我想要更多弹药,最好是我可以向任何拥有这样网站的人解释的原因。更好的是找出发生这种情况的原因,并从源头上解决它。

那么这里发生了什么?某些 Apache 的 Nginx 模块/配置/插件是由真正讨厌在 Linux 上使用 Firefox 的人编写的?一些奇怪的错误在多个网站上重复出现?

有人认识这种特殊的网站行为吗?

解决方法

我在转发的电子邮件中看到了这篇文章的链接。

ErrorDocument 503 "Your connection was refused"
SetEnvIfNoCase User-Agent "X11; Ubuntu; Linux" bad_user
Deny from env=bad_user

在 .htaccess 中设置为阻止“WP-login bots”,因为我自己使用 Ubuntu,这很容易复制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。