Answers:
一般方式:
export http_proxy=http://your.proxy.server:port/
然后,您可以通过来自(许多)应用程序的代理进行连接。
并且,按照下面的注释,对于https:
export https_proxy=https://your.proxy.server:port/
来自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版本(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
似乎对我来说很好。该--proxy
选项在某种程度上是否逊于--socks5
使用socks5代理?
--proxy
现在可能是您想要的,但是并不总是支持它。另请注意,分别在连接到代理之前和之后执行socks5://
和socks5h://
解析主机名(DNS)。
作为间隔之间的一种补充,另一个好主意是将其添加到您的.bashrc中,这样您就可以从非代理环境切换到代理环境:
alias proxyon="export http_proxy='http://YOURPROXY:YOURPORT';export https_proxy='http://YOURPROXY:YOURPORT'"
alias proxyoff="export http_proxy='';export https_proxy=''"
在您的PROXY:YOURPORT就是这样,您的IP和端口代理:-)。
然后,只需做
proxyon
您的系统将开始使用代理,与之相反的是:
proxyoff
使用以下
curl -I -x 192.168.X.X:XX http://google.com
192.168.X.X:XX
把您的代理服务器的IP和端口。
-v
详细模式将提供更多详细信息,包括标题和响应。
通过具有身份验证的代理,我使用:
curl -x <protocol>://<user>:<password>@<host>:<port> --proxy-anyauth <url>
因为,我不知道为什么curl不使用/捕获http [s] _proxy环境变量。
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg
这对我来说效果很好,出现错误是因为curl需要设置代理
请记住,用您的代理替换该代理,我的“示例”为 http://10.1.1.50:8080/。
如果代理使用带有PAC文件的自动代理。我们可以从PAC URL中的javascript中找到实际的代理。
如果代理需要身份验证,我们可以首先使用普通的网络浏览器访问网站,这将促进身份验证对话框。认证之后,我们可以使用wireshark捕获从http包发送到代理服务器的http包,我们可以从http标头获取auth令牌: Proxy-Authorization
然后,我们可以设置http_proxy环境变量,还可以在http标头中包含auth令牌: Proxy-Authorization
导出http_proxy = http:// proxyserver:port
curl -H“代理授权:xxxx” http:// targetURL