curl实用程序中有一个
--resolve
选项,允许您添加 DNS 条目并在调用主机时强制使用特定 IP 地址。
从 7.21.3 版本开始,cURL 允许指定 IP 地址,因此 伪造请求的主机名。
$curl --resolve www.example.com:80:127.0.0.1 http://www.example.com/
--resolve 开关允许您告诉curl 请求哪个地址 当它解析给定的主机名时。在上面的代码片段中,cURL 使用 127.0.0.1 (localhost),而不是通过 DNS 解析 www.example.com。
在没有 http 代理的情况下使用此选项可以正常工作,DNS 条目可在缓存中找到。
问题是我想与curl
--proxy
参数同时使用此选项。设置最后一个参数后,调用同一主机时找不到 DNS 条目。
$ curl --proxy 1.2.3.4:80 --resolve www.example.com:80:127.0.0.1 http://www.example.com/
知道如何解决这个问题吗?
我知道代理正在使用自己的 DNS 缓存,我们无法更改它,但也许我错了?
如果您有权访问它,您还可以修改代理服务器中的/etc/hosts。