2009-04-29 26 views
59

¿Cómo hago que curl ignore el proxy? Configuración $ NO_PROXY no parece funcionar para mí.¿Cómo hago que curl ignore el proxy?

+0

Ayudaría a la gente a responderle si proporcionara más información. ¿En qué plataforma estás? ¿De dónde está curl obtener la configuración de proxy? ¿Qué protocolo (HTTP, FTP)? ¿Qué tipo de proxy (HTTP, SOCKS)? ¿Es un proxy transparente? ¿Puedes mostrar un conjunto exacto de comandos que muestren tu problema, junto con su resultado? –

Respuesta

29

Supongo que curl está leyendo la dirección 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 un comando (o en un script de shell) cambiaría temporalmente su valor.

(Consulte el manual del rizo para todas las variables que se ve en, bajo el título ENVIRONMENT.)

+10

O simplemente 'desarmado http_proxy' – joelittlejohn

+0

Una nota: hay otras variables * _proxy env como' ftp_proxy'. Creo que aquí hay una lista completa https://wiki.archlinux.org/index.php/proxy_settings. – Dmitriusan

+0

Si no desea sobrescribir el http_proxy caso por caso, puede configurar los dominios para ignorar con $ no_proxy y luego alias su curl: alias curl = 'curl --noproxy $ no_proxy' – jdebon

5

Disparo lejano, pero intente configurar el proxy en "" (cadena vacía) que debe anular las configuraciones proxy de acuerdo con la página man.

+2

No es una "posibilidad remota": es la forma correcta de hacerlo. De acuerdo con la página del manual de mi curl (7.15.5, que no muestra una opción '--noproxy'), -x/- proxy ... Esta opción anula las variables de entorno existentes que establece proxy para usar Si hay una variable de entorno que establece un proxy, puede establecer el proxy en "" para anularlo. –

+4

En '09, todo era una posibilidad remota. – Louis

+3

+1, -x "" lo hace. --noproxy con comodín no funciona con mi bash incluso si cito el "*" – Eugene

4

En primer lugar, hice una lista de la configuración con

env | sort | less 

servidor actual (debe ser algo así como http_proxy=http://wpad.local.machine.location:port number)

Entonces intentado fijar

export http_proxy=";" 

que dio este mensaje de error:

curl: (5) Couldn't resolve proxy ';' 

Probamos

export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55 

y funcionó!

PD! Recuerde que debe establecer http-proxy volver a su configuración original con

export http_proxy=http://wpad.local.machine.location:port number 
110

Si su curl es al menos la versión 7.19.4, usted podría usar la bandera --noproxy.

curl --noproxy "*" http://www.stackoverflow.com 

A partir del manual.

+3

rizo: opción --noproxy: es desconocido –

+0

@RogerNg, si el manual o el uso ha cambiado desde que contesté la pregunta, no dude en actualizar la respuesta o escribir la suya. Sin embargo, al momento de escribir, 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. –

+0

@RogerNg, después de echar un vistazo a algunas de sus preguntas publicadas recientemente aquí en stackoverflow, puede confundir curl con PHP cUrl, que no es lo mismo. –

52

Me encontré con el mismo problema porque establecí las variables de entorno http_proxy y https_proxy. Pero ocasionalmente, me conecto a una red diferente y necesito pasar por alto el proxy temporalmente. La forma más sencilla de hacerlo (sin cambiar las variables de entorno) es:

curl --noproxy '*' stackoverflow.com 

Desde el manual: "El único comodín es un solo carácter *, que coincide con todos los hosts, y efectivamente desactiva el proxy"

El carácter * se cita para que el caparazón no lo expanda erróneamente.

+9

nota para los usuarios de furture: Bash expande los archivos locales si no cito el * so 'curl --noproxy" * "stackoverflow.com' – Adam

+0

Muy útil y vale la pena señalar que esto también parece ignorar el proxy (SOCKS) que he configurado en mi archivo .curlrc – MatzFan

+1

Esta es la respuesta que me ha funcionado al usar Curl versión 7.22.0 – xpereta

-1

Mi curl no ignoraba el proxy en Ubuntu 12.04 hasta que configuré la variable de entorno "no_proxy" (minúscula). La opción --noproxy no estaba disponible.

5

Tengo http_proxy y https_proxy se definen. No quiero desarmar y configurar nuevamente esos entornos pero--noproxy '*' me funciona a la perfección.

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" 
} 
0

respuesta cojo, pero: Recuerde que debe asegurarse de que ningún proxy está configurado en un archivo ~/.curlrc (...).

3

añaden sus preferencias de proxy en .curlrc

proxy = 1.2.3.4 
noproxy = .dev,localhost,127.0.0.1 

Esta hacen todos los dominios dev y solicitud de máquina local ignoran el proxy.

Cuestiones relacionadas