Guía

Pon un breakpoint en una petición móvil

Pausa una petición o una respuesta de un teléfono real en pleno vuelo, edita el HTTP en bruto en el dashboard y déjala continuar, o abórtala. Funciona en iOS en modo VPN y PAC, en Android a través del proxy y en un Chrome capturado.

Ver el tráfico te dice qué envió la app. Un breakpoint te deja cambiarlo antes de que llegue. Cuando una petición o respuesta coincide con un patrón que definiste, se retiene —en el propio teléfono en modo VPN de iOS, dentro del túnel, o en el servidor proxy para iOS en modo PAC, Android y navegadores— y aparece en el dashboard como una pausa en vivo con un editor para el HTTP en bruto. Editas y luego decides: continuar con o sin tus cambios, o abortar.

El dashboard es la cabina en cualquier caso; nunca hay que tocar el teléfono. Los patrones son simples comodines de host y ruta, un atajo de un clic pausa todo, y una pausa olvidada caduca sola, así que un breakpoint del que te alejaste nunca puede bloquear el tráfico del teléfono para siempre.

Antes de empezar

Lo que necesitas

Un teléfono que ya captura, y el host que quieres pausar descifrado en él.

  • Un teléfono emparejado con la captura activa: iOS en cualquiera de los dos modos, o Android a través del proxy.

  • El host en la lista de SSL proxy de ese dispositivo. Un patrón con ruta necesita un host descifrado; un host cifrado solo se puede emparejar por nombre.

  • El dashboard abierto y unos sesenta segundos de atención por pausa: ese es el tiempo límite.

  • Opcionalmente, una variable de entorno con un token fresco, para reproducir una llamada sin pegar el secreto.

Paso a paso

Hazlo en orden

Siete pasos: descifrar, definir el patrón, provocar, editar, decidir, luego el lado de la respuesta y la reproducción.

  1. 01

    Descifra el host primero

    Busca una petición real al endpoint en el feed y confirma que su cuerpo es legible. Si no, añade el host a la lista de SSL proxy del dispositivo y vuelve a provocar la llamada; en iOS en modo VPN, apaga y enciende el túnel para que recoja la lista nueva. Los breakpoints coinciden por host y ruta, y la ruta solo existe en un host descifrado.

  2. 02

    Añade un patrón de petición y guárdalo

    Abre la página Breakpoints desde el menú de ajustes. Añade un patrón de petición para pausar una petición saliente antes de que llegue al servidor, o un patrón de respuesta para pausar la respuesta antes de que la app la vea: la misma sintaxis de comodines de host y ruta que usan las reglas de bloqueo. Haz clic en Save patterns para enviarlos a la ruta de captura. Los patrones por dispositivo viven bajo el dispositivo, luego Breakpoints; el conjunto global es el respaldo para todos los dispositivos.

    ¿Con prisa? Pause all requests es un atajo de un clic que pausa todas las peticiones salientes sin patrón alguno. Resume all lo revierte.

    Dos patrones: uno para el lado de la petición, otro para el de la respuesta
    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

    Provoca la llamada desde el teléfono

    Usa la app. Cuando una petición coincide, se detiene —dentro de la extensión del túnel de iOS en modo VPN, en el servidor proxy en los demás casos— y aparece bajo Live pauses en el dashboard, con una píldora de estado que confirma que el enlace en vivo está sano. Para la app, simplemente está esperando a una red lenta.

  4. 04

    Edita el HTTP en bruto

    Elige la pausa y edita la petición en el área de texto: método, ruta, cabeceras y cuerpo. La longitud del contenido se recalcula automáticamente, así que nunca tienes que contar bytes. La cabecera Host es editable pero no redirige la petición: cambia lo que ve el servidor, no adónde va la petición.

    Así se ve una petición pausada en el 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

    Continúa, aborta o restablece, en menos de sesenta segundos

    Continue deja que la petición siga, con o sin tus ediciones. Abort la descarta, así que la app ve un fallo. Reset tira tus ediciones y restaura el original capturado. Tu decisión viaja al dispositivo dueño de la pausa por el canal de control en vivo; si nadie decide en sesenta segundos, la pausa caduca sola y la petición original sigue adelante, así que un breakpoint desatendido nunca bloquea el teléfono para siempre.

  6. 06

    Pausa también el lado de la respuesta

    Un patrón de respuesta retiene la respuesta del servidor antes de que la app la reciba. Así pruebas qué hace la app con un campo que el servidor nunca envía, un estado que nunca devuelve o un cuerpo ligeramente incorrecto, sin regla de mock y sin tocar el servidor. Edita, continúa y observa cómo reacciona la app.

  7. 07

    Reproduce con Resend e itera

    Desde la barra de acciones de cualquier petición capturada, Resend la vuelve a emitir tal cual desde el dispositivo o el proxy y marca la nueva captura como reenviada. Edit and Resend abre un modal para ajustar antes el método, la URL, las cabeceras o el cuerpo. Los marcadores entre dobles llaves en la URL, las cabeceras o el cuerpo se resuelven con las variables de entorno del dispositivo justo antes de que la petición salga, así que puedes reproducir una llamada con un token fresco sin pegar el secreto. Usa el filtro Resent del feed para aislar las reproducciones de los originales, y combina ambas cosas: pausa una petición, cópiala y luego usa Edit and Resend con variaciones hasta que la respuesta sea la que buscabas.

