poseidon-http-client#
Низкоуровневый HTTP-клиент для Go, реализующий HTTP/1.1, HTTP/2 и HTTP/3 с нуля — собственный фрейминг, HPACK, QPACK и собственный QUIC-стек. Не использует net/http и сторонний протокольный код; четыре прямые зависимости (golang.org/x/net, golang.org/x/crypto для ChaCha20-Poly1305, github.com/andybalholm/brotli, github.com/klauspost/compress для zstd) — это криптографические и компрессионные примитивы, а TLS 1.3 берётся из стандартной библиотеки. Все три версии протокола работают через один API запросов: Do и DoStream. Клиент рассчитан на генераторы нагрузки и инструменты, которым нужен точный контроль над соединениями, стримами и flow control, — это не универсальная замена net/http.
Лицензия MIT. Требуется Go 1.25. Исходный код: github.com/lodgvideon/poseidon-http-client.
Зачем poseidon#
- Один клиент, три версии протокола — HTTP/1.1, /2 и /3 через один и тот же API
Do/DoStream; в стандартной библиотеке Go нет HTTP/3. - Без стороннего протокольного кода — QUIC, HTTP/3, QPACK, HTTP/2, HPACK и HTTP/1.1 целиком реализованы в этом модуле; без
quic-go, безnghttp2, без cgo. Четыре прямые зависимости — криптографические и компрессионные примитивы (ChaCha20-Poly1305, Brotli, zstd), взятые осознанно: самописный AEAD или декомпрессор — это риск для безопасности, а не достоинство. - Кодек wire-формата без аллокаций — HTTP/2 (фреймы, HPACK) и HTTP/3 (QPACK, фреймы HTTP/3, фреймы и заголовки пакетов QUIC) кодируются и декодируются при 0 B/op, 0 allocs/op; контролируется bench-гейтом в CI.
- Точный контроль — стримы, окна flow control, SETTINGS, политика пула, congestion control (NewReno или BBR); ручки, которые
net/httpпрячет. - Встроенные средства для генерации нагрузки — пул соединений, DNS service discovery, ретраи, ограничение частоты запросов, хуки и метрики; всё общее для всех трёх версий протокола.
- Проверено на соответствие RFC — около 200 conformance-тестов с привязкой к разделам RFC, interop-матрица HTTP/3 из трёх серверов (Caddy, nginx, aioquic) поверх реального UDP, фаззинг парсеров wire-формата,
-raceво всех тестах.
Руководства#
**Молодой проект.** Это первый релиз. Клиент реализует критичные для безопасности протоколы (TLS 1.3, QUIC, HPACK/QPACK) с нуля и не проходил независимый аудит безопасности. Поставляется «как есть», использование — на ваш страх и риск (MIT — без гарантий). Прочитайте [Дисклеймер](/poseidon-http-client/ru/docs/disclaimer/) перед развёртыванием.