1.1Kпросмотров
100.0%от подписчиков
27 октября 2025 г.
Score: 1.2K
Решал конкретно свою задачу и в итоге решил, что это можно выкатить в опенсорс. Мне нужно было задебажить запросы к удаленному API по перформансу - не просто увидеть "запрос занял 800 мс", а получить реальную картину: какие этапы есть у запроса, сколько времени тратится на каждый шаг (DNS, коннект, TLS, ожидание ответа и т д), что именно тормозит. Так и появился httptap. 🔗 Репозиторий: https://github.com/ozeranskii/httptap Пока не опубликован в PyPI - профукал учетку, пытаюсь восстановить. Если не получится, сделаю новую 🤦♂️ PyPi - https://pypi.org/project/httptap/ Почему не httpstat Когда искал готовые решения, нашел два инструмента:
- https://github.com/reorx/httpstat (Python)
- https://github.com/davecheney/httpstat (Go) И вот какие там ограничения. httpstat (Python):
- это по сути обертка над curl - без curl не работает
- проект давно не развивается
- по набору фичей тоже получается бедней, чем у меня httpstat (Go):
- нативная реализация без curl. Удобно
- но это скорее удобный curl -v с подсветкой
- нет глубокого TLS аудита
- нет JSON экспорта для автоматизации и регрессионных проверок Короче, ни одно решение не закрывало мои сценарии полностью, плюс захотел свое ,как мне кажется, более интересное. Что делает httptap по другому 🎯 Чистая Python экосистема
- без внешнего curl и системных зависимостей
- минимум зависимостей: httpx, dnspython, rich
- работает на macOS, Linux, Windows
- можно использовать как CLI и можно использовать как библиотеку внутри питоновского кода 📊 Продвинутый трейсинг
- точные замеры через httpcore trace hooks, а не парсинг вывода curl
- полная цепочка редиректов с таймингами на каждом хопе
- честно помечает метрики как is_estimated, если где то пришлось сделать фолбек
- это не просто "запрос занял N мс", это поэтапный waterfall 🔒 Глубокая TLS инспекция
- версия протокола и cipher suite
- common name сертификата
- сколько дней осталось до истечения (cert_days_left)
- отдельный TLS probe чтобы это измерить и показать отдельно 🌐 Работа с сетью
- определяет IPv4/IPv6
- показывает какой IP был на каждом шаге редиректа 💾 Удобные форматы вывода
- rich waterfall - человекочитаемая табличка с этапами
- compact - однострочник для логов
- metrics-only - только цифры, чтобы парсить в скриптах или в CI
- полный JSON экспорт со всеми метаданными по каждому шагу, включая тайминги DNS/TCP/TLS/TTFB/Transfer, хедеры, сертификаты, summary
- максирование чувствительных заголовков при экспорте в JSON 🔧 Расширяемость
- четкие интерфейсы для DNS резолвера, TLS инспектора, визуализации
- можно подменить компонент и встроить httptap в свою отладку
- это не тупо консолька, это реально пригодно как часть пайплайна Как это устроено внутри В отличие от httpstat (python), который полагается на curl, httptap делает все сам внутри Python:
- использует httpx/httpcore и низкоуровневые trace hooks, то есть мы реально видим поведение клиента на уровне сокетов
- лезет в TLS руками и вытаскивает параметры шифрования и сертификат
- полностью контролирует измерения, а не просто печатает чужую статистику Для чего это вообще
- performance troubleshooting - где именно тормозит API
- regression analysis - сравнение базовой метрики и текущей
- tls audit - что там с сертификатом и шифром
- network diagnostics - DNS, IPv4 vs IPv6, латентность соединения
- redirect chain analysis - как реально ходит запрос до финальной точки Если вы отлаживаете API и вам нужно не просто "оно отвечает медленно", а понять почему - забирайте, пишите фидбек и контрибутьте. 🚀