trueNetLab logo
RU
Kitesurf и Obscura: кто контролирует AI-браузер?

Kitesurf и Obscura: кто контролирует AI-браузер?

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

В моей статье о WebMCP и агентном вебе речь шла о сайтах, предлагающих агентам структурированные функции. Kitesurf и Obscura решают другую сторону этой проблемы. Пока у большей части веба нет интерфейса для агентов, AI-системам по-прежнему нужен движок, способный читать обычные страницы и взаимодействовать с ними.

Именно здесь Cloudflare позиционирует Kitesurf. Новый браузер работает на Cloudflare Workers, использует Chrome DevTools Protocol и должен предоставлять агентам веб-страницы значительно дешевле, чем полноценный процесс Chromium. Интересна не только архитектура. Сама Cloudflare говорит, что первый прототип был вдохновлён Obscura, независимым браузером с открытым исходным кодом на Rust.

Однако Obscura преследует ещё одну цель. Его необязательный stealth-режим пытается скрыть типичные признаки автоматизированных браузеров. Kitesurf этого не делает. Напротив, Browser Run намеренно помечает исходящие requests, чтобы владельцы сайтов могли распознать автоматизацию Cloudflare и криптографически проверить её происхождение.

Отсюда возникает неудобный вопрос. Взяла ли Cloudflare хорошую идею из открытого проекта, убрала неудобную для обнаружения ботов часть и предпочла превратить её в собственный контролируемый продукт?

Короткий ответ таков: Эта критика отчасти указывает на реальный конфликт интересов. Но пока нет доказательств, что именно он объясняет появление Kitesurf. С технической и стратегической точки зрения здесь происходит нечто большее, чем создание очищенной копии Obscura.

Kitesurf и Obscura создают не просто два браузера. Они формируют два разных набора правил, определяющих, насколько заметными должны быть AI-агенты в вебе.

Основа анализа и ограничения

Этот анализ основан на статье Cloudflare от 6 августа 2026 года, актуальной документации Browser Run, а также на проверке кода и документации публичного репозитория Obscura, проведённой 25 августа 2026 года. Актуальная на тот момент версия Obscura 0.2.1 вышла двумя днями ранее. В частности, были рассмотрены архитектура, сетевые пути, реализация stealth, рекомендации по безопасности, примечания к выпускам и отдельный репозиторий с benchmark.

Я не проводил собственных измерений производительности Kitesurf и не испытывал системы на реальных bot challenge в производственной среде. Поэтому выводы о качестве обхода обнаружения основаны на реализации, задокументированных ограничениях и опубликованных производителями benchmark. Там, где из этого выводится стратегическое намерение Cloudflare, речь явно идёт об интерпретации, а не о подтверждённом заявлении компании.

Что должен уметь AI-браузер с технической точки зрения

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

И всё же агенту требуется больше, чем HTTP client. Современные страницы часто сначала отдают почти пустой каркас HTML. JavaScript создаёт настоящее содержимое, запускает дополнительные requests, изменяет DOM и реагирует на действия пользователя. Поэтому пригодному AI-браузеру необходимы как минимум:

  • JavaScript runtime
  • достаточно совместимый DOM
  • логика сети, cookie и origin
  • события мыши, клавиатуры, форм и навигации
  • интерфейс для агентов и средств автоматизации
  • в зависимости от задачи, layout, screenshots и вывод PDF
  • строгие ограничения для стороннего кода, времени выполнения, памяти и сетевого доступа

Kitesurf и Obscura сокращают Chromium до компонентов, важных для агентов. Оба предлагают CDP, поэтому существующие инструменты вроде Playwright и Puppeteer не нужно переделывать под совершенно новый интерфейс. Оба исполняют настоящий JavaScript и создают живой DOM. Оба разрабатывают собственные пути rendering вместо простого запуска Chromium с другими параметрами.

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

Kitesurf: браузер из Workers

Cloudflare не создавала Kitesurf как единый исполняемый файл. Движок распределён между несколькими компонентами Worker с разными границами доверия.

Engine, PageScript и PageRenderer

Engine Worker служит общедоступной точкой входа. Он принимает соединения CDP и вызовы REST, а также хранит состояние сессии. Благодаря этому существующий CDP client может обращаться к Kitesurf примерно так же, как к Chrome.

Для каждой страницы и вынесенного iframe Kitesurf запускает PageScript Worker. Он получает свежий глобальный контекст JavaScript и DOM страницы. HTML и CSS обрабатываются компонентами Blitz и Stylo. Обычный JavaScript и WebAssembly выполняются в V8 isolate соответствующего Worker.