Solución de problemas

Qué puede salir mal

Si nada se pausa, el patrón está coincidiendo con algo que no puede ver, o nunca se guardó.

  • La petición pasa sin pausarse

    Comprueba que el host está descifrado en ese dispositivo, que hiciste clic en Save patterns y que el comodín coincide con el host y la ruta exactos que muestra la fila del feed. Un conjunto por dispositivo anula el respaldo global, así que comprueba también cuál está usando el teléfono.

  • La pausa desapareció antes de que terminara de editar

    Caducó a los sesenta segundos y el original continuó. Ten tu edición lista —pégala desde una captura anterior— y vuelve a provocar la llamada.

  • Cambiar la cabecera Host no envió la petición a otro sitio

    Es por diseño: la cabecera es editable pero nunca redirige. Para apuntar a otro servidor, usa Edit and Resend con otra URL, o enruta la salida del dispositivo por un proxy externo.

  • Pause all requests congeló más de lo que quería

    Es un atajo para todas las peticiones salientes en el ámbito donde lo activaste. Haz clic en Resume all y luego añade un patrón de petición acotado para el único host que te importa.

  • La píldora de estado dice que el enlace en vivo está caído

    Tu Continue o Abort no puede llegar al dispositivo hasta que el canal de control se reconecte. Espera a que la píldora se recupere; una pausa que caduque mientras tanto continúa como el original.

Preguntas frecuentes

Preguntas habituales

¿Funcionan los breakpoints en iOS sin un proxy Wi-Fi?

Sí. En modo VPN el túnel en el dispositivo ejecuta el mismo ciclo de pausar-editar-continuar dentro de la extensión de red, por Wi-Fi o datos móviles. El modo PAC lo ejecuta en el servidor proxy. El dashboard se ve idéntico en ambos.

¿Puedo pausar una respuesta en lugar de una petición?

Sí: los patrones de respuesta retienen la respuesta del servidor antes de que la app la vea, así que puedes editar estado, cabeceras o cuerpo y ver cómo se las arregla la app.

¿Y si quiero que el cambio ocurra automáticamente cada vez?

Eso es una regla de bloqueo o un script, no un breakpoint: una regla responde sola a cada coincidencia, un script reescribe los bytes por petición. Los breakpoints son para los casos en que quieres decidir cada vez.

Detén la petición, cambia de opinión

Un patrón, una pausa, una edición, y el teléfono que tienes en la mano recibe exactamente la petición o la respuesta que querías probar.

Ask your mate