Por qué curl ignora HTTP_PROXY
Comprende la excepción deliberada de curl para HTTP_PROXY, las variables por protocolo, ALL_PROXY y cómo hacer predecible una prueba de proxy con variables de entorno.
Para destinos HTTP, define http_proxy en minúsculas. curl ignora deliberadamente HTTP_PROXY en mayúsculas. En un intérprete POSIX:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Estas asignaciones solo se aplican al comando que las sigue. Sustituye el servicio de escucha del ejemplo por tu proxy; para comparar puntos de acceso públicos, elige un candidato de la lista de proxies HTTP. La variable https_proxy selecciona una ruta para destinos HTTPS; un valor con http:// sigue indicando un proxy HTTP común capaz de establecer un túnel hasta el destino. PowerShell y los intérpretes de comandos de Windows utilizan otra sintaxis de asignación.
Por qué esta forma en mayúsculas es peligrosa
Los entornos CGI pueden convertir las cabeceras de las solicitudes entrantes en variables HTTP_ en mayúsculas. Por tanto, una cabecera llamada Proxy puede convertirse en HTTP_PROXY. Confiar en ella como configuración de salida permitiría que los datos de una solicitud eligieran el proxy. La exigencia de minúsculas de curl evita esa correspondencia; la excepción no se aplica de forma idéntica a HTTPS y a las variables de otros protocolos.
Si cambiar la variable no cambia la ruta
Busca primero una variable específica del protocolo y después la alternativa ALL_PROXY. Una regla NO_PROXY coincidente puede evitar el proxy. También importan las variantes en minúsculas y las definiciones que compiten entre sí. Este bucle para un intérprete de tipo Unix informa de su presencia sin mostrar valores que puedan contener credenciales:
for name in http_proxy HTTP_PROXY https_proxy HTTPS_PROXY all_proxy ALL_PROXY no_proxy NO_PROXY; do
if printenv "$name" >/dev/null; then
printf '%s is set\n' "$name"
fi
doneInspecciona localmente las definiciones enumeradas. Si alguna reaparece, revisa la configuración del intérprete que inicia el proceso, del servicio, del IDE, del contenedor o de CI. La presencia señala posibles entradas; no indica qué valor prevaleció.
Para aislar una solicitud de esas decisiones de proxy, proporciona tanto el punto de acceso como una lista de exclusión vacía:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Para una comparación directa permitida:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Estos comandos ayudan a distinguir una ruta heredada de un fallo de conectividad. Interpreta los resultados de la prueba del proxy etapa por etapa antes de cambiar más ajustes del entorno. Aplica las reglas de variables de curl a curl; el entorno de ejecución de una aplicación puede descubrir y combinar proxies de otra manera.