Cuando una prueba con curl muestra 000 como estado HTTP, no ha obtenido un código de respuesta HTTP final que pueda informar. El sitio no ha enviado un estado HTTP real llamado 000.

Captura también el error

Este ejemplo para un shell POSIX imprime el campo HTTP final, el campo CONNECT y el código de salida del proceso curl:

curl --proxy http://203.0.113.10:8080 --noproxy '' --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect}\n' https://example.com/
result=$?
printf 'curl_exit=%s\n' "$result"

Sustituye el punto de conexión del ejemplo por tu proxy HTTP o por un candidato de la lista de proxies HTTP. Mantén show-error activado: el mensaje de error suele ser la parte más útil. El campo CONNECT es pertinente cuando se usa un túnel; no es un segundo estado final del sitio.

Lee los valores en conjunto

El código de salida exacto y el mensaje ayudan a acotar la causa. Comprueba si el fallo ocurrió al localizar el proxy, conectar con su puerto, negociar el túnel o verificar el destino.

No reduzcas todos los resultados a comprobar un estado

Un script que solo guarda http_code descarta el error de transporte. Guarda también el resultado del proceso y un mensaje de error sin datos sensibles. A la inversa, curl puede completar una transferencia correctamente aunque el sitio devuelva un estado de error, salvo que uses una opción fail adecuada. La respuesta HTTP y el resultado de ejecución del cliente responden a preguntas distintas.

No intentes corregir 000 desactivando la verificación TLS ni añadiendo una cabecera al azar. Primero determina qué operación no llegó a obtener una respuesta final.

Artículos relacionados