ProxyLabProxyLab

ProxyLab CLI

Headless network debugging из Terminal

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.

HAR / Session

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.

Opt-in

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.