使用cURL执行HTTP请求(使用代理)

我有这个代理地址:125.119.175.48:8909

如何使用curl http://www.example.com这样的cURL执行HTTP请求,但指定我的网络的代理地址?

1278685 次浏览

从# EYZ0:

-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

希望它能更好地解决问题!

作为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

注意,如果你正在使用SOCKS代理,而不是HTTP/HTTPS代理,你将需要使用--socks5开关:

curl --socks5 125.119.175.48:8909 http://example.com/

您还可以使用--socks5-hostname而不是--socks5在代理端解析DNS。

使用以下方法

# EYZ0

192.168.X.X:XX输入代理服务器ip和端口。

-v verbose模式,它将提供更多的细节,包括头和响应。

对于curl,你可以在~/.curlrc(在Windows上是_curlrc)文件中添加proxy值来配置代理,语法如下:

proxy = http://username:password@proxy-host:port

如果只是为一次性命令设置代理,则不需要导出http[s]_proxy shell变量。如。

http_proxy=http://your.proxy.server:port curl http://www.example.com

也就是说,如果我知道我总是要使用代理,我宁愿使用curl -x

与代理认证我使用:

curl -x <protocol>://<user>:<password>@<host>:<port> --proxy-anyauth <url>

因为,我不知道为什么curl不使用/catch http [s] _proxy环境变量。

如果代理正在使用自动代理与PAC文件。我们可以从javascript和PAC URL中找到实际的代理。

如果代理需要认证,我们可以先使用普通的web浏览器访问网站,会弹出认证对话框。认证后,我们可以使用wireshark捕获发送到代理服务器的http包,从http包中,我们可以从http头中获得认证令牌:Proxy-Authorization

然后我们可以设置http_proxy环境变量,并在http头文件中包含认证令牌:Proxy-Authorization

出口http_proxy = # EYZ0

curl -H "Proxy-Authorization: xxxx" http://targetURL

我喜欢用这个来获得我被看到的IP

curl -x http://proxy_server:proxy_port https://api.ipify.org?format=json && echo

希望这能帮助到一些人。

根据您的工作场所,您可能还需要为curl指定-k--insecure选项,以便解决CA证书的潜在问题。

curl -x <myCompanyProxy>:<port> -k -O -L <link to file to download>

总结一下所有提到的答案:

curl -x http://<user>:<pass>@<proxyhost>:<port>/ -o <filename> -L <link>
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg

这对我来说很完美,错误来了,因为curl需要设置 代理< / p >

记得把代理替换成你的代理,我的代理,“例子”是 # EYZ0。< / p >

# EYZ0

# EYZ0

curl -x socks5://username:password@ip:port example.com