Изучение HTTPS-трафика iPhone с Mac
Это руководство ведёт от телефона с установленным Chute к окну на Mac, показывающему расшифрованные запросы этого телефона с телами запросов и ответов, готовые к фильтрации и экспорту. Оно нанизывает вещи, у которых есть свои справочные страницы — CA, список хостов, запись, канал управления, Dashboard, — в том порядке, в каком вы их на самом деле делаете, и на каждом шаге говорит, что вы должны видеть, прежде чем идти дальше.
Вам понадобятся:
- Chute iOS на телефоне, с лицензией. Расшифровка HTTPS и захват тел на iPhone лицензируются; без лицензии всё ниже всё равно подключается, но строки HTTPS остаются непрозрачными, а вкладки данных пустыми. См. Лицензия и активация.
- Chute Dashboard на Mac — бесплатно, без лицензии.
- USB-кабель (рекомендуется: ничего не нужно открывать в сети, и работает в сотовой сети) либо телефон и Mac в одной сети Wi-Fi.
Если вы предпочитаете ничего не ставить на Mac, веб-консоль показывает те же соединения, тела и перезаписи в браузере и требует на телефоне только
external-http-controller. Шаги 1–3 ниже применимы без изменений; с шага 4 следуйте вместо этого Как открыть веб-консоль.
1. Установите CA и доверьте ему
На телефоне, в редакторе конфигурации: MITM → Настроить CA → Создать новый CA-сертификат, затем Установить CA-сертификат в систему, затем доверьте ему в Настройки → Основные → Об этом устройстве → Доверие сертификатам. Полный порядок действий, включая шаг, который все пропускают, — на странице Расшифровка HTTPS.
Вы должны видеть: страница сертификата показывает Доверенный CA-сертификат. Если там Недоверенный, переключатель доверия в разделе «Доверие сертификатам» ещё выключен — пока он не включён, ничего дальше не заработает.
2. Скажите, какие хосты расшифровывать
Chute расшифровывает только те хосты, что вы перечислили. В разделе MitM редактора (том, где Настроить CA) добавьте хосты, которые хотите видеть. Начинайте узко — с API-хоста приложения, которое отлаживаете, — а не с *: каждый расшифровываемый хост стоит процессорного времени телефона, а некоторые приложения закрепляют свои сертификаты и ломаются при расшифровке. *.apple.com лучше исключить с самого начала.
[MITM]
enable = true
hostname = api.example.com, *.example.net, -*.apple.com
Грамматика — порты, исключения -, ограничение /path — на странице Расшифровка HTTPS. Позже можно добавлять и убирать хосты из панели Правила MitM в Dashboard, наблюдая эффект, и переносить рабочие в конфигурацию.
3. Включите расшифровку и запись
На панели управления телефона два переключателя:
- MitM — расшифровка включена для хостов из шага 2.
- Сохранение данных — записывать тела запросов и ответов (параметр
replica). Без него Dashboard показывает каждое соединение с правилом и политикой, но без данных.
Оба можно позже переключить и с панели инструментов Dashboard, так что не беда, если забудете сейчас. Ни один не переживает перезапуск, если его нет в конфигурации (replica = true в [General], enable = true в [MITM]).
4. Разрешите Dashboard подключаться
В редакторе конфигурации: Внешний контроллер → Доступ внешнего контроллера.
- Включите Разрешить подключение Chute Dashboard/Chute CLI.
- Введите Порт (любой свободный;
6170, если предпочтений нет) и собственный Пароль. - Разрешить доступ по Wi-Fi: для USB оставьте выключенным. Включайте только если будете подключаться по Wi-Fi — это открывает слушатель всем в этой сети, у кого есть пароль.
- Сохраните и запустите (или перезапустите) туннель.
Вы должны видеть: панель управления показывает Порт внешнего доступа: 6170 (ваш порт). Если строки нет, туннель работает не с сохранённой конфигурацией — перезапустите его.
5. Подключите Dashboard
Подключите телефон к Mac кабелем и, если телефон спросит, нажмите Доверять этому компьютеру. Откройте Chute Dashboard; в окне Chute — новая панель мониторинга используйте раздел USB: Порт из шага 4 и Пароль, затем подключитесь.
Вместо этого по Wi-Fi: раздел Удалённый, где Хост = адрес телефона (Настройки → Wi-Fi → ⓘ, IP-адрес), и те же порт и пароль.
Вы должны видеть: окно Dashboard с именем подключения в заголовке, список Активно которого заполняется по мере того, как телефон устанавливает соединения. Если пусто, попользуйтесь телефоном несколько секунд. Здесь могут пойти не так две вещи, и у обеих ясные сообщения: Неверный пароль и окно, которое так и не открывается, — телефон недоступен (неверный адрес, доступ по Wi-Fi выключен, туннель не запущен). Подробности — на странице Dashboard.
6. Проверьте переключатели панели инструментов
Вверху списка «Активно» — два переключателя из шага 3, какими их видит Dashboard:
- Записывать трафик должен показывать Отключить запись трафика — запись включена. Если там всё ещё Записывать трафик, щёлкните его.
- Включить MitM (N правил) должен показывать Отключить MitM (N правил) — расшифровка включена, а
N— число хостов из шага 2. ЕслиNравно0, список хостов до телефона не дошёл: проверьте шаг 2 и перезапустите туннель.
7. Воспроизведите и найдите запрос
Сделайте в приложении то, чей трафик хотите увидеть. Затем сузьте список: Фильтр на панели инструментов открывает панель фильтров; введите хост в Фильтр по хосту/URL… или отметьте Только MitM, чтобы оставить лишь расшифрованные строки.
Вы должны видеть: строки для вашего хоста с M в столбце Флаги, настоящий Метод (GET, POST) и Статус вместо CONNECT. Откройте одну: на вкладке Заголовки запроса — заголовки, параметры запроса и cookies; Данные ответа показывают тело — деревом JSON, если это JSON, изображением, если это изображение.
Если строки вашего хоста показывают CONNECT и без M, соединение не расшифровано. По убыванию вероятности: хоста нет в списке (или шаблон не совпадает — api.example.com не покрывает www.example.com); MitM выключен; CA установлен, но не доверен (само приложение будет показывать ошибки сертификата); приложение закрепляет сертификат (исключите хост и смиритесь, что внутрь не заглянуть); приложение говорит по HTTP/3 поверх QUIC, который расшифровать нельзя — задайте block-quic, чтобы вернуть его на TCP.
Если у строки есть M, но вкладки данных говорят Нет данных: запись была выключена, когда шло это соединение (включите, воспроизведите снова); хост отфильтрован [Replica] на телефоне; либо тело больше 2 МиБ, и телефон отказывается его отдавать.
8. Сохраните найденное
Правая кнопка по строкам: Экспортировать выбранное как HAR… — файл, который откроется в инструментах разработчика браузера, Charles или Proxyman; Копировать команду curl — повторить один запрос из терминала Mac; Экспортировать выбранное как CSV… — для электронной таблицы. Экспортировать как bin внутри вкладки данных сохраняет одно тело как захвачено.
9. Измените что-нибудь (необязательно)
Панели представления MitM правят работающее ядро. Два быстрых эксперимента:
- Перезапись заголовков → добавьте правило для своего хоста: Запрос, Добавить,
X-Debug=1. Воспроизведите; новые строки несутHиR, а Сработавшие правила в окне сведений цитируют ваше правило. - Map Local → ответить на эндпоинт из файла. Для телефона путь к файлу должен быть таким, который может прочитать телефон, так что Путь к файлу этой панели (путь на вашем Mac) не подходит; используйте вместо него форму
base64=правила из редактора телефона или веб-консоли — см. примечание в разделе Инструменты MitM. Строки с макетом несутK.
Правила, добавленные здесь, исчезают при перезапуске туннеля. Как только одно заработает, запишите его в конфигурацию — справочные страницы: Перезапись URL, Перезапись заголовков, Перезапись тела, Имитация ответов.
Когда закончите
- Выключите Сохранение данных или задайте
replica = false: тела копятся на телефоне всё время, пока включена запись. - Выключите обратно Разрешить доступ по Wi-Fi, если включали.
- Оставьте CA установленным, если будете повторять; иначе удалите его в Настройки → Основные → VPN и управление устройством.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.