Traffic
Traffic — модальное окно HTTP-трафика. Открывается кнопкой traffic на странице
ZP7, ссылкой /?page=zp7#traffic и хоткеем Alt+5.
Узлы и локальный рантайм пишут трафик в файл, а окно читает его хвост — так же, как allLogs читает логи.
Источники
Окно опрашивает сразу два вида источников и складывает записи в один список:
| Источник | Кто пишет | Файл | Чтение |
|---|---|---|---|
| z3nDash | ZpRuntime (Rqst, HttpDebugHandler) |
<logsFolder>/trafficLog.jsonl |
GET /traffic |
| ZP-узел | z3n7 (Rqst) |
<каталог логов ZennoPoster>/trafficLog.jsonl |
GET /zp/traffic?machine=... |
Адреса узлов берутся из GET /zp/nodes?probe=false. Недоступный узел не мешает
остальным: его ошибка показывается строкой над списком, а записи доступных
источников выводятся как обычно.
Файл на каждой стороне один на машину, пишется под именованным мьютексом и
ротируется на 50 МБ с хранением пяти последних файлов. Чтение идёт с конца:
запрашивается последних N записей, при нехватке текущего файла добираются
ротированные. Потолок сканирования — 64 МБ; если он исчерпан, ответ помечается
truncated.
Список
Фильтры: машина, проект, метод, статус, подстрока URL, число записей на источник.
Проект уходит в запрос и фильтруется при чтении файла, остальные фильтры
применяются к загруженным записям. Обновление раз в 3 секунды при открытом окне,
кнопка Auto его останавливает. Clear view сбрасывает буфер окна — сами файлы
не трогаются, чистки трафика нет ни у узла, ни у рантайма.
Детали
Панель показывает URL, метод, статус, длительность, машину, проект, аккаунт,
сессию, прокси и task_id, а также сворачиваемые секции Request и Response с
заголовками, cookie и телом. Клик по значению копирует его.
Replay
Play открывает запрос в редакторе: метод, URL, заголовки и тело можно изменить
перед отправкой. Запрос уходит через отдельный replay listener — POST /http-replay,
тот же, что использует HAR. Ответ доступен для копирования, рядом есть кнопка
cURL по текущему содержимому полей.
Порт listener — всегда порт панели + 1, и на сервере, и на фронте; настройки у него
нет. Слушает он только localhost.
Код
Для выбранной записи формируются готовые вызовы: HttpClient, ZP7, Hybrid, Python,
TypeScript, cURL. API Skeleton и API Example сводят все показанные запросы в
описание эндпоинтов — типы полей либо последние реальные значения.
cURL Import разбирает вставленную команду curl и открывает её в панели деталей
как обычную запись: её можно проиграть и сконвертировать, в списке она не появляется.
Формат записи
{
"timestamp": "2026-09-12 17:40:11.325",
"startedDateTime": "2026-09-12T22:40:11.1000000Z",
"method": "POST",
"url": "https://example.com/api",
"statusCode": 200,
"durationMs": 214,
"proxy": "",
"request": { "headers": [], "contentType": "", "userAgent": "", "cookies": "", "cookiesSource": "", "body": "" },
"response": { "headers": "", "body": "" },
"machine": "PC", "project": "", "account": "", "session": "",
"task_id": "", "source": "z3n7"
}
Формат общий для узла и рантайма, поэтому окно разбирает оба источника одним кодом.
API
GET /traffic?tail=N&project=&task_id=— локальный файл z3nDash;GET /zp/traffic?machine=&tail=N&project=&task_id=— проброс к узлу;GET /zp/nodes?probe=false— список узлов;POST /http-replay— повтор запроса (порт панели + 1).
Требование к узлу
Хвост файла отдаёт параметр tail в GET /traffic на стороне z3n7. Если узел
возвращает первые N записей вместо последних, значит на нём сборка
z3n7.dll без поддержки tail.