● Туннели

Инспектор трафика

Инспектор трафика fxTunnel: смотрите HTTP-запросы к туннелю в браузере, повторяйте их и получайте через локальный REST API. Адрес, отключение, настройки.

2 мин чтенияОбновлено 23 сентября 2026 г.

Инспектор показывает HTTP-запросы, которые пришли через ваши туннели: метод, путь, заголовки, тело, код и время ответа. Он работает локально, внутри клиента, и помогает отлаживать API и вебхуки.

Заметка

Инспектор включается не на всех тарифах — смотрите страницу «Тарифы». Если тариф его не включает, клиент не запускает инспектор.

Веб-интерфейс

Когда инспектор запущен, клиент печатает его адрес вместе с адресом туннеля:

bash
$fxtunnel http 3000
→ Inspector: http://127.0.0.1:4040

Откройте этот адрес в браузере — новые запросы появляются в реальном времени. Если порт 4040 занят, инспектор займёт первый свободный из 4041–4049; точный адрес всегда в строке Inspector:.

Инспектор отвечает только на запросы к 127.0.0.1 или localhost и не открывается с других компьютеров.

Отключение

bash
$fxtunnel http 3000 --no-inspect

Или в конфигурационном файле:

yaml
inspect:
  enabled: false

Настройки

ПараметрОписаниеПо умолчанию
inspect.enabledВключить инспекторtrue
inspect.addrАдрес и порт; флаг --inspect-addr127.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:

bash
$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Очистить все сохранённые запросы

Список запросов

bash
$curl -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:4040/api/requests/http?method=POST&status=5xx"

Параметры:

ПараметрОписание
methodHTTP-метод: GET, POST
statusКод ответа (404) или группа (2xx, 3xx, 4xx, 5xx)
pathПуть, можно с шаблоном: /api/*
searchПодстрока в теле запроса или ответа
sinceТолько за последнее время: 10m, 1h
tunnel_nameИмя туннеля; у запущенного из командной строки оно вида http-3000
include_bodytrue — добавить тела в base64
limitСколько записей вернуть: по умолчанию 50, не больше 100
offsetСдвиг для постраничного вывода

Повтор запроса

bash
$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). Ответ повтора сохраняется в инспекторе как новая запись.

Поток событий

bash
$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,…}