Ir al contenido
ResolveLabs Tunnel

Inspector de tráfico

Ve cada petición que pasa por tu túnel, inspecciona sus headers y body y reenvíala a tu app.

2 min de lectura

Cada túnel muestra un log en vivo de las peticiones que recibe, cada una con un ID. Usa el ID para ver el intercambio completo o para enviar la petición de nuevo a tu app. Depurar una API o un webhook lleva segundos.

salida
HTTP Requests-------------#1  POST  /api/webhooks/stripe   200 OK                    42ms#2  GET   /api/orders/981        404 Not Found              6ms#3  POST  /api/login             500 Internal Server Error 120ms

Detalles de la petición

Pasa el ID del log a rl-tunnel inspect (o --last para la más reciente):

terminal
# Full request and response of entry #3 from the live logrl-tunnel inspect 3# The most recent onerl-tunnel inspect --last# Authorization/Cookie values are masked; show them only when you need torl-tunnel inspect 3 --reveal
salida
#1  POST /api/webhooks/stripe  ->  200 OK  (42ms)2026-10-05 14:11:14  de 203.0.113.9  para localhost:3000Request  POST /api/webhooks/stripe  Host: my-app.t.resolvelabs.com.br  Content-Type: application/json  Stripe-Signature: t=1738...,v1=5c1f...  X-Forwarded-For: 203.0.113.9Body (35 bytes)  {"type":"payment_intent.succeeded"}Response  200 OK  Content-Type: application/jsonBody (17 bytes)  {"received":true}

Los headers de la petición son exactamente lo que recibió tu app: con el X-Forwarded-For real y sin las credenciales de Basic Auth del túnel. Los valores de Authorization, Cookie y similares aparecen enmascarados. Añade --reveal para mostrarlos.

Reenviar una petición

rl-tunnel replay envía de nuevo una petición grabada a tu app local: mismo método, ruta, headers y body. Es perfecto para webhooks: corrige tu handler y reenvía, sin disparar el evento en el proveedor.

terminal
# Resend the last request to your app (e.g. a webhook, after fixing a bug)rl-tunnel replay --last# A specific one, to another portrl-tunnel replay 3 --target 3001

El reenvío añade el header X-RL-Replay: 1 para que tu app lo distinga de una entrega real. Siempre va a tu propia máquina, nunca por internet.

Flujo de depuración

  • ¿Un webhook devuelve 500? rl-tunnel inspect --last, corrige el código, rl-tunnel replay --last.
  • ¿Falla la validación de la firma? Compara el header Stripe-Signature y el body en el inspector con lo que calculó tu servidor.
  • ¿Una app móvil recibe 404? La ruta en el log muestra exactamente lo que pidió.

Privacidad, historial y logs

El body de las peticiones puede contener datos sensibles. Captura solo los metadatos con --no-body, o escribe cada petición en un archivo para analizarla después con --log:

terminal
# Don't capture bodies (sensitive data): only method, path, headers and statusrl-tunnel http 3000 --no-body# Also save every request to a file (JSON lines)rl-tunnel http 3000 --log ./requests.log

Las últimas 200 peticiones se guardan en un archivo en tu máquina (permiso 0600), solo para que inspect y replay funcionen. Contiene headers y, salvo --no-body, bodies: trátalo como sensible. Los servidores de ResolveLabs no los guardan.

terminal
# Where the local history lives (default: your config folder, permission 0600)export RL_TUNNEL_HISTORY=$HOME/.rl-history.jsonl# Turn it off completely (inspect and replay stop working)export RL_TUNNEL_NO_HISTORY=1
LímiteValor
Body capturado por petición/respuesta32 KiB (el resto se reenvía con normalidad, pero no se graba)
Headers capturados por lado16 KiB
WebSocket y text/event-streamSolo headers
Historial conservadoÚltimas 200 peticiones