如何使curl忽略代理?设置$ NO_PROXY对我来说似乎不起作用.
如果您的curl
版本至少是版本7.19.4
,则可以使用该--noproxy
标志.
curl --noproxy "*" http://www.stackoverflow.com
从手册.
我遇到了同样的问题,因为我设置了http_proxy和https_proxy环境变量.但偶尔,我连接到不同的网络,需要暂时绕过代理.最简单的方法(不更改环境变量)是:
curl --noproxy '*' stackoverflow.com
从手册:"唯一的通配符是单个*字符,它匹配所有主机,并有效地禁用代理."
引用*字符,以便shell不会错误地扩展它.
我假设curl正在从环境变量中读取代理地址http_proxy
,并且变量应保持其值.然后在像bash这样的shell中,export http_proxy='';
在命令(或shell脚本)之前临时更改其值.
(请参阅curl的手册,了解它在ENVIRONMENT
标题下看到的所有变量.)
正常工作,将代理字符串设置为“”
curl -x "" http://www.stackoverflow.com
将代理首选项添加到.curlrc
proxy = 1.2.3.4 noproxy = .dev,localhost,127.0.0.1
这使得所有开发域和本地计算机请求都忽略了代理。
远景,但尝试将代理设置为""(空字符串),应根据手册页覆盖任何代理设置.
首先,我列出了当前的代理设置
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
它工作了!
PS!请记住将http-proxy设置回其原始设置
export http_proxy=http://wpad.local.machine.location:port number
我http_proxy
和https_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" }
您应该使用$no_proxy
env变量(小写)。有关示例,请查阅https://wiki.archlinux.org/index.php/proxy_settings。
另外,很久以前在curl上就有一个bug,http://sourceforge.net/p/curl/bugs/185/,也许您正在使用包含此bug的古老curl版本。