Ir para o conteúdo
ResolveLabs Tunnel

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.

saída
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

Detalhes da requisição

Passe o ID do log para rl-tunnel inspect (ou --last para a mais recente):

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
saída
#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.

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

O 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-Signature e 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:

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

As ú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.

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
LimiteValor
Corpo capturado por requisição/resposta32 KiB (o resto é repassado normalmente, mas não gravado)
Headers capturados por lado16 KiB
WebSocket e text/event-streamSó headers
Histórico mantidoÚltimas 200 requisições