【发布时间】:2012-03-15 18:33:22
【问题描述】:
我有这个代理地址:125.119.175.48:8909
如何使用 cURL(如 curl http://www.example.com)执行 HTTP 请求,但指定我的网络的代理地址?
【问题讨论】:
我有这个代理地址:125.119.175.48:8909
如何使用 cURL(如 curl http://www.example.com)执行 HTTP 请求,但指定我的网络的代理地址?
【问题讨论】:
来自man curl:
-x, --proxy <[protocol://][user:password@]proxyhost[:port]>
Use the specified HTTP proxy.
If the port number is not specified, it is assumed at port 1080.
【讨论】:
-x user:password@proxyhost:port
curl -x GET mysite.com --proxy yourproxy:port
一般方式:
export http_proxy=http://your.proxy.server:port/
然后您可以通过(许多)应用程序的代理进行连接。
并且,根据下面的评论,对于 https:
export https_proxy=https://your.proxy.server:port/
【讨论】:
上述解决方案可能不适用于我自己尝试的某些 curl 版本(curl 7.22.0)。但对我有用的是:
curl -x http://proxy_server:proxy_port --proxy-user username:password -L http://url
希望它能更好地解决问题!
【讨论】:
[1] 4812
请注意,如果您使用的是 SOCKS 代理,而不是 HTTP/HTTPS 代理,则需要使用 --socks5 开关:
curl --socks5 125.119.175.48:8909 http://example.com/
您也可以使用--socks5-hostname 代替--socks5 在代理端解析DNS。
【讨论】:
--socks5-hostname 可以。
curl https://api.ipify.org --proxy socks5://189.100.246.182:37339 似乎对我来说很好用。使用 socks5 代理时,--proxy 选项在某种程度上是否不如 --socks5?
--proxy 现在可能是您想要的,但并不总是得到支持。另请注意,socks5:// 和 socks5h:// 分别在连接到代理之前和之后执行主机名 (DNS) 解析。
作为对 airween 的补充,另一个好主意是将其添加到您的 .bashrc 中,这样您就可以从非代理环境切换到代理环境:
alias proxyon="export http_proxy='http://YOURPROXY:YOURPORT';export https_proxy='http://YOURPROXY:YOURPORT'"
alias proxyoff="export http_proxy='';export https_proxy=''"
WHERE YOURPROXY:YOURPORT 就是你的 ip 和端口代理 :-)。
然后,简单地做
proxyon
您的系统将开始使用代理,而恰恰相反:
proxyoff
【讨论】:
unset http_prox ;) !
使用下面的
curl -I -x 192.168.X.X:XX http://google.com
192.168.X.X:XX输入你的代理服务器ip和端口。
-v 详细模式它将提供更多详细信息,包括标头和响应。
【讨论】:
我喜欢使用它来获取我所在的 IP
curl -x http://proxy_server:proxy_port https://api.ipify.org?format=json && echo
希望这对某人有所帮助。
【讨论】:
对于curl,您可以通过添加proxy 值在~/.curlrc(Windows 上为_curlrc)文件中配置代理,语法为:
proxy = http://username:password@proxy-host:port
【讨论】:
curl -I "https://www.google.com" -x 1.1.1.1:8080
【讨论】:
只是总结所有提到的好答案:
curl -x http://<user>:<pass>@<proxyhost>:<port>/ -o <filename> -L <link>
【讨论】:
我使用带有身份验证的代理:
curl -x <protocol>://<user>:<password>@<host>:<port> --proxy-anyauth <url>
因为,我不知道为什么 curl 不使用/捕获 http[s]_proxy 环境变量。
【讨论】:
如果您只是为一次性命令设置代理,则不需要导出 http[s]_proxy shell 变量。例如
http_proxy=http://your.proxy.server:port curl http://www.example.com
也就是说,如果我知道我总是要使用代理,我会更喜欢 curl -x。
【讨论】:
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg
这对我来说非常有效,错误是因为 curl 需要设置 代理
记住用你的代理替换代理,我的,“示例”是 http://10.1.1.50:8080/.
【讨论】:
curl -vv -ksL "https://example.com" -x "http://<proxy>:<port>"
【讨论】:
根据您的工作场所,您可能还需要为 curl 指定 -k 或 --insecure 选项,以便解决 CA 证书的潜在问题。
curl -x <myCompanyProxy>:<port> -k -O -L <link to file to download>
【讨论】:
如果代理使用带有 PAC 文件的自动代理。我们可以从 PAC URL 的 javascript 中找到实际的代理。
如果代理需要身份验证,我们可以先使用普通的网络浏览器访问将促进身份验证对话框的网站。鉴权后,我们可以使用wireshark捕获发送给代理服务器的http包,从http包中,我们可以从http头获取auth token:Proxy-Authorization
然后我们可以设置 http_proxy 环境变量,并在 http 标头中包含身份验证令牌:Proxy-Authorization
导出 http_proxy=http://proxyserver:port
curl -H "代理授权: xxxx" http://targetURL
【讨论】: