La opción --preproxy de curl conecta con un proxy SOCKS antes de llegar a un proxy HTTP o HTTPS. Admite esta cadena concreta, no una lista arbitraria de servidores proxy.

La ruta es cliente → endpoint SOCKS → proxy HTTP → destino. Sustituye los dos endpoints de documentación del comando:

curl --preproxy socks5h://203.0.113.10:1080 --proxy http://203.0.113.20:8080 --noproxy '' --connect-timeout 5 --max-time 20 --verbose https://example.com/

El servicio SOCKS debe poder llegar a la dirección y al puerto del proxy HTTP. Después, el proxy HTTP debe aceptar la petición al destino. Si el segundo proxy usa un nombre de host, el primer modo SOCKS determina dónde se resuelve ese nombre; un endpoint numérico evita esa consulta.

Encontrar el salto que falla

Primero confirma una petición a través de cada endpoint por separado; para el salto HTTP usa una prueba de proxy HTTP con límites de tiempo. Aunque ambos funcionen, la ruta combinada aún puede fallar porque el primer proxy no alcance al segundo.

Lee la traza detallada en orden de conexión. Un fallo SOCKS al alcanzar el segundo proxy ocurre antes de que el proxy HTTP decida aceptar o rechazar CONNECT al sitio web. Registra qué negociación falló.

Cuándo ayuda el salto adicional

Esta disposición puede servir cuando un proxy HTTP autorizado es accesible por una ruta SOCKS. También añade otro servicio y otra ruta de red que pueden fallar o añadir demora. Encadenar endpoints de una lista pública de proxies no garantiza fiabilidad ni anonimato y sigue exigiendo confianza en las partes que gestionan la conexión.

--preproxy requiere curl 7.52.0 o posterior; otras aplicaciones pueden no admitir la misma disposición.

Artículos relacionados