Cloudflare открыла код pvcli — инструмент упрощает проверку OHTTP и приватных прокси

Cloudflare 27 июля 2026 года опубликовала исходный код pvcli — консольного клиента для тестирования сложных протоколов конфиденциальности. Инструмент собирает многоступенчатый запрос OHTTP в одну команду, показывает этапы шифрования и помогает быстрее определить, где возникла ошибка — у ретранслятора, шлюза или конечного сервера.

Cloudflare открыла код pvcli
Cloudflare открыла код pvcli

Cloudflare превратила внутренний отладчик приватных прокси в открытый проект

Команда Cloudflare годами отлаживала сервисы, где запрос пользователя проходит через несколько независимых узлов. Ручная проверка таких цепочек требовала вспомогательных скриптов, чтения двоичных данных и постоянного обращения к техническим стандартам. Теперь этот опыт собран в pvcli, а код проекта доступен всем желающим под лицензией Apache 2.0.

Название расшифровывается как privacy client. По стилю работы программа напоминает curl: пользователь передаёт адрес, HTTP-метод, заголовки и данные, а pvcli выполняет запрос и при необходимости выводит подробный журнал. Новость касается специализированного инструмента для приватных прокси и OHTTP. Wrangler, основной CLI для Cloudflare Workers и других сервисов компании, развивается отдельно.

В официальном анонсе Cloudflare объясняет решение ростом сложности собственной инфраструктуры Privacy Proxy и Privacy Gateway. Эти технологии применяются в Apple Private Relay, Microsoft Edge Secure Network VPN и анонимном режиме приложения Flo. Чем больше конфигураций появлялось у клиентов, тем чаще инженерам приходилось писать одноразовые тестовые программы под конкретную схему.

Открытый pvcli даёт разработчикам общий инструмент для воспроизведения проблем. Команды смогут запускать одинаковый тест со своей стороны, сравнивать журналы и точнее определять участок, где запрос перестал соответствовать протоколу.

OHTTP разделяет сведения о пользователе и содержимое запроса

Основная сфера применения pvcli — это Oblivious HTTP, или OHTTP. Этот протокол устроен так, что один участник цепочки видит адрес пользователя, а другой — обрабатывает запрос. Такое распределение ролей затрудняет связь конкретного человека с сайтом, API или данными, которые он запрашивает.

В типичной схеме участвуют четыре стороны:

  1. клиент формирует и шифрует HTTP-запрос;
  2. ретранслятор принимает соединение и скрывает сетевые сведения о клиенте;
  3. шлюз расшифровывает запрос и отправляет его дальше;
  4. конечный сервер возвращает ответ по той же цепочке.

Для пользователя всё происходит мгновенно. Инженер же при сбое видит восемь этапов: получение открытого ключа, кодирование Binary HTTP, шифрование, передача через ретранслятор, расшифровка на шлюзе, запрос к серверу и обработка ответа. Ошибка в длине поля, заголовке или криптографическом идентификаторе может прервать весь обмен.

Cloudflare приводит показательный случай: лишний пробел в теле запроса менял число байтов и приводил к ответу malformed request. Ручная диагностика требовала разобрать длинную шестнадцатеричную строку и проверить структуру по RFC. pvcli показывает декодированные параметры, сформированный Binary HTTP и зашифрованные данные в журнале, поэтому подобная ошибка становится заметнее.

Один вызов pvcli заменяет цепочку временных скриптов

pvcli принимает параметры ретранслятора, шлюза и конечного адреса в одной команде. Инструмент самостоятельно получает конфигурацию ключей, кодирует HTTP-запрос в двоичный формат, шифрует его и обрабатывает ответ.

Установка пока выполняется через Cargo из репозитория GitHub:

cargo install --git https://github.com/cloudflareresearch/pvcli

После установки pvcli можно использовать как обычный клиент HTTP/2 или HTTP/3:

pvcli --http3 https://cloudflare.com/cdn-cgi/trace

