How do I make curl ignore the proxy? Setting $NO_PROXY doesn't seem to work for me.
This question is related to
curl
I assume curl is reading the proxy address from the environment variable http_proxy
and that the variable should keep its value. Then in a shell like bash, export http_proxy='';
before a command (or in a shell script) would temporarily change its value.
(See curl's manual for all the variables it looks at, under the ENVIRONMENT
heading.)
I ran into the same problem because I set the http_proxy and https_proxy environment variables. But occasionally, I connect to a different network and need to bypass the proxy temporarily. The easiest way to do this (without changing the environment variables) is:
curl --noproxy '*' stackoverflow.com
From the manual: "The only wildcard is a single * character, which matches all hosts, and effectively disables the proxy."
The * character is quoted so that it is not erroneously expanded by the shell.
I have http_proxy
and https_proxy
are defined. I don't want to unset and set again those environments but --noproxy '*'
works perfectly for me.
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"
}
My curl was not ignoring the proxy on Ubuntu 12.04 until I set the "no_proxy" (lowercase) environment variable. The --noproxy option was not available.
Long shot but try setting the proxy to "" (empty string) that should override any proxy settings according to the man page.
First, I listed the current proxy setting with
env | sort | less
(should be something like http_proxy=http://wpad.local.machine.location:port number
)
Then I tried setting
export http_proxy=";"
which gave this error message:
curl: (5) Couldn't resolve proxy ';'
Tried
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
and it worked!
PS! Remember to set http-proxy back to its original settings with
export http_proxy=http://wpad.local.machine.location:port number
You should use $no_proxy
env variable (lower-case). Please consult https://wiki.archlinux.org/index.php/proxy_settings for examples.
Also, there was a bug at curl long time ago http://sourceforge.net/p/curl/bugs/185/ , maybe you are using an ancient curl version that includes this bug.
In my case (macos, curl 7.54.0
), I have below proxy set with ~/.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
With unknown reason, this version of curl
can't work with environment variables NO_PRXY
and no_proxy
properly, then I unset the proxy environment variables one by one, until to both HTTPS_PROXY
and https_proxy
.
unset HTTPS_PROXY
unset https_proxy
it starts working and can connect to internal urls
So I would recommend to unset all proxy variables if you have in your environment as temporary solution.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
In case of windows: use curl --proxy "" ...
Lame answer but: Remember to make sure no proxy is set in a ~/.curlrc
file (...).
Add your proxy preferences into .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
This make all dev domains and local machine request ignore the proxy.
This works just fine, set the proxy string to ""
curl -x "" http://www.stackoverflow.com
Source: Stackoverflow.com