Примечательное исключение — eval(). По соображениям безопасности Cloudflare Workers не разрешает динамическую оценку кода нативно. Поэтому Kitesurf использует Boa, написанный на Rust движок ECMAScript, чтобы всё же выполнять такие вызовы внутри среды Worker. Это прагматичное решение, но оно создаёт сложную границу совместимости. Часть кода выполняется непосредственно в V8, а динамически созданный код проходит через второй JavaScript-движок, поведение которого потенциально отличается.

PageRenderer Worker создаёт пиксели для screenshots и PDF. Он получает описание scene, растеризует его и возвращает результат. Renderer не хранит существенного состояния страницы. Если он зависнет или аварийно завершится, engine может отбросить его и перезапустить задачу rendering.

Доступ к сети разрешён только одному компоненту

С точки зрения безопасности особенно интересен SandboxOutbound Worker. Только этот компонент может загружать ресурсы из интернета. Он применяет правила CORS, раздельно управляет cookie каждой страницы, фильтрует responses и добавляет headers, похожие на браузерные. Таким образом, PageScript и Engine не получают неограниченный сетевой доступ.

Это разумное отличие от многих самодельных конфигураций агентов. Браузерный агент открывает не только страницы, которым человек уже доверяет. Он переходит по ссылкам из результатов поиска, чужих документов и даже манипулятивных prompts. Каждый просмотр страницы — untrusted input. Поэтому сетевая граница является не оптимизацией, а частью модели безопасности.

Кроме того, Kitesurf по возможности использует stateless-компоненты. То, что не хранит состояние, можно завершить и перезапустить после сбоя. Для коротких, сильно меняющихся workloads агентов такая модель хорошо соответствует платформе Worker.

Cloudflare сообщает о более чем 215 000 успешно пройденных Web Platform Tests и хорошем покрытии DOM, HTML, CSS, SVG, Selection и XHR. Цифра впечатляет, но сама по себе не говорит о зрелости. WPT состоит из файлов с множеством subtests, а Cloudflare не публикует ни полную долю успешных тестов, ни код и точную конфигурацию тестирования Kitesurf. Поэтому число нельзя корректно сравнить с публичным WPT runner Obscura или совместимостью Chromium. На момент представления Kitesurf разрабатывался всего двенадцать недель и всё ещё остаётся beta.

Эффективнее, но не быстрее

Собственные измерения Cloudflare показывают основную экономическую привлекательность. На наборе из 14 URL и пяти запусках Kitesurf, по данным Cloudflare, потребовал в 3,1 раза меньше CPU и в 4,7 раза меньше памяти, чем прогретый Chromium pool, при создании screenshots. При извлечении HTML он использовал в 3,8 раза меньше CPU и в 7 раз меньше памяти.

При этом latency была хуже. Медианное время создания screenshots оказалось в 1,8 раза больше, а извлечения HTML — в 1,7 раза больше. Следовательно, Kitesurf прежде всего экономит инфраструктуру на одну задачу. Он не становится автоматически самым быстрым способом обработать отдельную страницу.

Эти цифры полезны, но не являются независимыми benchmark. Cloudflare сама выбрала набор, среду и объект сравнения. Прогретый Chromium pool — лишь один из нескольких возможных режимов работы. Измерение подтверждает потенциал архитектуры. Оно ещё не доказывает, что Kitesurf дешевле или надёжнее для любых реальных workloads агентов.

Obscura: независимый браузер на Rust

Obscura развивает ту же базовую идею как локальный или self-hosted проект с открытым исходным кодом. Код распространяется по лицензии Apache 2.0. Актуальная версия 0.2.1 вышла 23 августа 2026 года и состоит из нескольких Rust crates для CLI, CDP, логики браузера, JavaScript, DOM, сети, MCP и rendering.

V8, собственный DOM и CPU rendering

Obscura подключает V8 через deno_core. Браузерные API реализованы большим слоем JavaScript bootstrap и операциями Rust. DOM является собственной реализацией. Для layout и rendering проект, помимо прочего, использует Taffy, собственную браузерную логику и основанный на CPU путь paint.

Obscura также поддерживает CDP и имеет MCP server. Агент может открывать страницы, получать DOM snapshots, нажимать элементы, заполнять формы, исполнять JavaScript, создавать screenshots или PDF. Практическое преимущество заключается в контроле: engine можно запускать локально, в container или в собственной инфраструктуре. Учётная запись Cloudflare технически не требуется.

