Руководство

Перехват HTTPS на iPhone, без Mac

Всё происходит на телефоне: установите приложение, доверьте его сертификат, выберите хосты для расшифровки и включите VPN. Расшифрованные запросы появляются в вашем дашборде секунду спустя — по Wi-Fi или по сотовой сети.

Обычный способ прочитать HTTPS iPhone — настольный прокси: ноутбук в той же Wi-Fi-сети, ручная настройка прокси на телефоне, сертификат, установленный вручную, и сессия, которая обрывается, как только вы переходите на сотовую сеть. Busymate DevTools убирает ноутбук из этой цепочки. Приложение запускает общесистемный движок перехвата прямо на устройстве с помощью NetworkExtension от Apple, расшифровывает только те хосты, которые вы внесли в список, и передаёт каждый запрос в веб-дашборд, который можно открыть где угодно.

Это руководство проведёт вас от пустого телефона до первого расшифрованного запроса. Используется режим VPN — туннель на устройстве, который охватывает и Wi-Fi, и сотовую сеть. Если вы предпочитаете перехват через Wi-Fi-прокси, в приложении есть и режим PAC; он упоминается там, где это важно, но для этого руководства он не нужен.

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

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

Без компьютера, без кабеля, без джейлбрейка. Четыре вещи, и все они на телефоне или во вкладке браузера.

  • iPhone или iPad с актуальной iOS и доступом к App Store.

  • Аккаунт Busymate — войдите через Apple или по электронной почте и паролю. Именно вход связывает телефон с вашим дашбордом.

  • Две минуты в приложении «Настройки», чтобы установить профиль сертификата и включить для него полное доверие.

  • Имена хостов API, который вы хотите читать. Расшифровываются только добавленные хосты; всё остальное проходит нетронутым.

Шаг за шагом

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

