¿Cómo hago para que curl ignore el proxy? Establecer $ NO_PROXY no parece funcionar para mí.
¿Cómo hago para que curl ignore el proxy? Establecer $ NO_PROXY no parece funcionar para mí.
Respuestas:
Supongo que curl está leyendo la dirección de proxy de la variable de entorno http_proxy
y que la variable debe mantener su valor. Luego, en un shell como bash, export http_proxy='';
antes de que un comando (o en un script de shell) cambie temporalmente su valor.
(Consulte el manual de curl para conocer todas las variables que analiza, debajo del ENVIRONMENT
encabezado).
unset http_proxy
ftp_proxy
. Creo que aquí hay una lista completa de wiki.archlinux.org/index.php/proxy_settings .
Si tu curl
es al menos una versión 7.19.4
, puedes usar la --noproxy
bandera.
curl --noproxy "*" http://www.stackoverflow.com
Del manual .
--noproxy
opción no está disponible para versiones de curl anteriores (por ejemplo, las que se usan en Centos / RHEL 5.x)
--noproxy 127.0.0.1
fue si stackoverflow.com se estaba ejecutando en localhost.
Me encontré con el mismo problema porque configuré las variables de entorno http_proxy y https_proxy. Pero ocasionalmente, me conecto a una red diferente y necesito omitir el proxy temporalmente. La forma más sencilla de hacer esto (sin cambiar las variables de entorno) es:
curl --noproxy '*' stackoverflow.com
Del manual: "El único comodín es un solo carácter *, que coincide con todos los hosts y deshabilita efectivamente el proxy".
El carácter * se cita para que el shell no lo expanda erróneamente.
curl --noproxy "*" stackoverflow.com
Esto funciona bien, establezca la cadena de proxy en ""
curl -x "" http://www.stackoverflow.com
Agregue sus preferencias de proxy en .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Esto hace que todos los dominios de desarrollo y las solicitudes de la máquina local ignoren el proxy.
.
.
Posibilidad remota, pero intente configurar el proxy en "" (cadena vacía) que debería anular cualquier configuración de proxy de acuerdo con la página del manual.
Debería utilizar la $no_proxy
variable env (en minúsculas). Consulte https://wiki.archlinux.org/index.php/proxy_settings para ver ejemplos.
Además, hubo un error en curl hace mucho tiempo http://sourceforge.net/p/curl/bugs/185/ , tal vez estés usando una versión antigua de curl que incluye este error.
Primero, enumeré la configuración de proxy actual con
env | sort | less
(debería ser algo como http_proxy=http://wpad.local.machine.location:port number
)
Entonces intenté configurar
export http_proxy=";"
que dio este mensaje de error:
curl: (5) Couldn't resolve proxy ';'
Intentó
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
¡Y funcionó!
¡PD! Recuerde volver a configurar http-proxy a su configuración original con
export http_proxy=http://wpad.local.machine.location:port number
Yo tengo http_proxy
y estoy https_proxy
definido. No quiero desarmar y volver a configurar esos entornos, pero --noproxy '*'
funciona perfectamente para mí.
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"
}
Respuesta coja pero: recuerde asegurarse de que no haya ningún proxy configurado en un ~/.curlrc
archivo (...).
En mi caso (macos, curl 7.54.0
), tengo el siguiente conjunto de proxy con~/.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 una razón desconocida, esta versión de curl
no puede funcionar con variables de entorno NO_PRXY
y no_proxy
correctamente, luego desactivo las variables de entorno de proxy una por una, hasta que ambas HTTPS_PROXY
y https_proxy
.
unset HTTPS_PROXY
unset https_proxy
comienza a funcionar y puede conectarse a URL internas
Por lo tanto, recomendaría desarmar todas las variables proxy si las tiene en su entorno como solución temporal.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Mi curl no estaba ignorando el proxy en Ubuntu 12.04 hasta que configuré la variable de entorno "no_proxy" (minúsculas). La opción --noproxy no estaba disponible.