Цена этого преимущества — самостоятельная эксплуатация. Согласно документации архитектуры, страницы одного процесса совместно используют V8 isolate, а работа JavaScript сериализуется через global lock. Watchdogs и жёсткие deadlines должны не позволять одной странице навсегда заблокировать процесс. Тем не менее документ по безопасности верно формулирует ограничение: эти механизмы не заменяют изоляцию на уровне операционной системы. Тем, кто обрабатывает враждебные страницы в больших масштабах, следует запускать Obscura в containers или виртуальных машинах с ограниченной сетью.

Это не мелкая оговорка. Rust не защищает от каждой уязвимости в V8, нативных dependencies или на границах FFI. Процесс, исполняющий произвольный JavaScript из интернета, остаётся сервисом высокого риска.

Stealth-режим — это больше, чем User-Agent

Самое интересное отличие Obscura — необязательный stealth build. Он заменяет обычный transport reqwest на wreq с BoringSSL и эмулирует похожий на Chrome TLS handshake. Сюда входят ClientHello, ALPN и порядок cipher suites. Это важно, потому что системы обнаружения ботов проверяют не только видимый User-Agent. Они сравнивают, согласуются ли HTTP headers, TLS fingerprint и свойства JavaScript в единой истории браузера.

На стороне JavaScript Obscura старается последовательно продолжить эту историю. Код имитирует, среди прочего, navigator.userAgentData, значения platform, экран, GPU, Canvas, audio, battery и другие fingerprint surfaces. navigator.webdriver остаётся невидимым. Внутренние свойства Obscura скрываются при enumeration, а нативные функции должны выглядеть как настоящие браузерные функции при вызове Function.prototype.toString().

event.isTrusted также обрабатывается дифференцированно. Событие, созданное кодом страницы через new Event(), остаётся untrusted. Input из пути CDP может быть помечен как событие, созданное браузером. Безусловный возврат true было бы легко обнаружить, к тому же он неверно воспроизводил бы нормальное поведение веба.

Stealth-путь охватывает навигации, subresources, fetch() и XHR. Это принципиально важно. Если только основной документ использует похожий на Chrome TLS fingerprint, а последующий API request внезапно выглядит как Rust library, возникает именно то противоречие, которое ищут системы обнаружения ботов.

Кроме того, Obscura блокирует известные endpoints tracking и fingerprinting. Характеристики браузера можно менять для каждой сессии. Однако документация предупреждает о несогласованных комбинациях. Регион IP, часовой пояс, геолокация, JavaScript profile и TLS fingerprint должны соответствовать друг другу. Rotation — не плащ-невидимка. Один exit IP, постоянно переключающийся между различными идентичностями устройств, может выглядеть ещё подозрительнее.

Действительно ли Obscura лучше обходит обнаружение ботов?

В прямом сравнении с Kitesurf Obscura явно сильнее ориентирован на anti-detection. Это видно в коде и документации. Но из этого ещё не следует, что Obscura надёжно обходит современные средства защиты от ботов.

Проект достаточно чётко ограничивает собственные заявления. Stealth-режим должен проходить простые проверки TLS fingerprint или User-Agent. Согласно документации, не поддерживаются:

  • интерактивные challenges Cloudflare
  • активные challenges DataDome и Akamai Bot Manager
  • CAPTCHA
  • rate limits на основе IP

Таким образом, часто встречающееся утверждение, что Obscura обходит обнаружение ботов, верно лишь в узком смысле. Obscura старается меньше походить на обычный headless client. Это не универсальный bypass для challenges.

Современные системы обнаружения ботов оценивают не только fingerprint браузера. Они видят репутацию IP, ASN, частоту requests, навигацию, паттерны мыши и клавиатуры, историю cookie, поведение учётной записи и связи между множеством сессий. Идеально имитированное свойство navigator почти бесполезно, если тысяча requests приходит из одного центра обработки данных в одинаковом ритме.

Публичные benchmark Obscura тоже следует воспринимать осторожно. Отдельный репозиторий содержит воспроизводимые тестовые scripts для WPT, obstacle course, реальных страниц, надёжности и согласованности stealth. Это лучше простой маркетинговой таблицы. Однако stealth suite выполняется локально и прежде всего проверяет внутреннюю согласованность fingerprint, определённого самим проектом. Он не доказывает, что крупные коммерческие системы обнаружения ботов примут traffic за человеческий.

Нужно учитывать и скорость развития проекта. Согласно примечаниям к выпуску, между Obscura 0.2.0 и 0.2.1 было 122 commits чуть более чем за две недели. Это свидетельствует об активной разработке, но также о поверхности, которая пока сильно меняется. Для молодого браузерного движка успешный демонстрационный запуск не следует сразу считать доказательством готовности к production.

