Отладка сети
Chute — это прокси, но запускают его на собственных устройствах обычно не ради маршрутизации. Ради того, что теперь каждый запрос проходит через место, которое вы контролируете: можно наблюдать, что приложение отправляет на самом деле, сохранять тела и читать их потом, менять запрос или ответ на лету и заставить исправный бэкенд выглядеть сломанным, чтобы увидеть, что приложение станет с этим делать.
Справочные страницы каждого механизма находятся в других разделах руководства: Расшифровка HTTPS, Имитация ответов, Перезапись URL, JS-скриптинг. Этот раздел выстраивает их в том порядке, в каком ими действительно пользуются, и говорит, что меняется от платформы к платформе.
Четыре окна в один и тот же движок
Работающий Chute один, а взглядов на него четыре. Выбрать не то окно — обычная причина того, что чего-то «нет».
| Где работает | Тела запросов и ответов | Меняет работающий движок | Требуется | |
|---|---|---|---|---|
| Само приложение | На устройстве | iOS и Android — да; macOS и tvOS — нет | Только переключатели — Chute Mac ещё и сохраняет их в файл конфигурации | Ничего |
| Веб-консоль | Браузер на любом устройстве | Да | Хосты MitM, все семейства перезаписи, политики, конфигурация | external-http-controller |
| Chute Dashboard | Mac | Да | Хосты MitM, все семейства перезаписи, два переключателя | Ничего для Chute Mac на том же Mac; external-controller-access для любого другого устройства |
| HTTP API управления | Всё, что говорит по HTTP | Да, в base64 | Всё, что может консоль | external-http-controller |
Консоль и Dashboard сильно пересекаются, но добираются до них по-разному: консоль отдаёт сам движок и открывают её в браузере, Dashboard — приложение для Mac, говорящее по двоичному каналу. Ни одно не является надмножеством другого; различия перечислены в разделе До чего Dashboard не дотягивается.
Сначала правильно выставить четыре переключателя
Почти каждое «соединение вижу, а запрос — нет» упирается в один из этих четырёх пунктов, именно в таком порядке:
- Трафик вообще доходит до Chute. Строка в представлении трафика и есть доказательство. Совсем ничего — это проблема перехвата, а не отладки, см. Устранение неполадок.
- CA установлен и является доверенным. На iOS это два отдельных шага, на macOS — один, а на tvOS ни одного из них в приложении нет, см. Установка и доверие CA-сертификату.
- Хост есть в списке MitM. Chute расшифровывает объявленные хосты и больше ничего. В Dashboard строка без флага
Mникогда не расшифровывалась. - Запись включена.
replica = trueили переключатель (Запись трафика в приложении). На iPhone, Apple TV и Android движок требует ещё и лицензию, так что один только ключ там ничего не захватит. Без записи у каждой строки по-прежнему есть правило, политика и тайминги — не хватает только полезной нагрузки.[Replica]затем сужает, что именно из этого сохраняется, а сохранённое живёт лишь до конца сеанса: Chute удаляет записанные тела при остановке.
Пункты 3 и 4 переключаются на ходу и из консоли, и из Dashboard, и через API, но ни один из этих способов не пишет в файл конфигурации: после перезапуска побеждает файл.
Что даёт каждая платформа
| Chute iOS | Chute Mac | Chute tvOS | Chute Android | |
|---|---|---|---|---|
| Изучение в приложении | Экран «Панель мониторинга» — обзор, запрос, ответ, с телами | Вкладка Трафик — только маршрутизация, без тел | ДИАГНОСТИКА → Панель мониторинга — только маршрутизация, без тел | Панель мониторинга — туннели, с телами |
| Переключить MitM в приложении | Переключатель на панели управления (нужна лицензия) | Строка меню → Включить MitM (⌘M) | На этой платформе переключателя нет | Панель управления → MitM (нужна лицензия) |
| Переключить запись в приложении | Панель управления → Запись трафика (нужна лицензия) | Строка меню → Запись трафика (⌘B) | Панель управления → Запись трафика (нужна лицензия) | Панель управления → Запись трафика (нужна лицензия) |
| Установка CA | В приложении, затем доверие в настройках | В приложении, один шаг | Только MDM или Apple Configurator | Импортировать P12 в приложении, затем Установить CA открывает установщик Android |
| Как подключается Chute Dashboard | Кабель USB или Wi-Fi | Подключиться к этому компьютеру, на этом Mac | Wi-Fi | Кабель USB (adb) или сеть |
| Как забрать файл с устройства | Меню «Поделиться» | Файловая система | Только консоль, по QR-коду | Меню «Поделиться» |
Куда двигаться дальше
- Отладка iPhone с Mac — весь путь целиком, от чистого телефона до расшифрованного тела на экране Mac.
- Отладка на Mac — собственный трафик Mac, включая терминальные инструменты и разделение по процессам.
- Отладка Apple TV — устройство без браузера, без меню «Поделиться» и без возможности самому установить сертификат.
- Реплика — какие соединения сохраняют тела и как перестать записывать всё подряд.
- Имитация и внедрение сбоев — заготовленные ответы, коды ошибок, внесённая задержка и то, что Chute действительно не умеет.
Если вопрос звучит как «не работает», а не «что оно делает», начинайте с Устранения неполадок — в частности с раздела Почему моя перезапись ничего не делает?, вопроса, который этот раздел порождает чаще всего.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.