使用cURL执行HTTP请求(使用PROXY)



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

如何使用类似curl http://www.example.com的cURL执行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.

一般方式:

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

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

请注意,如果您使用的是SOCKS代理,而不是HTTP/HTTPS代理,则需要使用--socks5开关:

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

您也可以使用--socks5-hostname而不是--socks5来解析代理端的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=''"

YOURPROXY:YOURPORT正是这样,您的ip和端口代理:-)。

然后,简单地进行

proxyon

您的系统将开始使用代理,而与之相反的是:

proxyoff

使用以下

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为什么不使用/catchhttp[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需要设置代理

Remmember将代理替换为您的代理,我的代理,"示例"是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>

对于http代理隧道(TLS协议所需),您需要指定-p(又名--proxytunnel)而不是-x。

curl post关于代理

tl;dr代理隧道使用更新的"代理";CONNECT";关键字而不是修改的";获取";

这是节点http代理中间件库所需要的。

只有一次我使用了wget,它开箱即用。

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

如果代理需要身份验证,我们可以首先使用普通的web浏览器访问网站,这将促进身份验证对话框。验证后,我们可以使用wireshark捕获发送到代理服务器的http包,从http包中,我们可以从http头中获取auth令牌:代理授权

然后,我们可以设置http_proxy环境变量,并在http标头中包含auth令牌:proxy Authorization

导出http_proxy=http://proxyserver:port

curl-H"代理授权:xxxx"http://targetURL

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

最新更新