Inspetor de tráfego
Veja cada requisição que passa pelo túnel, inspecione headers e corpo e reenvie para o seu app.
2 min de leitura
Todo túnel mostra um log ao vivo das requisições que recebe, cada uma com um ID. Use o ID para ver a troca inteira ou para enviar a requisição ao seu app de novo. Depurar uma API ou um webhook leva 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 120msDetalhes da requisição
Passe o ID do log para rl-tunnel inspect (ou --last para a mais recente):
# 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}Os headers da requisição são exatamente o que o seu app recebeu: com o X-Forwarded-For real e sem as credenciais de Basic Auth do túnel. Valores de Authorization, Cookie e similares ficam mascarados na tela. Adicione --reveal para mostrá-los.
Reenviar uma requisição
rl-tunnel replay envia uma requisição gravada ao seu app local de novo: mesmo método, caminho, headers e corpo. É perfeito para webhooks: corrija o handler e reenvie, sem disparar o evento no provedor.
# 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 3001O reenvio acrescenta o header X-RL-Replay: 1 para o seu app distingui-lo de uma entrega real. Ele sempre vai para a sua própria máquina, nunca pela internet.
Fluxo de depuração
- Um webhook retorna
500?rl-tunnel inspect --last, corrija o código,rl-tunnel replay --last. - A validação da assinatura falha? Compare o header
Stripe-Signaturee o corpo no inspetor com o que o seu servidor calculou. - Um app mobile recebe
404? O caminho no log mostra exatamente o que ele pediu.
Privacidade, histórico e logs
O corpo das requisições pode conter dados sensíveis. Capture só os metadados com --no-body, ou grave cada requisição em um arquivo para analisar depois com --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.logAs últimas 200 requisições ficam em um arquivo na sua máquina (permissão 0600), só para o inspect e o replay funcionarem. Há headers e, salvo --no-body, corpos: trate como sensível. Os servidores do ResolveLabs não os guardam.
# 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| Limite | Valor |
|---|---|
| Corpo capturado por requisição/resposta | 32 KiB (o resto é repassado normalmente, mas não gravado) |
| Headers capturados por lado | 16 KiB |
WebSocket e text/event-stream | Só headers |
| Histórico mantido | Últimas 200 requisições |