如何使 curl 忽略代理?

如何使 curl 忽略代理? 设置 $NO _ PROXY 似乎对我不起作用。

354754 次浏览

尽管希望渺茫,但是请尝试将代理设置为“”(空字符串) ,以根据手册页覆盖任何代理设置。

我假设 curl 正在从环境变量 http_proxy读取代理地址,并且变量应该保持其值。然后,在 bash 这样的 shell 中,命令之前的 export http_proxy='';(或 shell 脚本中的 export http_proxy='';)将临时更改其值。

(在 ENVIRONMENT标题下,参见 curl 的手册了解它所查看的所有变量。)

首先,我列出了当前的代理设置

env | sort | less

(应该类似于 http_proxy=http://wpad.local.machine.location:port number)

然后我试着设置

export http_proxy=";"

它给出了这个错误消息:

curl: (5) Couldn't resolve proxy ';'

试过了

export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55

成功了!

请记住使用

export http_proxy=http://wpad.local.machine.location:port number

如果您的 curl至少是版本 7.19.4,您可以只使用 --noproxy标志。

curl --noproxy '*' http://www.stackoverflow.com

来自 手动操作

我也遇到了同样的问题,因为我设置了 http _ xy 和 https _ xy 环境变量。但有时,我连接到不同的网络,需要暂时绕过代理。最简单的方法(不改变环境变量)是:

curl --noproxy '*' stackoverflow.com

手册: “唯一的通配符是一个 * 字符,它匹配所有主机,并有效地禁用代理。”

引用 * 字符是为了不让 shell 错误地展开它。

我的 curl 并没有忽略 Ubuntu 12.04上的代理,直到我设置了“ no _ xy”(小写)环境变量。无法使用—— noproxy 选项。

您应该使用 $no_proxy env 变量(小写)。

而且,很久以前 http://sourceforge.net/p/curl/bugs/185/中的 curl 有一个 bug,也许你正在使用一个包含这个 bug 的古老的 curl 版本。

我有 http_proxyhttps_proxy的定义。我不想取消和设置再次这些环境 但是 --noproxy '*'工程完美为我。

curl --noproxy '*' -XGET 172.17.0.2:9200
{
"status" : 200,
"name" : "Medusa",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.5.0",
"build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",
"build_timestamp" : "2015-03-23T14:30:58Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}

蹩脚的回答,但是: 记住要确保在 ~/.curlrc文件(...)中没有设置代理。

将代理首选项添加到 . curlrc 或 _ curlrc (windows)

proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1

这使得所有的开发域和本地机器请求忽略代理。

请参见同一页上的 代理人手册页和 noxy 手册页。

这个工作正常,将代理字符串设置为“”

curl -x "" http://www.stackoverflow.com

在我的例子中(macos,curl 7.54.0) ,我使用 ~/.bash_profile设置了以下代理

$ env |grep -i proxy |cut -d = -f1|sort
FTP_PROXY
HTTPS_PROXY
HTTP_PROXY
NO_PROXY
PROXY
ftp_proxy
http_proxy
https_proxy
no_proxy

由于未知的原因,这个版本的 curl无法正确使用环境变量 NO_PRXYno_proxy,于是我逐个取消代理环境变量的设置,直到同时使用 HTTPS_PROXYhttps_proxy

unset HTTPS_PROXY
unset https_proxy

它开始工作,可以连接到内部网址

因此,如果您的环境中有临时解决方案,我建议取消所有代理变量的设置。

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY

对于窗口: 使用 curl --proxy "" ...