Ajudaria as pessoas a responder se você fornecesse mais informações. Em que plataforma você está? De onde curl está obtendo as configurações de proxy? Qual protocolo (HTTP, FTP)? Que tipo de proxy (HTTP, SOCKS)? É um proxy transparente? Você pode mostrar um conjunto exato de comandos que exibem seu problema, junto com sua saída?
Brian Campbell,
Respostas:
54
Presumo que curl esteja lendo o endereço de proxy da variável de ambiente http_proxye 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 ENVIRONMENTtítulo.)
Se não quiser substituir o http_proxy caso a caso, você pode configurar os domínios para ignorar com $ no_proxy e, em seguida, criar um alias para seu curl: alias curl = 'curl --noproxy $ no_proxy'
Sir4ur0n
1
@jdebon Isso não funciona se você tiver um curinga nessa variável de ambiente, pelos motivos descritos abaixo ( stackoverflow.com/a/17710829/2189128 ).
Jeff
@Jeff Não é o meu caso, mas local legal, pode causar algum problema para outras pessoas. Obrigado!
Sir4ur0n
243
Se você curltiver pelo menos a versão 7.19.4, você pode apenas usar a --noproxybandeira.
@RogerNg, se o manual ou uso mudou desde que respondi à pergunta, fique à vontade para atualizar a resposta ou escrever a sua própria. No entanto, no momento da redação, essa resposta estava correta para a pergunta feita. Se sua instalação não está se comportando de acordo com as especificações, esse é outro problema.
Scott Offen
3
curl --noproxy stackoverflow.com stackoverflow.com Este é o elogio correto.
arulraj.net
2
Presumo que essa --noproxyopçã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)
Dmitriusan
2
Com base na documentação, a única maneira com que isso poderia funcionar --noproxy 127.0.0.1seria se stackoverflow.com estivesse sendo executado em localhost.
dannysauer
70
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.
Não é um "tiro longo" - é a maneira correta de fazer isso. De acordo com a minha página de manual do curl (7.15.5, que não mostra uma opção '--noproxy'), -x / - proxy <proxyhost [: porta]> ... Esta opção substitui as variáveis de ambiente existentes que definem o proxy para usar. Se houver uma variável de ambiente definindo um proxy, você pode definir o proxy como "" para substituí-lo.
Rob Cranfill
5
Em '09, tudo era um tiro no escuro.
Louis
5
+1, -x "" faz isso. --noproxy com curinga não funciona com meu bash, mesmo se eu citar o "*"
Eugene
@Eugene: Está funcionando no bash 4.3.11 e deve ser citado.
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.
Eu tenho http_proxye estou https_proxydefinido. Não quero remover e definir novamente esses ambientes, mas--noproxy '*' funciona perfeitamente para mim.
Obrigado. Eu estava coçando a cabeça por que o curl não respeita as regras ambientais locais. E então eu pesquisei o .curlrc e havia algumas configurações adicionais. Adicionado no_proxy lá e funcionou!
n3o
1
No meu caso (macos, curl 7.54.0), tenho o proxy abaixo definido com~/.bash_profile
Por motivo desconhecido, esta versão do curlnão pode funcionar com variáveis de ambiente NO_PRXYe no_proxycorretamente, então eu desmarco as variáveis de ambiente proxy uma por uma, até que para HTTPS_PROXYe 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.
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.
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.)fonte
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ão7.19.4
, você pode apenas usar a--noproxy
bandeira.Do manual .
fonte
--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) é:
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.
fonte
curl --noproxy "*" stackoverflow.com
Isso funciona muito bem, defina a string do proxy para ""
fonte
Adicione suas preferências de proxy em .curlrc
Isso faz com que todos os domínios dev e a solicitação da máquina local ignorem o proxy.
fonte
.
.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.
fonte
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.
fonte
Primeiro, listei a configuração de proxy atual com
(deve ser algo como
http_proxy=http://wpad.local.machine.location:port number
)Então eu tentei definir
que deu esta mensagem de erro:
Tentou
e funcionou!
PS! Lembre-se de definir o proxy http de volta para suas configurações originais com
fonte
Eu tenho
http_proxy
e estouhttps_proxy
definido. Não quero remover e definir novamente esses ambientes, mas--noproxy '*'
funciona perfeitamente para mim.fonte
Resposta fraca, mas: Lembre-se de certificar-se de que nenhum proxy esteja definido em um
~/.curlrc
arquivo (...).fonte
No meu caso (macos,
curl 7.54.0
), tenho o proxy abaixo definido com~/.bash_profile
Por motivo desconhecido, esta versão do
curl
não pode funcionar com variáveis de ambienteNO_PRXY
eno_proxy
corretamente, então eu desmarco as variáveis de ambiente proxy uma por uma, até que paraHTTPS_PROXY
ehttps_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.
fonte
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.
fonte