![强制 Web 浏览器在本地解析 DNS](https://linux22.com/image/1325439/%E5%BC%BA%E5%88%B6%20Web%20%E6%B5%8F%E8%A7%88%E5%99%A8%E5%9C%A8%E6%9C%AC%E5%9C%B0%E8%A7%A3%E6%9E%90%20DNS.png)
我想知道我是否可以在计算机上本地进行 DNS 解析,而不是在代理服务器上进行解析。换句话说,我可以让 Web 浏览器尊重我的主机文件或类似的东西吗?我尝试network.proxy.socks_remote_dns
在 Firefox 中禁用它,但没有成功。
答案1
不幸的是,事实并非如此。
如果您没有代理服务器,浏览器将执行 DNS 查找(hosts
首先检查您的文件),然后直接连接到返回的 IP 地址。
如果您使用代理服务器,则整个 URL 将被传递给代理服务器,因此代理服务器会提取主机名并执行 DNS 查找。
即使你以某种方式让浏览器进行 DNS 查找,它也会将类似 URL 的 URL 传递http://1.2.3.4/
给代理服务器,而代理服务器的处理方式与使用真实主机名的处理方式不同 - 例如,Host:
在对 Web 服务器的 HTTP 请求中会设置错误的标头,就像你在http://1.2.3.4/
没有使用代理的情况下在浏览器中访问一样。
不幸的是,如果您想覆盖主机名并仍然使用 HTTP 代理服务器,则必须hosts
在代理服务器本身上编辑文件。您也可以通过使用 SOCKS5 代理而不是 HTTP 代理来实现这一点,因为 SOCKS5 是较低级别的 - 但如今找到 SOCKS 代理服务器也非常罕见。