Cloudflare не хочет невидимого бота

С Kitesurf ситуация принципиально иная. Cloudflare Browser Run добавляет к исходящим requests ненастраиваемые headers. К ним присоединяются Web Bot Auth signatures, позволяющие целевому серверу криптографически проверить, что request поступил из браузерной инфраструктуры Cloudflare.

FAQ Cloudflare однозначен: запросы Browser Run всегда распознаются Cloudflare как bot traffic. Владелец сайта решает, разрешить или заблокировать их. Тот, кто хочет автоматически тестировать собственную zone, может целенаправленно разрешить этот traffic с помощью правила WAF.

Kitesurf работает как один из вариантов внутри Browser Run. Поэтому было бы ошибкой считать отсутствие маскировки лишь техническим отставанием. Прозрачная идентичность бота является частью модели продукта. Cloudflare одновременно управляет платформой браузерной автоматизации и продуктами безопасности, с помощью которых владельцы сайтов обнаруживают и контролируют ботов. Собственный браузер, намеренно обходящий эти средства контроля, напрямую повредил бы этой модели.

Cloudflare также открыто говорит, что сейчас Kitesurf не может согласовать bot-challenge handshake с настоящими TLS fingerprints. Для таких сайтов компания по-прежнему рекомендует стандартный Browser Run на основе Chromium. Но даже этот Chromium traffic остаётся идентифицируемым как автоматизация благодаря headers и signatures Cloudflare.

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

Но решение можно и критиковать. Личный агент, который читает общедоступную страницу от имени пользователя, технически оказывается ближе к коммерческому crawler, чем к браузеру этого пользователя. Владелец сайта получает простой переключатель для блокировки агентов Cloudflare. Пользователь не может перейти к обычной сессии, похожей на человеческую, даже если он всего лишь хотел автоматизировать собственное исследование.

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

Почему Cloudflare всё же создала собственную систему

Cloudflare пишет, что Obscura послужил первым источником вдохновения и сначала был перенесён на Workers с помощью AI-агента. Из этого почти неработающего proof of concept появился Kitesurf. Это ясное указание источника, а не скрытая претензия на то, что идея возникла в собственной лаборатории.

Однако тезис о том, что Cloudflare отказалась от Obscura из-за его stealth-функции, отсутствует и в статье о Kitesurf, и в документации Browser Run. Есть несколько более заметных причин.

Obscura создан как self-hosted процесс. Kitesurf спроектирован как распределённое приложение Worker. Cloudflare хочет использовать isolates, Service Bindings, Worker-RPC, собственную outbound sandbox и существующие API Browser Run. Для этого недостаточно просто где-то запустить Rust binary.

Cloudflare также требуется engine, жизненный цикл, потребление ресурсов, телеметрия и поведение при ошибках которого соответствуют собственной платформе. Stateless renderer, отбрасываемый после сбойного RPC, представляет собой другую эксплуатационную архитектуру, чем процесс с общим V8 isolate и global lock.

Наконец, Kitesurf является компонентом продукта. CDP делает клиент относительно переносимым, но сам сервис остаётся тесно связан с Browser Run и Cloudflare Workers. Cloudflare обещает позднее открыть исходный код Kitesurf и позволить клиентам развёртывать его в собственном аккаунте Cloudflare. Но сегодня код ещё не опубликован. В Obscura архитектуру, границы безопасности и реализацию можно проверить уже сейчас. В случае Kitesurf пока можно оценивать лишь опубликованный дизайн, документацию и наблюдаемое поведение.

Именно здесь критика оправданна. Cloudflare пользуется открытой идеей и существующим проектом, сохраняя собственное развитие поначалу закрытым. Apache 2.0 это разрешает, и Cloudflare прямо называет Obscura. Юридически всё чисто. Но для компании, обещающей скорое открытие, в конечном итоге имеет значение опубликованный код, а не слово “soon”.

Два браузера, две модели контроля

Важнейшие различия не сводятся к скорости.

