假设我想打开一个网站并强制使用 HTTP,即使有 HTTPS 版本可用。例如,我想浏览http://deb.devuan.org/merged/dists/(HTTP),因为 HTTPS 版本
NET::ERR_CERT_*_INVALID
由于该服务器是 CDN 的一部分,因此提供的 SSL 证书无效(证书已过期或服务器名称错误,从而导致各种错误),并且- 我的 HTTPS 请求无论如何都会导致 HTTP 404,因为该网站的 HTTPS 版本提供不同的内容(没有
/merged/dists
)。
是的,从技术上来说,上面描述的是站点配置错误。
是的,我知道浏览 HTTP 网站与浏览具有无效证书的 HTTPS 网站同样不安全。
然而,我能够控制自己的自由Mozilla基于控制台的浏览器(lynx
及其朋友),显然,铬而衍生品只会束缚我的手脚。当然是为了更大的利益。
以下是幕后发生的事情。
每当浏览器发送 HTTP 请求时,它还会添加
Upgrade-Insecure-Requests: 1
标头,导致 HTTP 服务器几乎总是通过响应升级到 HTTPS 连接HTTP 307
。我找不到任何方法来禁用它,只能在代理服务器端删除标头(乌贼):
request_header_access Upgrade-Insecure-Requests deny all
不过,这只对 Debian 品牌有帮助铬,而 Chrome、Opera 和 Vivaldi 则继续出现问题。尽可能关闭安全浏览和 HTTPS 上的 DNS:
跑步Wireshark代理服务器端显示有多个对*.1e100.net
(Google 网络)和*.checkdomain.de
域的 TLS 请求,并且无法在 DNS 服务器端阻止这些请求:可能*.1e100.net
网络的 IP 地址是在 Chromium 代码库中“烘焙”的。
对代理服务器流量的进一步检查表明甚至没有建立任何联系到目标网站 ( deb.devuan.org
),因为浏览器(或其使用的任何 Google 服务)以某种方式知道我请求的网站能提供 HTTPS 服务,并且无论 URL 中的实际协议是什么,都强制使用 HTTPS 连接。
以下是代理的access.log
片段铬(优点):
1634306345.046 62 192.168.0.30 TCP_MISS/200 998 GET http://deb.devuan.org/merged/dists/ - HIER_DIRECT/95.216.15.86 text/html
这是我所看到的铬合金(坏的)和歌剧(丑陋的),分别是:
1634306270.092 55 192.168.0.30 TCP_TUNNEL/200 4584 CONNECT deb.devuan.org:443 - HIER_DIRECT/95.216.15.86 -
1634306169.040 51 192.168.0.30 TCP_TUNNEL/200 4584 CONNECT deb.devuan.org:443 - HIER_DIRECT/95.216.15.86 -
1634306169.086 44 192.168.0.30 TCP_TUNNEL/200 4584 CONNECT deb.devuan.org:443 - HIER_DIRECT/95.216.15.86 -
1634306169.100 54 192.168.0.30 TCP_MISS/204 196 GET http://www.gstatic.com/generate_204 - HIER_DIRECT/173.194.222.94 -
1634306169.131 44 192.168.0.30 TCP_TUNNEL/200 4584 CONNECT deb.devuan.org:443 - HIER_DIRECT/95.216.15.86 -
此外,如果我完全禁止 HTTPS 流量(在代理服务器上),仍然无法打开该站点的 HTTP 版本。浏览器将出现错误ERR_TUNNEL_CONNECTION_FAILED
(对于纯 HTTP)——这并不是因为它无法连接到deb.devuan.org:443
。不,这是因为它尝试回拨电话(回拨至 Google)并失败了。
关于如何在我的网络浏览器中重新启用 HTTP 有什么想法吗?
测试的版本:
- 铬合金:93.0.4577.63
- 歌剧:78.0.4093.184
- 维瓦尔第:4.1.2369.21
答案1
我想要打开一个网站并强制使用 HTTP,即使有 HTTPS 版本可用。
最简单的解决方案可能是使用不强制执行 HTTPS 的浏览器(例如“lynx & friends”)。如果您想要基于 Chromium 且适用于 Windows 和 Linux 的浏览器,我建议您考虑未在 Google 上搜索过的 Chromium(版本 92 或更早)。Debian 的构建文件目前可用这里。
Ungoogled Chromium 92 或更早版本不会强制此网站使用 HTTPS。但请注意,如果您以前访问过 HTTPS 版本,缓存仍会发挥作用(因此在某些情况下,您可能需要明确使用http://
或清除缓存)。
当然,请注意,网站的 HTTP 版本可能不存在,并且/或者 Web 服务器仍可能尝试将您重定向到 HTTPS(最初不是浏览器本身)。
关于如何在我的网络浏览器中重新启用 HTTP 有什么想法吗?
正如前面所指出的,请使用没有这些要求的浏览器。