Инспектор трафика
Инспектор трафика fxTunnel: смотрите HTTP-запросы к туннелю в браузере, повторяйте их и получайте через локальный REST API. Адрес, отключение, настройки.
Инспектор показывает HTTP-запросы, которые пришли через ваши туннели: метод, путь, заголовки, тело, код и время ответа. Он работает локально, внутри клиента, и помогает отлаживать API и вебхуки.
Инспектор включается не на всех тарифах — смотрите страницу «Тарифы». Если тариф его не включает, клиент не запускает инспектор.
Веб-интерфейс
Когда инспектор запущен, клиент печатает его адрес вместе с адресом туннеля:
$fxtunnel http 3000
→ Inspector: http://127.0.0.1:4040Откройте этот адрес в браузере — новые запросы появляются в реальном времени. Если порт 4040 занят, инспектор займёт первый свободный из 4041–4049; точный адрес всегда в строке Inspector:.
Инспектор отвечает только на запросы к 127.0.0.1 или localhost и не открывается с других компьютеров.
Отключение
$fxtunnel http 3000 --no-inspectИли в конфигурационном файле:
inspect:
enabled: falseНастройки
| Параметр | Описание | По умолчанию |
|---|---|---|
inspect.enabled | Включить инспектор | true |
inspect.addr | Адрес и порт; флаг --inspect-addr | 127.0.0.1:4040 |
inspect.max_entries | Сколько запросов хранить на каждый туннель; старые вытесняются | 1000 |
inspect.max_body_size | Сколько байт тела запроса и ответа сохранять | 262144 (256 КБ) |
REST API
API доступен по адресу инспектора. Каждый запрос к /api/ должен нести токен из файла ~/.fxtunnel/inspector.token — клиент создаёт его при первом запуске инспектора. В Windows это %USERPROFILE%\.fxtunnel\inspector.token. Пример для Linux и macOS:
$TOKEN=$(cat ~/.fxtunnel/inspector.token)
$curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:4040/api/statusБез токена API отвечает 401.
| Метод и путь | Что делает |
|---|---|
GET /api/status | Состояние инспектора и число сохранённых запросов |
GET /api/tunnels | Активные туннели клиента |
GET /api/requests/http | Список запросов, новые первыми |
GET /api/requests/http/{id} | Один запрос целиком: заголовки и тела |
GET /api/requests/http/summary | Сводка: число запросов по кодам ответа и методам, доля ошибок, среднее время |
GET /api/requests/http/stream | Новые запросы в реальном времени (Server-Sent Events) |
POST /api/requests/http | Повторить запрос |
DELETE /api/requests/http | Очистить все сохранённые запросы |
Список запросов
$curl -H "Authorization: Bearer $TOKEN" \
"http://127.0.0.1:4040/api/requests/http?method=POST&status=5xx"Параметры:
| Параметр | Описание |
|---|---|
method | HTTP-метод: GET, POST… |
status | Код ответа (404) или группа (2xx, 3xx, 4xx, 5xx) |
path | Путь, можно с шаблоном: /api/* |
search | Подстрока в теле запроса или ответа |
since | Только за последнее время: 10m, 1h |
tunnel_name | Имя туннеля; у запущенного из командной строки оно вида http-3000 |
include_body | true — добавить тела в base64 |
limit | Сколько записей вернуть: по умолчанию 50, не больше 100 |
offset | Сдвиг для постраничного вывода |
Повтор запроса
$curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"id": "ID_запроса"}' \
http://127.0.0.1:4040/api/requests/httpИнспектор отправляет сохранённый запрос прямо на ваш локальный сервис, минуя сервер fxTunnel. В теле можно переопределить method, path, headers и body (тело — в base64). Ответ повтора сохраняется в инспекторе как новая запись.
Поток событий
$curl -N -H "Authorization: Bearer $TOKEN" http://127.0.0.1:4040/api/requests/http/stream
→ event: exchange
→ data: {"id":"…","method":"POST","path":"/webhook","status_code":200,…}