Guia

Defina um breakpoint em uma requisição móvel

Pause uma requisição ou uma resposta de um celular real no meio do caminho, edite o HTTP bruto no dashboard e deixe-a continuar — ou aborte-a. Funciona no iOS em modo VPN e PAC, no Android pelo proxy e em um Chrome capturado.

Observar o tráfego mostra o que o app enviou. Um breakpoint permite mudá-lo antes de chegar. Quando uma requisição ou resposta casa com um padrão que você definiu, ela é retida — no próprio celular no modo VPN do iOS, dentro do túnel, ou no servidor proxy para iOS em modo PAC, Android e navegadores — e aparece no dashboard como uma pausa ao vivo com um editor para o HTTP bruto. Você edita e depois decide: continuar com ou sem suas alterações, ou abortar.

O dashboard é a cabine de comando em qualquer caso; o celular nunca precisa ser tocado. Os padrões são curingas simples de host mais caminho, um atalho de um clique pausa tudo, e uma pausa esquecida expira sozinha, então um breakpoint do qual você se afastou nunca consegue travar o tráfego do celular para sempre.

Antes de começar

O que você precisa

Um celular que já captura e o host que você quer pausar descriptografado nele.

  • Um celular pareado com a captura ligada — iOS em qualquer um dos modos, ou Android pelo proxy.

  • O host na lista de SSL proxy daquele dispositivo. Um padrão com caminho precisa de um host descriptografado; um host criptografado só pode ser casado pelo nome.

  • O dashboard aberto e uns sessenta segundos de atenção por pausa — esse é o tempo limite.

  • Opcionalmente, uma variável de ambiente com um token novo, para repetir uma chamada sem colar o segredo.

Passo a passo

Faça na ordem

