![通过代理进行 DNS 解析](https://linux22.com/image/1486185/%E9%80%9A%E8%BF%87%E4%BB%A3%E7%90%86%E8%BF%9B%E8%A1%8C%20DNS%20%E8%A7%A3%E6%9E%90.png)
我使用了一个非常反复无常的代理(squid),似乎只允许使用特定用户代理发出的 http 请求。
从 Google Chrome获取时google.com
,我可以在 WireSharc 上看到HTTP GET
。但是,wget
它首先尝试通过默认 DNS 服务器解析 DNS,但默认 DNS 服务器从不响应。
我怎样才能创建wget
甚至git
使用代理来代替直接 DNS 查询?
答案1
我怎样才能让 wget 甚至 git 使用代理而不是直接 DNS 查询?
设置代理环境变量,它将直接执行此操作:
export http_proxy='http://proxy.contoso.com:3128/'
wget http://www.example.net/
答案2
没有机制来指定代理应尝试特定主机的特定 IP 地址。您可以将 URL 从以下位置更改为:http://example.com/mypage到http://33.33.33.33/我的页面,但代理服务器不知道要请求的主机名。现代网络 (HTTP/1.1) 依赖于请求中始终存在的 Host 标头,从而允许一个网络服务器为由其主机名标识的多个站点提供服务。
最好的办法是将代理服务器配置为使用您选择的 DNS 解析器。只有当您使用您控制的本地代理服务器时才有可能。