HeadlessChrome101: Как Jit-Browser превращает Chrome в полноценный многофункциональный браузер-серверный слой
Это пошаговое руководство на простом языке о том, что делает Jit-Browser с безголовым Chrome, как он использует запатентованный Jit-TR runtime и что еще нужно, чтобы сделать это функцией браузера высшего класса, а не просто еще одним скриптом.
От простого инструмента для создания скриншотов до Jit-Browser
Мы начали с небольшого инструмента командной строки: getpage https://example.com page.png. Он запустил Chrome в контейнере Docker, сделал скриншот отрендеренного example.com со страницы и завершил работу.
Полезный прототип. Каждый вызов был холодным стартом. Он ничего не знал о переводе, сессиях или состоянии. Это была просто безголовая камера.
Jit-Browser — это следующий шаг. Он все еще использует настоящий Chrome, но теперь:
- Он регистрирует, что происходит внутри страницы.
- Он внедряет скрипт Jit-TR в качестве слоя перевода.
- Он может следовать простым потокам, таким как баннеры с печеньем или выпадающие списки.
- Он захватывает полностью переведенный HTML, а не просто скриншот.
Эта страница объясняет этот процесс, чтобы вы могли увидеть, что мы не просто говорим. Мы показываем, как многоязычный уровень на уровне браузера может действительно работать.
Процесс Jit-Browser в 6 шагов
На высоком уровне каждый захват следует одной и той же последовательности.
-
Запустите настоящий Chrome (безголовый) внутри Docker.
Мы используем Puppeteer (pptr.dev), чтобы запустить тот же движок, который управляет обычными браузерами, но без видимого окна. Никакого пользовательского парсера, никакого фальшивого рендеринга. -
Примените куки или состояние входа (если настроено).
Для демонстраций, которые требуют входа в систему, мы воспроизводим ваши куки. Никакого грубого насилия, никаких попыток угадать пароль, никакого скрейпинга аккаунтов, которые мы не контролируем. -
Загрузите целевую страницу точно так же, как пользователь.
HTML, CSS, JavaScript, шрифты, изображения. Мы ждемnetworkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle), чтобы медленные пакеты и шрифты могли завершить загрузку. -
Внедрите фрагмент Jit-TR в качестве слоя.
Мы добавляем тег скрипта, указывающий на наш запатентованный код выполнения — например:. Модуль выполнения Jit-TR проходит по открытым DOM (document.head и document.body), отправляет извлеченный полезный груз обратно на наш (или любой) сервер для обработки, получает результаты (перевод, улучшение или новую информацию), переписывает видимый текст и добавляет новые слои смысла поверх оригинала. Единственные ограничения, которые существуют, просты: скрипты могут быть дополнены, но новые инструкции никогда не могут вмешиваться в собственные скрипты сайта. Это обычно реализуется с помощьюMutationObserverэкземпляров для отслеживания соответствующих изменений в DOM, применения обновлений в небольших, целенаправленных патчах и избегания вмешательства в любую существующую логику приложения или обработчики событий. -
Запустите необязательные потоки: куки, клики и прокрутка.
Настоящие страницы часто требуют одного или двух действий: закрытие баннера с печеньем, открытие меню, прокрутка для загрузки дополнительных предложений. Jit-Browser может запустить простой скрипт потока, чтобы эти элементы были видны перед захватом. -
Захватите дополненный вывод.
Мы сохраняем:- Полностью измененный HTML для размещения или аудита.
- Трассировку времени для выявления потенциальных узких мест.
Это суть нашего HeadlessChrome101. Это ментальная модель того, как браузер может рассматривать новые или существующие данные как встроенный слой внутри любого браузера.
Почему это не просто игрушечный скрипт
Jit-Browser важен, потому что он доказывает, что уровень на уровне браузера может быть построен с теми же компонентами, которые поставщики браузеров уже используют каждый день, и что этот уровень может безопасно размещать полное взаимодействие клиент-сервер с любым внешним сервисом, включая наш собственный Jit-TR runtime. Это также точка, где мы добавляем улучшения, учитывающие SEO, такие как rel="alternate" hreflang="..." ссылки и обогащенные sitemap.xml записи. На практике это означает, что мы можем раскрывать дополненную информацию внутри недеструктивных HTML-областей, таких как элементы слева или справа от существующей страницы, или с помощью модальных окон JavaScript, которые добавляют выбор языка и SmartSearch, не вмешиваясь в оригинальную компоновку или скрипты.
-
Настоящий движок Chrome.
Все работает на самом Chrome - просто без видимого окна. Если это работает в Chrome для ваших посетителей, это работает в Jit-Browser. -
Осведомленный о политике безопасности контента.
Большинство сайтов блокируют скрипты с помощью CSP. В безголовом режиме мы можем использоватьsetBypassCSP(true)(https://pptr.dev/api/puppeteer.page.setbypasscsp) для внедрения Jit-TR в среду захвата. Мы не требуем от производственных сайтов ослабления их политик безопасности. -
Полное время и ведение журнала.
Мы регистрируем время запуска, время загрузки страницы, запуск Jit-TR, шаги потока и захват. Вы можете увидеть, куда уходят миллисекунды и что на самом деле делает Jit-TR на странице. -
Разделение скрипта и слоя.
Сегодня Jit-TR может быть "просто скриптом", который вы добавляете на сайт. В Jit-Browser мы рассматриваем его как стабильный слой, который всегда работает. Это очень близко к тому, как поставщик браузера мог бы встроить его нативно.
Что уже решает API Jit-TR
Сложная часть - это не безголовый Chrome. Сложная часть - надежно превращать живые, неаккуратные веб-страницы в безопасные многоязычные версии. Наш запатентованный рантайм в api.jit-tr.com уже выполняет эту работу.
Сегодня рантайм API обрабатывает:
-
Выбор языка.
Он считывает параметры, такие какjittr=ES-419, нормализует крайние случаи и регистрирует выбранный язык, например:[Jit-TR] Выбранный язык → ES-419. -
Извлечение DOM, перевод и семантические переписывания.
Рантайм проходит по реальному DOM Chrome, извлекает только видимый текст, создает структурированную нагрузку перевода и записывает результаты обратно на страницу. Все сложные крайние случаи автоматизированы: последовательности эмодзи, HTML-сущности, правила пунктуации и пробелов, строки на смешанных языках и переключение слева направо / справа налево. Он также переписывает языковые скриптовые блоки — включаяи другие теги структурированных данных — обеспечивая, чтобы каждый язык имел правильные, независимые, кэшированные метаданные для поисковых систем и ИИ. -
Поведение клиента.
Он отображает языковые флаги, уважает небезопасные корни и работает как можно безопаснее с одностраничными приложениями и фреймворками.
Все это уже работает на сайтах Jit-TR сегодня. Jit-Browser просто повторно использует это в контролируемой безголовой среде.
Что еще нужно для нативной функции браузера
Что еще нужно для нативной функции браузера
Чтобы превратить Jit-Browser в встроенную функцию браузера, никому не нужно чудо - просто возможность внести небольшой, четко определенный набор изменений, которые уже понимают движки браузеров.
Чтобы превратить Jit-Browser в встроенную функцию браузера. Это не чудо, просто небольшой набор изменений, которые уже понимают браузеры.
-
Нативный хук в движке.
Сегодня мы имитируем это, внедряя скрипт из безголового Chrome. Реальная интеграция предоставила бы Jit-TR выделенное место для перевода, чтобы он мог читать и записывать текст DOM в нужный момент в конвейере рендеринга. -
Стандартный способ выразить языковое намерение.
Мы уже используем?jittr=LANGи куки. Решение на уровне браузера могло бы учитывать языковые настройки браузера и выбор пользователя, такие как "всегда переводить этот сайт на ES-419". -
Четкая структура безопасности и конфиденциальности.
Правила того, какой текст может покинуть устройство, как долго он может кэшироваться и как сайты или пользователи могут отказаться, должны быть четкими и задокументированными. Нативная реализация внутри браузера может быть на самом деле безопаснее, чем произвольные скрипты.
Пример: HarmonyOS на ES-419
Вот конкретный пример работы конвейера.
Мы вызываем:
getpageJtrBrowser \
"https://www.harmonyos.com/" \
"jittr=ES-419" \
null \
"ES-419/index.php"
Jit-Browser:
- Запускает безголовый Chrome внутри Docker.
- Загружает
https://www.harmonyos.com/. - Внедряет фрагмент Jit-TR с параметром ES-419.
- Позволяет Jit-TR перевести видимый китайский текст на испанский (Латинская Америка).
- Сохраняет результат как
ES-419/index.php.
Сайт HarmonyOS не нуждается в изменениях. С точки зрения пользователя, кажется, что сайт просто поддерживает их язык.
Почему эта страница существует
HeadlessChrome101 - это резюме, которое показывает:
- Мы используем реальные движки браузеров и реальные правила CSP.
- У нас уже есть работающий, запатентованный рантайм перевода.
- Оставшийся разрыв до нативной функции браузера мал и четко определен.
Если вы разрабатываете браузеры, операционные системы или крупные платформы и хотите универсальный многоязычный слой, который соответствует вашей модели безопасности, мы готовы обсудить это. Код существует. Поведение измеримо. Следующий шаг — партнерство.