如何使用 curl 传递空白代理 username/password?

How do I pass a blank proxy username/password using curl?

我在 Mac El Capitan 上使用 bash shell。如何使用 curl 为代理服务器传递空白 username/password?我试过这个

localhost:tmp davea$ curl http://www.google.com --proxy localhost:9050 --proxy-user "":""
514 Authentication required.

我是 运行 我机器上的一个 tor 守护进程,使用这个命令

tor --CookieAuthentication 0 --HashedControlPassword "" --ControlPort 9050 --SocksPort 50001

而且我可以通过 Telnet 连接而无需像这样输入密码

localhost:tmp davea$ telnet localhost 9050
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
AUTHENTICATE
250 OK

所以我知道我的密码至少是正确的。

请注意,当从命令行使用 curl 时,--proxy 选项专门用于 HTTP 代理,Tor 不是,它是 SOCKS 代理。

为了解决这个问题,使用 Nehal 在评论中建议的 SOCKS 代理(你可能想使用 --socks5-hostname 来代替,这样 DNS 解析也会通过 Tor 执行,否则你在本地泄漏 DNS 请求)。

所以你的电话应该是这样的:

curl http://www.google.com -L --socks5-hostname localhost:50001

旁注:控制端口 (9050) 仅用于向控制器传送命令。此端口根本不用于代理请求。