Руководство

Точка останова на мобильном запросе

Остановите запрос или ответ реального телефона на лету, отредактируйте сырой HTTP в дашборде и отпустите его дальше — или прервите. Работает на iOS в режимах VPN и PAC, на Android через прокси и в перехваченном Chrome.

Наблюдение за трафиком говорит, что отправило приложение. Точка останова позволяет изменить это до того, как оно дойдёт. Когда запрос или ответ совпадает с заданным вами шаблоном, он удерживается — на самом телефоне в режиме VPN на iOS, внутри туннеля, или на прокси-сервере для iOS в режиме PAC, Android и браузеров — и появляется в дашборде как живая пауза с редактором сырого HTTP. Вы редактируете, затем решаете: продолжить с изменениями или без, либо прервать.

В любом случае дашборд — это кабина пилота; телефон трогать не нужно. Шаблоны — простые маски хост-плюс-путь, кнопка «поймать всё» ставит на паузу всё одним кликом, а забытая пауза истекает сама, так что точка останова, от которой вы отошли, никогда не заблокирует трафик телефона навсегда.

Перед началом

Что вам понадобится

Телефон, который уже перехватывает, и расшифрованный на нём хост, который вы хотите остановить.

  • Спаренный телефон с включённым перехватом — iOS в любом режиме или Android через прокси.

  • Хост в списке SSL proxy этого устройства. Шаблону с путём нужен расшифрованный хост; зашифрованный хост можно сопоставить только по имени.

  • Открытый дашборд и около шестидесяти секунд внимания на каждую паузу — таков таймаут.

  • По желанию — переменная окружения со свежим токеном, чтобы повторить вызов, не вставляя секрет.

Шаг за шагом

Делайте по порядку

Семь шагов: расшифровать, задать шаблон, вызвать, отредактировать, решить, затем сторона ответа и повтор.

  1. 01

    Сначала расшифруйте хост

    Найдите в ленте реальный запрос к эндпоинту и убедитесь, что его тело читается. Если нет, добавьте хост в список SSL proxy устройства и вызовите запрос снова — на iOS в режиме VPN выключите и включите туннель, чтобы он подхватил новый список. Точки останова сопоставляются по хосту и пути, а путь существует только у расшифрованного хоста.

  2. 02

    Добавьте шаблон запроса и сохраните

    Откройте страницу Breakpoints из навигации настроек. Добавьте шаблон запроса, чтобы остановить исходящий запрос до того, как он достигнет сервера, или шаблон ответа, чтобы остановить ответ до того, как его увидит приложение — тот же синтаксис масок хост-плюс-путь, что и у правил блокировки. Нажмите Save patterns, чтобы отправить их в путь перехвата. Шаблоны для устройства живут в разделе устройства, затем Breakpoints; глобальный набор — запасной для всех устройств.

    Спешите? Pause all requests — кнопка «поймать всё» одним кликом, которая останавливает каждый исходящий запрос без всякого шаблона. Resume all отменяет её.

    Два шаблона — один для стороны запроса, другой для стороны ответа
    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

    Вызовите запрос с телефона

    Воспользуйтесь приложением. Когда запрос совпадает, он останавливается — внутри расширения туннеля iOS в режиме VPN, иначе на прокси-сервере — и появляется в разделе Live pauses дашборда, с индикатором статуса, подтверждающим, что живая связь в порядке. Для приложения это выглядит просто как медленная сеть.

  4. 04

    Отредактируйте сырой HTTP

    Выберите паузу и отредактируйте запрос в текстовом поле: метод, путь, заголовки и тело. Длина содержимого пересчитывается автоматически, так что байты считать не придётся. Заголовок Host редактируемый, но не перенаправляет запрос — он меняет то, что видит сервер, а не то, куда идёт запрос.

    Как выглядит остановленный запрос в редакторе
    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 пропускает запрос дальше, с вашими правками или без них. Abort отбрасывает его, и приложение видит сбой. Reset отменяет ваши правки и восстанавливает перехваченный оригинал. Ваше решение уходит на устройство-владельца паузы по живому каналу управления; если за шестьдесят секунд никто не решит, пауза истекает сама и исходный запрос проходит — оставленная без присмотра точка останова никогда не заблокирует телефон навсегда.

  6. 06

    Остановите и сторону ответа

    Шаблон ответа удерживает ответ сервера до того, как его получит приложение. Так вы проверяете, что делает приложение с полем, которое сервер никогда не отправляет, со статусом, который он никогда не возвращает, или со слегка неверным телом — без правила подмены и не трогая сервер. Отредактируйте, продолжите и смотрите, как реагирует приложение.

  7. 07

    Повторите через Resend и итерируйте

    Из панели действий любого перехваченного запроса Resend отправляет его заново как есть с устройства или прокси и помечает новую запись как повторную. Edit and Resend открывает окно, где сначала можно подправить метод, URL, заголовки или тело. Плейсхолдеры в двойных фигурных скобках в URL, заголовках или теле подставляются из переменных окружения устройства прямо перед отправкой — так можно повторить вызов со свежим токеном, не вставляя секрет. Используйте фильтр Resent в ленте, чтобы отделить повторы от оригиналов, и сочетайте оба приёма: остановите запрос, скопируйте его, затем через Edit and Resend отправляйте варианты, пока не получите нужный ответ.

