Respuesta rápida
¿Qué significa 401 Unauthorized vs 407 con un proxy?
Un 401 Unauthorized viene del sitio web; un 407 viene del proxy. Si haces scraping a través de proxies residenciales CrawlRelay y obtienes un 401, el proxy te aceptó y el sitio web está pidiendo su propio login o clave API. Las credenciales del proxy no ayudan ahí. Corrige el 407 en la URL del proxy y maneja el 401 según las reglas del sitio para su contenido protegido.
401 Unauthorized vs 407 en pocas palabras
| Error | 401 Unauthorized vs 407 |
|---|---|
| Tipo | Código de estado HTTP (4xx, error del cliente) |
| Enviado por | El sitio web objetivo, nunca el proxy |
| Definido en | RFC 9110, section 15.5.2 (compare 407: section 15.5.8) |
| ¿Reintentar? | No. Un 401 solicita credenciales para el sitio web en sí |
| Primera comprobación | Revisa qué servidor lo envió: el sitio web (401) o el proxy (407) |
¿Qué significa 401 Unauthorized vs 407?
El RFC 9110 empareja ambos códigos. Un 401 lleva un encabezado WWW-Authenticate y pide credenciales para el servidor origen. Un 407 lleva un encabezado Proxy-Authenticate y pide credenciales para el proxy. Las respuestas van en distintos encabezados también: Authorization para el sitio y Proxy-Authorization para el proxy.
Confundirlos es común porque ambos mencionan 'autenticación'. La prueba más rápida es el código de estado: 401 significa que pasaste el proxy.
¿Cómo se ve a 401 en Python, curl, Node.js y navegadores?
El mismo fallo se muestra de forma diferente en cada herramienta. Estos son los mensajes que debes buscar en tus registros:
- Python requests:
status_code == 401con un encabezadoWWW-Authenticate(sitio web) contra unProxyErrorque menciona 407 (proxy) - curl:
HTTP/2 401luego de unCONNECTexitoso (sitio web) contra unCONNECT tunnel failed, response 407(proxy) - APIs: un cuerpo JSON como
{"message": "Unauthorized"}o un mensaje de token inválido
¿Qué causa a 401?
Lo más probable al principio:
- La página o API necesita login o clave. El sitio, no el proxy, está solicitando.
- Credenciales del proxy en lugar incorrecto, como un encabezado
Authorizationdestinado al proxy que el sitio rechaza. - Cookie de sesión o token expirado en un flujo de varios pasos.
- Token ligado a una IP o región, así que una nueva salida lo invalida.
¿Cómo diagnostico a 401 paso a paso?
- Confirma el código: 401 es el sitio, 407 es el proxy.
- Ejecuta la prueba curl abajo. Si ves
HTTP/1.1 200 Connection establishedantes del 401, el proxy está bien. - Verifica si la misma URL necesita login en un navegador normal.
- En un flujo de varios pasos, revisa si el 401 comienza cuando cambia la IP de salida.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL¿Cómo soluciono a 401?
- Para problemas de proxy (407), coloca las credenciales en la URL del proxy o en la configuración del proxy del cliente, nunca en un encabezado
Authorization. - Para una API pública que necesita clave, regístrate en el sitio y envía su clave según lo documentado.
- Para sesiones ligadas a una IP, usa sesión sticky para todo el flujo.
- Para contenido protegido por login, revisa los términos del sitio antes de automatizar. Hacer scraping de cuentas que no posees o datos personales tras logins queda fuera de nuestra Política de Uso Aceptable.
¿Debo reintentar después de a 401?
No reintentes un 401 a ciegas. Pide algo que tu solicitud no tiene. Refresca el token o sesión si tu flujo tiene uno, y luego intenta una vez. Repetidos 401 indican que el contenido no es público o tu acceso terminó.
¿Cómo se aplica 401 Unauthorized vs 407 a CrawlRelay?
Un proxy HTTP reporta sus problemas de credenciales con 407 o un túnel fallido, no con 401. Si ves un 401 usando el gateway CrawlRelay, tu solicitud llegó al sitio web, lo que reduce rápidamente el problema.
Gateway: gw.crawlrelay.com, puerto 7777 (HTTP, HTTPS a través de CONNECT) y puerto 7778 (SOCKS5). Formato de usuario: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Relacionado: 407 Proxy Authentication Required · 403 Forbidden · Guía de sesiones.
401 Unauthorized vs 407: preguntas que hacen los desarrolladores
¿Por qué recibo un 401 si mi contraseña de proxy es correcta?
Porque el 401 es sobre el sitio web, no el proxy. Tu login de proxy funcionó, y el sitio quiere sus propias credenciales, como clave API, cookie de login o token. Revisa la documentación del sitio. Si el contenido está tras un login que no te corresponde, no lo automatices.
¿Puede una sesión sticky solucionar errores 401?
A veces. Algunos sitios atan una sesión o token a la IP que lo creó, así que una salida nueva invalida el token y el sitio responde 401. Mantener una sesión sticky para todo el flujo evitará eso. No sirve si el contenido necesita credenciales que no tienes.
¿Dónde van las credenciales del proxy en una solicitud HTTP?
En el encabezado Proxy-Authorization, que tu cliente construye desde la parte user:password@ de la URL del proxy. El sitio nunca ve ese encabezado porque el proxy lo elimina. Las credenciales del sitio van en el encabezado Authorization o una cookie, que el proxy deja pasar sin tocar.
Otros errores de proxy en esta referencia
Códigos de estado HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Errores de navegador y cliente
Errores de conexión y TLS
Proxies residenciales con documentación que cubre los casos de fallo
CrawlRelay proxies residenciales de 0,50 US$/GB, tráfico que nunca expira.