如何让curl忽略代理?
如何让curl忽略代理? 设置$ NO_PROXY似乎不适用于我。
我假设curl正在从环境variableshttp_proxy
读取代理地址,并且该variables应该保留它的值。 然后在像bash这样的shell中, export http_proxy='';
在一个命令(或在一个shell脚本)之前会暂时改变它的值。
(在ENVIRONMENT
标题下查看所有variables的curl手册。)
如果你的curl
至less是7.19.4
版,你可以使用--noproxy
标志。
curl --noproxy "*" http://www.stackoverflow.com
从手册 。
我遇到了同样的问题,因为我设置了http_proxy和https_proxy环境variables。 但偶尔,我连接到不同的networking,需要暂时绕过代理。 最简单的方法(不更改环境variables)是:
curl --noproxy '*' stackoverflow.com
从手册: “唯一的通配符是一个单一的*字符,它匹配所有主机,并有效地禁用代理。”
*字符被引用,以便它不会被shell错误地扩展。
长枪,但尝试设置代理为“”(空string),应该覆盖任何代理设置根据手册页。
我有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" }
首先,我列出了当前的代理设置
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
你应该使用$no_proxy
envvariables(小写)。 例如,请查阅https://wiki.archlinux.org/index.php/proxy_settings 。
此外,很久以前,curl就有一个bug http://sourceforge.net/p/curl/bugs/185/ ,也许你正在使用一个包含这个bug的古curl版本。
将您的代理首选项添加到.curlrc中
proxy = 1.2.3.4 noproxy = .dev,localhost,127.0.0.1
这使所有开发域和本地机器请求忽略代理。
在我设置“no_proxy”(小写)环境variables之前,我的curl并没有忽略Ubuntu 12.04上的代理。 –noproxy选项不可用。
跛脚答案,但是:请记住确保没有代理设置在~/.curlrc
文件(…)。