Перейти к содержимому

Сетевая отладка из терминала.

proxylab запускает тот же proxy engine без GUI: печатает завершённые flows, сохраняет HAR и ProxyLab Session, применяет rules и умеет явно включать HTTPS interception.

Быстрый старт

CLI и MCP относятся к Direct-дистрибуции. После установки проверьте, чтоproxylab доступен в PATH.
proxylab --version
proxylab --help

proxylab --listen 127.0.0.1 --port 9090

По умолчанию listener работает только на loopback. Чтобы проверить обычный HTTP-трафик через proxy:

curl --noproxy ''   -x http://127.0.0.1:9090   http://example.com/

Каждый завершённый или failed flow печатается в stdout. Остановить процесс можно через Ctrl-C.

Capture и export

HAR и нативный ProxyLab Session можно сохранить одновременно после graceful shutdown:

proxylab   --listen 127.0.0.1   --port 9090   --har ./capture.har   --session ./capture.proxylabsession
  • HAR подходит для обмена с другими HTTP-инструментами.
  • .proxylabsession читается и CLI, и GUI ProxyLab.
  • Forwarded body не обрезается из-за capture limits; лимиты относятся только к сохранённым данным инспектора.

Sessions

proxylab session info ./capture.proxylabsession
proxylab session list ./capture.proxylabsession

CLI использует тот же versioned SessionArchive, что и приложение, поэтому формат совместим между headless и GUI workflow.

HTTPS inspection

Без дополнительного флага HTTPS идёт через обычный opaque CONNECT tunnel. Для расшифровки HTTPS сначала экспортируйте публичный Root CA, затем включите interception.

proxylab certificate info
proxylab certificate export ./proxylab-root.pem --format pem

proxylab --https-intercept

Пример curl, который доверяет CA только для одного запроса:

curl --noproxy ''   -x http://127.0.0.1:9090   --cacert ./proxylab-root.pem   https://example.com/
Закрытый ключ Root CA остаётся в macOS Keychain и не экспортируется. Certificate-pinned приложения могут отклонять interception.

Rules

CLI использует тот же versioned rules format и порядок выполнения, что ProxyCore.

proxylab rules init ./rules.json
proxylab rules validate ./rules.json
proxylab rules list ./rules.json

proxylab rules disable ./rules.json RULE_UUID
proxylab rules enable ./rules.json RULE_UUID

proxylab --rules ./rules.json
Map Local → Rewrite → Scripts → Breakpoints → Map Remote → Plugin Rules
Интерактивные Breakpoints в headless serve отклоняются: без GUI редактора запрос мог бы зависнуть навсегда.

Plugins

CLI никогда не подхватывает AppKit plugin directory и trust state автоматически. Для plugin runtime нужно явно передать оба пути.

proxylab plugins list   --plugins-dir ./Plugins   --plugin-state ./plugin-state.json

proxylab plugins approve dev.example.plugin   --plugins-dir ./Plugins   --plugin-state ./plugin-state.json   --grants requestHeadersRead,requestHeadersWrite,responseHeadersWrite

proxylab plugins enable dev.example.plugin   --plugins-dir ./Plugins   --plugin-state ./plugin-state.json

proxylab serve   --plugins-dir ./Plugins   --plugin-state ./plugin-state.json

Если bundle изменился после approval, ProxyLab требует reapproval и fail-closed не запускает изменённый plugin молча.

Основные команды

proxylab [serve] [--listen HOST] [--port PORT]
                 [--har PATH] [--session PATH] [--rules PATH]
                 [--plugins-dir PATH --plugin-state PATH]
                 [--https-intercept]

proxylab session info PATH
proxylab session list PATH

proxylab rules init PATH
proxylab rules validate PATH
proxylab rules list PATH
proxylab rules enable PATH RULE_UUID
proxylab rules disable PATH RULE_UUID

proxylab certificate info
proxylab certificate export PATH --format der|pem

proxylab plugins list ...
proxylab plugins approve ...
proxylab plugins enable ...
proxylab plugins disable ...

Точная справка для установленной версии всегда доступна через proxylab --help и proxylab plugins --help.