Для OHTTP добавляются параметры --ohttp, --first-hop и --proxy. Первый указывает ретранслятор, второй — шлюз. Заголовки для конечного сервера и первого узла задаются раздельно, что пригодится при проверке авторизации и маршрутизации.

Уровень детализации регулируется флагами -v, -vv и -vvv. Максимальный режим выводит конфигурацию ключей, разобранный URI, поля Binary HTTP и байты зашифрованного сообщения. Такой журнал помогает сравнить фактический запрос со стандартом и выяснить, на каком шаге появились неверные данные.

pvcli поддерживает HTTP/3, CONNECT и взаимную TLS-аутентификацию

Первая открытая версия уже выходит за пределы базовой проверки OHTTP. В репозитории заявлены запросы GET и POST через HTTP/2 и HTTP/3, работа поверх TLS и подключение через HTTP CONNECT-прокси.

Инструмент умеет передавать отдельные заголовки прокси и ретранслятору. Это полезно в корпоративных системах, где промежуточный узел требует токен доступа, а конечный API получает собственный набор заголовков. Для ретранслятора предусмотрена взаимная TLS-аутентификация: клиент может указать сертификат и закрытый ключ, чтобы обе стороны подтвердили друг друга до передачи данных.

Поддержка HTTP/3 позволяет проверять приватные сервисы, работающие поверх QUIC. Разработчик получает единый интерфейс для нескольких транспортов и может сравнить поведение одной схемы через HTTP/2 и HTTP/3 без отдельного тестового клиента для каждого варианта.

Apache 2.0 разрешает доработку и интеграцию pvcli

Лицензия Apache 2.0 позволяет использовать код pvcli в коммерческих и внутренних проектах, изменять его и распространять производные версии при соблюдении условий лицензии. Cloudflare принимает pull request и предлагает сообществу участвовать в развитии клиента.

Открытый код особенно полезен разработчикам собственных OHTTP-шлюзов, исследователям протоколов конфиденциальности и командам, которым приходится проверять совместимость реализаций разных поставщиков. Они могут увидеть точную последовательность операций, сверить криптографические параметры и добавить поддержку собственной архитектуры.

Для Cloudflare публикация тоже решает практическую задачу. Клиенты смогут приложить воспроизводимую команду и подробный журнал к обращению, а инженеры получат больше данных о сбое ещё до совместной отладки инфраструктуры.

Экспериментальный статус pvcli требует осторожности

В README проект прямо обозначен как экспериментальный. Аудит безопасности пока отсутствует, программа предоставляется без гарантий и не участвует в программе вознаграждений Cloudflare за найденные уязвимости.

Эти ограничения особенно существенны для систем, которые обрабатывают реальные пользовательские данные или секретные ключи. pvcli уже подходит для лабораторных проверок, разработки и воспроизведения ошибок. Решение о применении в производственной среде требует отдельной оценки кода, зависимостей и модели угроз.

Текущая версия использует криптографию HPKE и TLS 1.3, а среди зависимостей указаны hpke, boring, hyper-boring, tokio-quiche и quiche. Поддержка постквантового HPKE пока находится в планах. Часть технологий, с которыми работает проект, по-прежнему описана черновиками IETF, поэтому интерфейсы и поведение могут меняться вместе со спецификациями.

Cloudflare планирует добавить MASQUE, Privacy Pass и постквантовую защиту

Cloudflare рассматривает pvcli как общий клиент для нескольких протоколов конфиденциальности. В дорожной карте указаны MASQUE, Privacy Pass, передача TCP через HTTP/3, работа с UDP и IP поверх HTTP/2 и HTTP/3.

Для OHTTP команда хочет добавить постквантовую криптографию, измерение задержек, Chunked OHTTP и более подробные журналы. Эти функции превратят pvcli в средство проверки производительности и совместимости, а не только корректности отдельного запроса.

Публикация исходного кода даёт проекту шанс стать общей точкой проверки для разных реализаций приватных прокси. Ближайшая интрига связана с тем, примут ли pvcli разработчики за пределами инфраструктуры Cloudflare и появятся ли независимые проверки его криптографической части.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться