Como faço o curl ignorar o proxy? Definir $ NO_PROXY não parece funcionar para mim.
Como faço o curl ignorar o proxy? Definir $ NO_PROXY não parece funcionar para mim.
Respostas:
Presumo que curl esteja lendo o endereço de proxy da variável de ambiente http_proxy
e que a variável deve manter seu valor. Então, em um shell como o bash, export http_proxy='';
antes de um comando (ou em um script de shell) mudar temporariamente seu valor.
(Veja o manual do curl para todas as variáveis que ele olha, sob o ENVIRONMENT
título.)
unset http_proxy
ftp_proxy
. Eu acho que aqui está uma lista completa wiki.archlinux.org/index.php/proxy_settings .
Se você curl
tiver pelo menos a versão 7.19.4
, você pode apenas usar a --noproxy
bandeira.
curl --noproxy "*" http://www.stackoverflow.com
Do manual .
--noproxy
opção não esteja disponível para versões mais antigas do curl (por exemplo, aqueles que são usados em Centos / RHEL 5.x)
--noproxy 127.0.0.1
seria se stackoverflow.com estivesse sendo executado em localhost.
Eu tive o mesmo problema porque defini as variáveis de ambiente http_proxy e https_proxy. Mas, ocasionalmente, eu me conecto a uma rede diferente e preciso ignorar o proxy temporariamente. A maneira mais fácil de fazer isso (sem alterar as variáveis de ambiente) é:
curl --noproxy '*' stackoverflow.com
Do manual: "O único curinga é um único caractere *, que corresponde a todos os hosts e desabilita efetivamente o proxy."
O caractere * é citado de forma que não seja expandido erroneamente pelo shell.
curl --noproxy "*" stackoverflow.com
Isso funciona muito bem, defina a string do proxy para ""
curl -x "" http://www.stackoverflow.com
Adicione suas preferências de proxy em .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Isso faz com que todos os domínios dev e a solicitação da máquina local ignorem o proxy.
.
.
Longo tiro, mas tente definir o proxy para "" (string vazia) que deve substituir todas as configurações de proxy de acordo com a página do manual.
Você deve usar a $no_proxy
variável env (minúsculas). Consulte https://wiki.archlinux.org/index.php/proxy_settings para obter exemplos.
Além disso, houve um bug no curl há muito tempo http://sourceforge.net/p/curl/bugs/185/ , talvez você esteja usando uma versão antiga do curl que inclui esse bug.
Primeiro, listei a configuração de proxy atual com
env | sort | less
(deve ser algo como http_proxy=http://wpad.local.machine.location:port number
)
Então eu tentei definir
export http_proxy=";"
que deu esta mensagem de erro:
curl: (5) Couldn't resolve proxy ';'
Tentou
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
e funcionou!
PS! Lembre-se de definir o proxy http de volta para suas configurações originais com
export http_proxy=http://wpad.local.machine.location:port number
Eu tenho http_proxy
e estou https_proxy
definido. Não quero remover e definir novamente esses ambientes, mas --noproxy '*'
funciona perfeitamente para mim.
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"
}
Resposta fraca, mas: Lembre-se de certificar-se de que nenhum proxy esteja definido em um ~/.curlrc
arquivo (...).
No meu caso (macos, curl 7.54.0
), tenho o proxy abaixo definido com~/.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
Por motivo desconhecido, esta versão do curl
não pode funcionar com variáveis de ambiente NO_PRXY
e no_proxy
corretamente, então eu desmarco as variáveis de ambiente proxy uma por uma, até que para HTTPS_PROXY
e https_proxy
.
unset HTTPS_PROXY
unset https_proxy
ele começa a funcionar e pode se conectar a urls internos
Portanto, eu recomendaria remover todas as variáveis de proxy se você tiver em seu ambiente como solução temporária.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Meu curl não estava ignorando o proxy no Ubuntu 12.04 até que eu configurei a variável de ambiente "no_proxy" (minúsculas). A opção --noproxy não estava disponível.