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.
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 120msDetalles de la petición
Pasa el ID del log a rl-tunnel inspect (o --last para la más reciente):
# 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#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.
# 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 3001El 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-Signaturey 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:
# 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.logLas ú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.
# 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ímite | Valor |
|---|---|
| Body capturado por petición/respuesta | 32 KiB (el resto se reenvía con normalidad, pero no se graba) |
| Headers capturados por lado | 16 KiB |
WebSocket y text/event-stream | Solo headers |
| Historial conservado | Últimas 200 peticiones |