Устранение неполадок

Что может пойти не так

Если ничего не останавливается, шаблон сопоставляет то, чего не видит, или он не был сохранён.

  • Запрос проходит без остановки

    Проверьте, что хост расшифрован на этом устройстве, что вы нажали Save patterns и что маска совпадает с точными хостом и путём из строки ленты. Набор для устройства перекрывает глобальный запасной, так что проверьте и то, какой из них использует телефон.

  • Пауза исчезла до того, как я закончил редактировать

    Она истекла через шестьдесят секунд, и оригинал прошёл дальше. Подготовьте правку заранее — вставьте из предыдущей записи — и вызовите запрос снова.

  • Изменение заголовка Host не отправило запрос в другое место

    Так задумано: заголовок редактируемый, но никогда не перенаправляет. Чтобы попасть на другой сервер, используйте Edit and Resend с другим URL или направьте исходящий трафик устройства через внешний прокси.

  • Pause all requests заморозил больше, чем я хотел

    Это ловушка для каждого исходящего запроса в той области, где вы её включили. Нажмите Resume all, затем добавьте узкий шаблон запроса для единственного нужного хоста.

  • Индикатор статуса говорит, что живая связь оборвана

    Ваш Continue или Abort не дойдёт до устройства, пока канал управления не переподключится. Дождитесь восстановления индикатора; пауза, истёкшая за это время, проходит как оригинал.

ЧаВО

Частые вопросы

Работают ли точки останова на iOS без Wi-Fi-прокси?

Да. В режиме VPN туннель на устройстве выполняет тот же цикл «остановить — отредактировать — продолжить» внутри сетевого расширения, по Wi-Fi или сотовой сети. В режиме PAC он выполняется на прокси-сервере. Дашборд выглядит одинаково в обоих случаях.

Можно ли остановить ответ вместо запроса?

Да — шаблоны ответа удерживают ответ сервера до того, как его увидит приложение, так что вы можете отредактировать статус, заголовки или тело и посмотреть, как приложение справится.

А если я хочу, чтобы изменение происходило автоматически каждый раз?

Это правило блокировки или скрипт, а не точка останова: правило само отвечает на каждое совпадение, скрипт переписывает байты для каждого запроса. Точки останова — для случаев, когда вы хотите решать каждый раз сами.

Остановите запрос, передумайте

Один шаблон, одна пауза, одна правка — и телефон у вас в руке получает ровно тот запрос или ответ, который вы хотели проверить.

Ask your mate