Sete passos: descriptografar, definir o padrão, disparar, editar, decidir, depois o lado da resposta e a repetição.

  1. 01

    Descriptografe o host primeiro

    Encontre uma requisição real para o endpoint no feed e confirme que o corpo está legível. Se não estiver, adicione o host à lista de SSL proxy do dispositivo e dispare a chamada de novo — no iOS em modo VPN, desligue e ligue o túnel para que ele carregue a nova lista. Breakpoints casam por host e caminho, e o caminho só existe para um host descriptografado.

  2. 02

    Adicione um padrão de requisição e salve

    Abra a página Breakpoints pelo menu de configurações. Adicione um padrão de requisição para pausar uma requisição de saída antes de chegar ao servidor, ou um padrão de resposta para pausar a resposta antes de o app vê-la — a mesma sintaxe de curingas de host mais caminho que as regras de bloqueio usam. Clique em Save patterns para enviá-los ao caminho de captura. Os padrões por dispositivo ficam sob o dispositivo, depois Breakpoints; o conjunto global é o fallback para todos os dispositivos.

    Com pressa? Pause all requests é um atalho de um clique que pausa toda requisição de saída sem padrão nenhum. Resume all desfaz isso.

    Dois padrões — um para o lado da requisição, outro para o lado da resposta
    text
    # Request patterns (pause before the request leaves the phone)
    api.example.com/v1/checkout/*
    
    # Response patterns (pause the reply before the app sees it)
    *.example.com/v1/session
  3. 03

    Dispare a chamada do celular

    Use o app. Quando uma requisição casa, ela para — dentro da extensão de túnel do iOS em modo VPN, no servidor proxy nos outros casos — e aparece em Live pauses no dashboard, com uma pílula de status confirmando que o link ao vivo está saudável. Para o app, é só uma rede lenta.

  4. 04

    Edite o HTTP bruto

    Escolha a pausa e edite a requisição na área de texto: método, caminho, cabeçalhos e corpo. O tamanho do conteúdo é recalculado automaticamente, então você nunca precisa contar bytes. O cabeçalho Host é editável, mas não redireciona a requisição — ele muda o que o servidor vê, não para onde a requisição vai.

    Como uma requisição pausada aparece no editor
    http
    POST /v1/checkout/confirm HTTP/1.1
    Host: api.example.com
    Content-Type: application/json
    Authorization: Bearer <redacted>
    
    {"amount": 4900, "currency": "eur", "coupon": null}
  5. 05

    Continue, aborte ou redefina — em até sessenta segundos

    Continue deixa a requisição prosseguir, com ou sem suas edições. Abort a descarta, então o app vê uma falha. Reset joga fora suas edições e restaura o original capturado. Sua decisão viaja até o dispositivo dono da pausa pelo canal de controle ao vivo; se ninguém decidir em sessenta segundos, a pausa expira sozinha e a requisição original segue, então um breakpoint deixado sem atenção nunca bloqueia o celular para sempre.

  6. 06

    Pause também o lado da resposta

    Um padrão de resposta segura a resposta do servidor antes de o app recebê-la. É assim que você testa o que o app faz com um campo que o servidor nunca envia, um status que ele nunca retorna ou um corpo ligeiramente errado — sem regra de mock e sem tocar no servidor. Edite, continue e veja o app reagir.

  7. 07

    Repita com Resend e itere

    Na barra de ações de qualquer requisição capturada, Resend a reemite como está a partir do dispositivo ou do proxy e marca a nova captura como reenviada. Edit and Resend abre um modal para ajustar antes o método, a URL, os cabeçalhos ou o corpo. Marcadores entre chaves duplas na URL, nos cabeçalhos ou no corpo são resolvidos com as variáveis de ambiente do dispositivo logo antes de a requisição sair — então você pode repetir uma chamada com um token novo sem colar o segredo. Use o filtro Resent no feed para isolar repetições dos originais, e combine as duas coisas: pause uma requisição, copie-a e use Edit and Resend com variações até a resposta ser a que você procurava.

Solução de problemas

O que pode dar errado

Se nada pausa, o padrão está casando com algo que não consegue ver, ou nunca foi salvo.

  • A requisição passa sem pausar

    Confira se o host está descriptografado naquele dispositivo, se você clicou em Save patterns e se o curinga casa com o host e caminho exatos que a linha do feed mostra. Um conjunto por dispositivo sobrepõe o fallback global, então confira também qual deles o celular está usando.

  • A pausa sumiu antes de eu terminar de editar

    Ela expirou aos sessenta segundos e o original continuou. Tenha a edição pronta — cole de uma captura anterior — e dispare a chamada de novo.

  • Mudar o cabeçalho Host não enviou a requisição para outro lugar

    É por design: o cabeçalho é editável, mas nunca redireciona. Para atingir outro servidor, use Edit and Resend com outra URL, ou roteie a saída do dispositivo por um proxy externo.

  • Pause all requests congelou mais do que eu queria

    É um atalho para toda requisição de saída no escopo em que você o ativou. Clique em Resume all e depois adicione um padrão de requisição estreito para o único host que importa.

  • A pílula de status diz que o link ao vivo caiu

    Seu Continue ou Abort não consegue chegar ao dispositivo até o canal de controle reconectar. Espere a pílula se recuperar; uma pausa que expirar enquanto isso continua como o original.

Perguntas frequentes

Perguntas que as pessoas fazem

Breakpoints funcionam no iOS sem proxy Wi-Fi?

Sim. No modo VPN o túnel no dispositivo roda o mesmo ciclo de pausar-editar-continuar dentro da extensão de rede, por Wi-Fi ou rede celular. O modo PAC roda no servidor proxy. O dashboard fica idêntico nos dois.

Posso pausar uma resposta em vez de uma requisição?

Sim — padrões de resposta seguram a resposta do servidor antes de o app vê-la, então você pode editar status, cabeçalhos ou corpo e observar como o app lida com isso.

E se eu quiser que a mudança aconteça automaticamente toda vez?

Isso é uma regra de bloqueio ou um script, não um breakpoint: uma regra responde sozinha a cada correspondência, um script reescreve os bytes por requisição. Breakpoints são para os casos em que você quer decidir a cada vez.

Pare a requisição, mude de ideia

Um padrão, uma pausa, uma edição — e o celular na sua mão recebe exatamente a requisição ou resposta que você queria testar.

Ask your mate