Отладка на Mac

На Mac и Chute, и трафик, который вы хотите рассмотреть, находятся на одной машине, поэтому почти всё, на что руководство по iPhone тратит шаги — кабель, слушатель, пароль, — здесь не нужно. Вместо этого встаёт другой вопрос: доходит ли трафик до Chute вообще, потому что в macOS приложение вправе просто не пользоваться прокси.

1. Пропустить трафик через Chute

Два механизма, независимых друг от друга, — меню показывает оба:

  • Системный прокси — переключатель в самом верху меню. Регистрирует Chute как системный HTTP/SOCKS-прокси. Приложения, читающие системные настройки прокси (браузеры, большинство приложений с интерфейсом), идут через Chute; остальных это не касается.
  • Enhanced Mode (⌘E) — перехватывает трафик на сетевом уровне, так что мнение приложения о прокси перестаёт что-либо значить. Именно это нужно, когда приложение вовсе не умеет работать через прокси. Порядок разрешений и два способа реализации описаны в Расширенном режиме.

Обычная неожиданность — терминальные инструменты: curl, git, npm и им подобные читают HTTP_PROXY/HTTPS_PROXY из окружения, а не системные настройки. Пункт меню Copy Shell Export Command (⌘C) кладёт нужную строку в буфер обмена —

export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com

— с вашим настоящим портом HTTP-слушателя и с NO_PROXY, построенным из списка skip-proxy, так что инструменты командной строки обходят ровно то же, что обходит системный прокси. Вставьте её в ту оболочку, из которой тестируете; действует она только на неё.

Вы должны увидеть: вкладка Traffic в главном окне наполняется строками по мере того, как вы пользуетесь приложением. Ни одной строки — значит трафик до Chute не дошёл; вернитесь к этому шагу, а не ищите проблему с расшифровкой.

2. Читать вкладку Traffic

Traffic перечисляет живые соединения с полем поиска и счётчиком (N active). Show columns ▾ переключает раскладку:

  • Double-row (по умолчанию) — две строки на соединение, удобно просматривать.
  • Wide table — одна строка на соединение по всем столбцам: Хост, Process, Правила, Политика, Proto, Загрузить, Скачивание, Totals, Состояние. Щелчок по заголовку сортирует.
  • Group by app — соединения собраны под приложением, которое их открыло, с именем и значком. Самый быстрый способ ответить на вопрос «с кем разговаривает этот процесс».

Правый щелчок по строке даёт Show Details, Copy Host, Copy Details, Filter Logs (переходит на вкладку Лог, уже отфильтрованную по этому соединению) и Close Connection.

Show Details открывает окно с хостом, процессом, протоколом, удалённой стороной, правилом, политикой, перезаписями, отдачей, приёмом и состоянием соединения — всё о том, как оно было смаршрутизировано.

Вкладка Traffic не показывает тела запросов и ответов. Для этого в окне сведений есть кнопка Запросы и история: она открывает Веб-консоль, которая их показывает. Открывается главная страница консоли, а не именно это соединение.

3. Проверить правило, не отправляя запрос

На вкладке Правила есть кнопка Test Rule.... Введите URL или просто домен, нажмите Test — и Chute ответит разобранными хостом и портом, результатом DNS, совпавшим правилом, политикой, которую это правило выбрало, и примечаниями.

Пользуйтесь ею, когда вопрос звучит как «почему это ушло напрямую» или «какое из двух моих правил побеждает»: она обращается к работающему набору правил, а значит заодно говорит, действительно ли загружена та конфигурация, которую вы правили. Если ответ выглядит устаревшим, перезагрузите конфигурацию (⌘R). Тот же вопрос через API — это POST /api/rules/match.

4. Включить запись и расшифровку

Оба пункта в меню, и оба действуют на работающее ядро:

  • Traffic Capture (⌘B) — сохраняет тела запросов и ответов, то есть параметр replica. По умолчанию выключено, и до включения тел нет ни у чего.
  • Enable MitM (⌘M) — включает расшифровку для хостов из списка hostname в [MITM].

Ни один из них не пишется обратно в файл конфигурации: после Reload Configuration или перезапуска побеждают replica и [MITM] enable из файла.

CA в macOS — это один шаг. В окне конфигурации откройте MitM:

  1. Создать новый сертификат (или Импортировать сертификат из файла PKCS#12).
  2. Установить сертификат в систему — macOS запросит пароль администратора и добавит его в системную связку ключей как доверенный корневой. Отдельного шага «доверять», как в iOS, здесь нет.
  3. Экспортировать сертификат пишет копию .pem — так один и тот же CA попадает на телефон, Apple TV или в контейнер.

5. Сузить до одного процесса

macOS — та платформа, где Chute знает, какое приложение открыло соединение, и правила могут этим пользоваться:

[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy

О PROCESS-NAME, PROCESS-PATH и PROCESS-NAME-REGEX см. Правила процессов. Вместе с Group by app на вкладке Traffic это позволяет пустить одно приложение через прокси — или через имитацию, — пока всё остальное на машине работает как обычно.

6. Что бывает только на Mac

  • Пути к файлам в data= у Map Local. Файл читает то устройство, на котором работает Chute, в момент запроса. На Mac это та же машина, где вы правите файл: настоящий путь работает, а правка файла меняет следующий ответ без перезагрузки. На телефоне тот же путь не значит ничего — потому в руководстве по iPhone используется base64=.
  • Файлы на диске. Сегменты журнала, отметка запуска и захваченные данные лежат в ~/Chute/Share/<run id>/, см. Расположение файлов (macOS). Их можно приложить к отчёту об ошибке напрямую, не проходя через меню «Поделиться».
  • Обслуживание других устройств. С включённым allow-wifi-access другие машины в сети могут направить свои настройки прокси на этот Mac. Их трафик появится в тех же представлениях, а в боковой панели клиентов Dashboard — в разделе Удалённые. Так изучают устройство, на котором Chute вообще не работает, включая ноутбук с Windows или телевизор.

7. Когда вкладки Traffic мало

  • Веб-консоль — строка меню → Открыть веб-консоль. Тела, экспорт HAR, страница правил, показывающая, какие перезаписи срабатывали, и диагностические пробы. Требуется external-http-controller в [General].
  • Chute Dashboard — отдельное бесплатное приложение. Для локального ядра впишите в [General] строку external-controller-access = <пароль>@127.0.0.1:6170, а затем подключитесь во вкладке Удалённо к 127.0.0.1 с этим портом и паролем. Стоит того ради панелей инструментов MitM и экспорта в HAR / curl по правому щелчку.
  • Вкладка «Лог» — сначала поднимите уровень через loglevel = verbose, а потом верните обратно. Filter Logs на строке соединения сужает вкладку до этого одного соединения.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-05 00:59:38

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""