从 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.
一般方式:
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
;) !
your system will start to use the proxy
不完全正确,您将仅在当前 shell 和子 shell 中启动/停止
使用以下
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
。
curl -vv -ksL "https://example.com" -x "http://<proxy>:<port>"
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg
这对我来说非常有效,错误是因为 curl 需要设置代理 Remmember 用你的代理替换代理,我的,“示例”是 http://10.1.1.50:8080/。
根据您的工作场所,您可能还需要为 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
curl -x socks5://username:password@ip:port example.com
-x user:password@proxyhost:port
curl -x GET mysite.com --proxy yourproxy:port