Ayudaría a la gente a responderte si proporcionas más información. ¿En qué plataforma estás? ¿De dónde obtiene curl la configuración del proxy? ¿Qué protocolo (HTTP, FTP)? ¿Qué tipo de proxy (HTTP, SOCKS)? ¿Es un proxy transparente? ¿Puede mostrar un conjunto exacto de comandos que presenten su problema, junto con su salida?
Brian Campbell
Respuestas:
54
Supongo que curl está leyendo la dirección de proxy de la variable de entorno http_proxyy 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 ENVIRONMENTencabezado).
Si no desea anular el http_proxy caso por caso, puede configurar los dominios para ignorarlos con $ no_proxy, y luego alias su curl: alias curl = 'curl --noproxy $ no_proxy'
Sir4ur0n
1
@jdebon Eso no funciona si tiene un comodín en esa variable de entorno, por las razones que se describen a continuación ( stackoverflow.com/a/17710829/2189128 ).
Jeff
@Jeff No es mi caso, pero un buen lugar, podría causar algún problema a otras personas. ¡Gracias!
Sir4ur0n
243
Si tu curles al menos una versión 7.19.4, puedes usar la --noproxybandera.
@RogerNg, si el manual o el uso ha cambiado desde que respondí la pregunta, no dude en actualizar la respuesta o escribir la suya propia. Sin embargo, en el momento de escribir este artículo, esta respuesta era precisa para la pregunta formulada. Si su instalación no se comporta de acuerdo con las especificaciones, ese es otro problema por completo.
Scott Offen
3
curl --noproxy stackoverflow.com stackoverflow.com Este es el elogio correcto.
arulraj.net
2
Supongo que esa --noproxyopción no está disponible para versiones de curl anteriores (por ejemplo, las que se usan en Centos / RHEL 5.x)
Dmitriusan
2
Según la documentación, la única forma en que esto podría haber funcionado --noproxy 127.0.0.1fue si stackoverflow.com se estaba ejecutando en localhost.
dannysauer
70
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.
//, Este es el único que muestra un ejemplo con un valor con un valor DNS que comienza con ..
Nathan Basanese
No confundir con la variable env no_proxy (con guión bajo)
Simon Perepelitsa
7
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.
No es una "posibilidad remota", es la forma correcta de hacerlo. De acuerdo con la página de manual de mi curl (7.15.5, que no muestra una opción '--noproxy'), -x / - proxy <proxyhost [: puerto]> ... Esta opción anula las variables de entorno existentes que configuran el proxy para utilizar. Si hay una variable de entorno que configura un proxy, puede establecer el proxy en "" para anularlo.
Rob Cranfill
5
En el '09, todo era una posibilidad remota.
Louis
5
+1, -x "" lo hace. --noproxy con comodín no funciona con mi bash incluso si cito el "*"
Eugene
@Eugene: Está funcionando en bash 4.3.11 y debe estar entre comillas.
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.
Yo tengo http_proxyy estoy https_proxydefinido. No quiero desarmar y volver a configurar esos entornos, pero--noproxy '*' funciona perfectamente para mí.
Gracias. Me había estado rascando la cabeza por qué curl no respeta las variables ambientales locales. Y luego busqué el .curlrc y había algunas configuraciones adicionales. ¡Agregó no_proxy allí y funcionó!
n3o
1
En mi caso (macos, curl 7.54.0), tengo el siguiente conjunto de proxy con~/.bash_profile
Por una razón desconocida, esta versión de curlno puede funcionar con variables de entorno NO_PRXYy no_proxycorrectamente, luego desactivo las variables de entorno de proxy una por una, hasta que ambas HTTPS_PROXYy 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.
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.
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).fuente
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ón7.19.4
, puedes usar la--noproxy
bandera.Del manual .
fuente
--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:
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.
fuente
curl --noproxy "*" stackoverflow.com
Esto funciona bien, establezca la cadena de proxy en ""
fuente
Agregue sus preferencias de proxy en .curlrc
Esto hace que todos los dominios de desarrollo y las solicitudes de la máquina local ignoren el proxy.
fuente
.
.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.
fuente
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.
fuente
Primero, enumeré la configuración de proxy actual con
(debería ser algo como
http_proxy=http://wpad.local.machine.location:port number
)Entonces intenté configurar
que dio este mensaje de error:
Intentó
¡Y funcionó!
¡PD! Recuerde volver a configurar http-proxy a su configuración original con
fuente
Yo tengo
http_proxy
y estoyhttps_proxy
definido. No quiero desarmar y volver a configurar esos entornos, pero--noproxy '*'
funciona perfectamente para mí.fuente
Respuesta coja pero: recuerde asegurarse de que no haya ningún proxy configurado en un
~/.curlrc
archivo (...).fuente
En mi caso (macos,
curl 7.54.0
), tengo el siguiente conjunto de proxy con~/.bash_profile
Por una razón desconocida, esta versión de
curl
no puede funcionar con variables de entornoNO_PRXY
yno_proxy
correctamente, luego desactivo las variables de entorno de proxy una por una, hasta que ambasHTTPS_PROXY
yhttps_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.
fuente
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.
fuente