我正在使用 Chrome、FoxyProxy 访问 http 资源,没有任何问题。代理被定义为socks5
标准端口1080
。
我尝试使用 cURL 访问相同的资源(出于隐私原因,实际 URL 已更改):
$ curl -vvv -socks5 SOCKS_SERVER:1080 -X GET "THE_URL_FROM_BROWSER"
并得到:
* About to connect() to SOCKS_SERVER port 1080 (#0)
* Trying IP... connected
* Connected to SOCKS_SERVER (IP) port 1080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: SOCKS_SERVER:1080
> Accept: */*
>
* Empty reply from server
* Connection #0 to host SOCKS_SERVER left intact
* Connection #0 seems to be dead!
* Closing connection #0
* About to connect() to URL_HOST port 80 (#0)
* Trying SOME_IP...
永远不会有回应。
知道为什么 cURL 无法访问由 FoxyProxy 访问的相同资源吗?
答案1
我得到相同的结果,并查看 strace 输出,它尝试直接连接到 URL_HOST。
但是如果我使用
curl -x socks5://SOCKS_SERVER:1080 "THE_URL_FROM_BROWSER"
它确实按预期工作(使用socks4a或socks5h让代理解析主机名,如果支持的话)