ОбластьKitesurfObscura
ЭксплуатацияCloudflare Browser Run и Workersлокально или self-hosted
Кодпубликация обещана, сейчас закрытApache 2.0, исходный код открыт
Runtimeнесколько изолированных компонентов Workerпроцесс Rust с V8, DOM, сетью и rendering
ИнтерфейсыCDP, API Browser Run, MCP через CDP clientCDP, CLI, Rust API и собственный MCP server
Идентичность ботанамеренно распознаётся и криптографически подписываетсянеобязательный stealth-режим для простых anti-bot проверок
Сложные challengesсейчас недоступны в Kitesurfсогласно собственной документации, тоже не поддерживаются
IsolationWorkers isolates и отдельный сетевой компонентwatchdogs и защита от SSRF, isolation ОС остаётся задачей оператора
Масштабированиедля коротких и сильно меняющихся edge workloadsсобственные hosts, containers и процессы Worker
Контроль данныхобработка в инфраструктуре Cloudflareполный контроль при правильном self-hosting

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

Нерешённая проблема безопасности находится над браузером

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

Текст с prompt injection в DOM не обязан вызывать V8 sandbox escape. Достаточно, чтобы модель интерпретировала его как инструкцию, раскрыла внутренние данные, открыла неправильную ссылку или использовала мощный tool. Сетевая isolation защищает браузерную инфраструктуру. Она не защищает автоматически намерение пользователя.

Поэтому готовому к production браузеру агентов необходимы дополнительные средства контроля:

  • отдельные браузерные contexts для не связанных друг с другом задач
  • минимум secrets и короткоживущие tokens для каждой сессии
  • явные подтверждения перед login, покупкой, upload или изменением данных
  • правила domain и egress за пределами JavaScript страницы
  • logs, связывающие решение модели, действие браузера и результат
  • безопасный путь остановки для неожиданной навигации и downloads
  • защита от превращения содержимого страницы в system instructions

Cloudflare называет Prompt Injection и Tool Safety приоритетами, но статья о Kitesurf прежде всего описывает isolation браузера. Obscura предоставляет браузерные tools, но не берёт на себя авторизацию вышестоящего агента. Используя любой из проектов, эту брешь нужно закрывать самостоятельно.

Какая модель подходит для какой задачи?

Для screenshots, извлечения HTML или документов с собственных разрешённых страниц Kitesurf интересен. Архитектура Worker снижает эксплуатационные затраты, а прозрачная идентичность бота не мешает в собственной среде. Операторы могут явно разрешить Browser Run и получить отслеживаемый источник.

Для локальных исследований, внутренней автоматизации или сред со строгими требованиями к контролю данных привлекательнее Obscura. Но тогда engine следует разместить в хорошо ограниченном runtime. Container или VM, ограниченный egress, раздельные credentials и включённый --obey-robots не должны быть поздними дополнениями.

Для длительных аутентифицированных сессий, media, WebGL или страниц со сложной anti-bot защитой реальный браузер Chromium часто остаётся более практичным выбором. Cloudflare тоже открыто говорит это о Kitesurf. Меньший браузер не обязательно совместим лучше.

Stealth-функции следует применять только для законных, авторизованных тестов или автоматизации, ориентированной на конфиденциальность. Техническая доступность страницы не отвечает ни на юридический вопрос, ни на вопрос о соблюдении её правил, rate limits и ресурсов.

Мой вывод

Obscura явно показал Cloudflare, что агентный браузер не обязательно должен быть Chromium. Kitesurf перенимает эту базовую идею и создаёт на её основе Worker-native архитектуру с убедительной isolation, меньшим потреблением ресурсов и прямой интеграцией с Browser Run.

В области обнаружения ботов Obscura действительно действует агрессивнее. Его stealth-режим гораздо целенаправленнее моделирует поверхности TLS, HTTP и JavaScript, чем Kitesurf. Но формулировка «лучше обходит» слишком широка. Доказана лучшая маскировка от простых проверок fingerprint. Сам проект отрицает обход современных интерактивных challenges.

Сдержанность Cloudflare объясняется не только технической незрелостью. Browser Run должен распознаваться как бот. Неудаляемые headers и Web Bot Auth превращают эту прозрачность в характеристику продукта. Это соответствует интересам компании, которая с другой стороны продаёт Bot Management. Но одновременно не даёт Kitesurf стать независимым браузером, действующим от имени пользователя.

Поэтому самая сильная критика состоит не в том, что Cloudflare просто скопировала Obscura. Архитектура и модель эксплуатации слишком сильно различаются, а Cloudflare открыто указывает источник вдохновения.

Более серьёзная критика звучит так: Cloudflare создаёт AI-браузер, идентичность, runtime, распределение и доступ которого полностью соответствуют модели контроля Cloudflare. Для операторов это может быть очень разумно. Но для открытого, ориентированного на пользователя агентного веба это лишь один из возможных ответов.

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

До следующего раза,
Joe

Источники