Шесть шагов, в этом порядке. Карточка готовности в приложении сама сообщит, когда часть с сертификатом выполнена, так что гадать не придётся.

  1. 01

    Установите приложение и примите согласие на перехват

    Установите Busymate DevTools из App Store и откройте его. При первом запуске появится экран согласия на перехват сетевого трафика. Apple требует его, потому что приложение анализирует трафик устройства, и приложение не будет ни спариваться, ни перехватывать, пока вы не согласитесь. Это одноразовый барьер: если что-либо когда-нибудь попытается запустить туннель без вашего согласия, тот же экран появится снова.

  2. 02

    Войдите — это и спаривает телефон

    Экран входа закрывает приложение, пока телефон не спарен. Выберите «Вход с Apple» или введите почту и пароль. Отдельного шага активации и кода для ввода нет: приложение обменивает вашу сессию на долгоживущие учётные данные устройства, сохраняет их в связке ключей устройства и закрывает экран.

    Откройте дашборд в любом браузере и посмотрите вкладку Devices — телефон уже там и показан как Online. Переименовать его можно с любой стороны; имя синхронизируется в обе стороны в реальном времени, а устройство сохраняет свою идентичность при переименовании.

    Экран входа Busymate DevTools на iPhone
  3. 03

    Установите профиль сертификата

    Внизу главного экрана находится карточка готовности. Сейчас на ней жёлтый щит и надпись Not Ready, потому что телефон ещё не доверяет сертификату, которым приложение расшифровывает HTTPS. Коснитесь карточки, чтобы открыть шаги настройки, затем нажмите Download.

    Приложение откроет Safari с профилем конфигурации. iOS покажет уведомление о загруженном профиле; откройте «Настройки», коснитесь этого уведомления вверху и нажмите «Установить» для профиля Busymate DevTools. Это тот же профиль, который можно скачать вручную по адресу ниже.

    Профиль сертификата, который приложение открывает за вас
    text
    https://busymate.net/ca.mobileconfig
  4. 04

    Включите полное доверие к сертификату

    Установить профиль недостаточно. iOS требует отдельного явного переключателя доверия для любого корневого сертификата, установленного пользователем, и именно этот шаг чаще всего пропускают. Откройте «Настройки», затем «Основные», затем «Об этом устройстве», затем «Доверие сертификатам» и включите Busymate DevTools в списке полного доверия.

    Вернитесь в приложение. Пока открыт экран настройки, оно проверяет доверие каждые несколько секунд и при каждом возвращении на передний план, так что через секунду-две карточка готовности станет зелёной с надписью Ready. На главном экране вместо сообщения о незавершённой настройке появятся элементы управления перехватом. Доверие сохраняется при переустановке приложения — это делается один раз на телефон.

    Главный экран Busymate DevTools с карточкой готовности и переключателем перехвата
  5. 05

    Добавьте хосты, которые нужно расшифровывать

    Доверие к сертификату не открывает всё подряд. Приложение расшифровывает только домены из своего списка SSL proxy; остальные соединения проходят, но остаются зашифрованными и показываются с закрытым замком — только имя хоста и счётчик запросов. Откройте список через шестерёнку на карточке готовности — Settings, затем Tunnel, затем SSL Proxying —, нажмите Add Domain и введите хост.

    Простое имя хоста совпадает ровно с этим хостом. Звёздочка с точкой в начале совпадает с родительским доменом и всеми поддоменами любой глубины — обычно именно это и нужно для API. В том же разделе Tunnel есть два связанных переключателя: Inspect All Requests записывает все соединения телефона, а не только хосты из списка, а MITM All Hosts расшифровывает все HTTPS-хосты — это тяжелее, и лучше держать его выключенным без необходимости. Ignore Hosts полностью убирает из ленты фоновый шум вроде телеметрии.

    Управлять списком можно и из дашборда: отредактируйте там домены SSL proxy устройства, и изменение сразу уйдёт на телефон — коллега может добавить хост за вас, не прикасаясь к устройству.

    Экран настроек Busymate DevTools на iPhone, где находится список SSL proxy
  6. 06

    Включите VPN и читайте трафик

    На главном экране в строке Status находится переключатель VPN. Включите его. Вы увидите короткое Syncing, затем Connected; значок приложения перейдёт в устойчивое зелёное кольцо с бейджем VPN, и такой же бейдж VPN появится в строке состояния iOS. С этого момента каждый запрос телефона, по Wi-Fi или сотовой сети, передаётся в ваш дашборд, а туннель остаётся активным при переключении между приложениями.

    Воспользуйтесь приложением, которое отлаживаете. Затем посмотрите в дашборд: новые строки появляются в верхней части ленты в момент события, по одной на запрос, а боковая панель устройств позволяет сосредоточиться только на этом телефоне. Нажмите на любую строку, чтобы открыть полный запрос и ответ — заголовки и тело, JSON в читаемом виде. На самом телефоне Settings, затем Tools, затем Network Log показывает ту же запись, сгруппированную по доменам, с открытым замком у каждого хоста, который вы выбрали для расшифровки.

    Network Log приложения на iPhone: запросы сгруппированы по доменам

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

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

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

  • Карточка готовности остаётся жёлтой после установки профиля

    Полное доверие всё ещё выключено. Установка профиля и переключатель доверия — два разных шага в iOS; вернитесь в «Настройки», «Основные», «Об этом устройстве», «Доверие сертификатам» и включите Busymate DevTools. Как только это произойдёт, карточка сама станет зелёной.

  • У хоста закрытый замок и нет тела

    Этого хоста нет в списке SSL proxy, или вы добавили его при работающем VPN. Добавьте его, затем выключите и снова включите VPN, чтобы туннель подхватил новый список — перехвату в режиме PAC перезапуск не нужен, а туннелю нужен.

  • Отлаживаемое приложение отказывается подключаться, как только хост расшифрован

    Приложение закрепляет собственный сертификат и отвергает любой другой — обойти это не может никакой перехват на устройстве. Уберите хост из списка, чтобы он снова проходил зашифрованным, и прочитайте руководство о pinning, чтобы узнать, что по-прежнему можно увидеть.

  • Карточка PAC показывает Unavailable — VPN active

    Это ожидаемо, а не ошибка. VPN и PAC взаимоисключающи; пока туннель поднят, iOS скрывает состояние Wi-Fi-прокси, и приложение честно об этом сообщает. Выключите VPN, если хотите вместо него использовать PAC.

  • В дашборд вообще ничего не приходит

    Проверьте три условия по порядку: согласие принято, телефон показан как Online на вкладке Devices, переключатель Status показывает Connected. Если приложение при большом трафике ненадолго не смогло связаться с бэкендом, оно покажет небольшой баннер с числом потерянных записей — тихой потери не бывает.

ЧаВО

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

Мне правда не нужен Mac, кабель или настройка прокси?

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

Перехватывается ли сотовый трафик и трафик других приложений?

В режиме VPN — да: туннель на устройстве охватывает все приложения телефона, по Wi-Fi и по сотовой сети. Альтернатива PAC охватывает только Wi-Fi, потому что это настройка Wi-Fi-прокси, а не туннель.

Расшифровывается ли всё после того, как сертификату доверяют?

Нет. Доверие лишь делает расшифровку возможной. Приложение расшифровывает хосты из вашего списка SSL proxy и ничего больше, если только вы намеренно не включите MITM All Hosts. Приложения с закреплённым сертификатом остаются зашифрованными в любом случае.

Ваш первый расшифрованный запрос — в нескольких касаниях

Установите приложение, доведите карточку готовности до зелёного цвета и смотрите, как трафик телефона появляется в вашем дашборде.

Ask your mate