
Alguien te pide un archivo HAR. Casi siempre es soporte, o un desarrollador que está mirando un error que reportaste, y casi siempre la petición llega con unas instrucciones que dan por hecho que ya sabes lo que es.
Un archivo HAR es la grabación de todas las peticiones que hizo el navegador mientras hacías algo, guardada en un solo archivo. HAR viene de HTTP Archive. Es un archivo JSON corriente que enumera cada petición que envió la página, lo que respondió, cuánto tardó cada una y en qué orden: la pestaña Red de las herramientas de desarrollo de tu navegador, escrita y entregada.
Qué hay dentro
Por cada petición que hizo la página mientras grababas:
- La petición: método, URL completa, cabeceras, cadena de consulta y el cuerpo, si lo había
- La respuesta: código de estado, cabeceras, tipo de contenido, tamaño y a menudo el cuerpo
- Los tiempos: cuánto esperó la petición, cuánto tardó en conectar, en enviarse y en recibir el primer byte
- Cuándo ocurrió, de forma que el orden y los huecos entre peticiones se conservan
Eso último es lo que hace que un HAR sirva más que una captura de la pestaña Red. Una captura te enseña una lista; un HAR permite que alguien reproduzca la secuencia y vea que la renovación del token salió después de la petición que la necesitaba.
Cuándo te lo piden
Casi siempre porque el problema es invisible desde fuera y solo te pasa a ti.
- Una página carga para ti y no para ellos, o al revés
- Algo falla en silencio, sin que la interfaz diga nada
- Una petición va lenta y nadie sabe si es la red, el servidor o el navegador
- Una integración devuelve un error solo en producción y solo para una cuenta
En todos esos casos la respuesta suele ser una línea de un archivo que nadie miró: un 403 donde se esperaba un 200, una petición que nunca salió, un bucle de redirecciones, un fallo de CORS que la página se tragó.
Cómo grabarlo
Chrome o Edge. Abre las herramientas de desarrollo con F12, o Cmd + Option + I en un Mac. Ve a la pestaña Red. Marca Conservar registro para que una redirección no borre lo que llevas grabado. Reproduce el problema. Después haz clic derecho en cualquier fila de la lista y elige Guardar todo como HAR con contenido.
Firefox. Herramientas de desarrollo, pestaña Red, reproduce, y luego clic derecho en una fila y Guardar todo como HAR.
Safari. Activa el menú Desarrollo en los ajustes, y luego Desarrollo, Mostrar el inspector web, Red y Exportar.
Dos cosas que se le escapan a casi todo el mundo. Empieza a grabar antes de hacer lo que quieres enseñar, porque la pestaña Red solo guarda lo que vio. Y reproduce el problema una vez y para: un HAR con once minutos de clics es un archivo que no va a leer nadie.
Leerlo sin ninguna herramienta
La entrada más rápida es abrir el archivo en la propia pestaña Red de un navegador: arrastra el HAR sobre el panel Red y se carga como si lo hubieras grabado tú, con su orden y sus filtros.
Qué mirar, más o menos en este orden:
- Esto no lo primero
- Recorrer la lista entera buscando algo que parezca raro
- Esto primero
- Filtrar por estado 400 en adelante, luego por las peticiones más lentas, y luego mirar qué pasó justo antes del fallo
Un HAR es JSON, así que jq también funciona con él:
jq '.log.entries[] | select(.response.status >= 400) |
{url: .request.url, status: .response.status}' capture.har te saca los fallos en una línea.
Un HAR solo guarda las peticiones que hizo el navegador. Para inspeccionar una que envía tu propio código, apúntalo al endpoint de prueba de webhooks, que te da una URL y te enseña el método, las cabeceras, la cadena de consulta y el cuerpo de lo que llegue.
La parte de la que nadie te avisa
Un archivo HAR casi siempre contiene credenciales. Es lo más importante que hay que saber sobre él, y las instrucciones que te mandan casi nunca lo mencionan.
Guardado con contenido, un HAR lleva todas las cabeceras de petición, es decir cookies de sesión y tokens de autorización, y todos los cuerpos de respuesta, que pueden incluir datos personales de quien tuviera la sesión abierta. Cualquiera que tenga el archivo puede a menudo actuar como ese usuario hasta que esos tokens caduquen.
Así que:
- Trata un HAR como una contraseña. No lo pegues en un gestor de incidencias público, en un canal compartido ni en una cadena de correo que se va a reenviar.
- Límpialo antes de compartirlo si puedes. Algunas herramientas quitan las cookies y las cabeceras de autorización; si no, abre el JSON y quítalas a mano.
- Graba en una ventana privada con una cuenta de prueba cuando el problema lo permita, que es lo que deja los datos reales de clientes fuera del archivo por completo.
- Bórralo después. Es la prueba de una investigación, no un documento.
Si eres tú quien pide el HAR, di todo esto en la petición. A casi nadie que te manda uno con su token de sesión activo le habían dicho que no lo hiciera.
Conseguirlo sin las instrucciones
Todo lo anterior son cuatro párrafos de instrucciones para alguien que solo quiere avisar de que una página está rota, y por eso los archivos HAR muchas veces no llegan nunca.
Session Replay
Extensión gratuita de Chrome. Un clic en la página que se está portando mal captura la captura de pantalla, la consola y el registro de red, y te devuelve un enlace para pegar en el ticket.
El registro de red que captura incluye un archivo HAR que puedes descargar y abrir en las herramientas de desarrollo, así que quien recoja el informe tiene el mismo archivo que habría pedido, sin haber tenido que pedirlo. Lo que no hace es decidir por ti qué hay que tachar: el aviso de arriba sigue valiendo para todo lo que compartas.
Para todo lo que rodea al archivo - qué esperabas, qué pasó y de qué versión se trataba - la guía del informe de errores tiene la plantilla.