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/) перед развёртыванием.