Автоматизация браузера

Hermes Agent включает полный набор инструментов для автоматизации браузера с несколькими вариантами бэкенда:

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

Обзор

Страницы представлены в видео деревьев доступности (текстовых комплектов), что делает их исправлени для LLM-агентов. Интерактивные элементы получают идентификатор ссылки (например, @e1, @e2), который агент использует для кликов и ввода текста.

Ключевые возможности:

Настройка

💡 Tip

Подписчики Nous

Если у вас есть платная подписка Nous Portal, вы можете использовать автоматизацию браузера через Tool Gateway без отдельных API-ключей. Выполните «модель Гермеса» или «Инструменты Гермеса», чтобы включить его.

Облачный режим База браузера

Для использования облачных браузеров, управляемых Browserbase, страниц:

# Добавьте в ~/.hermes/.env
BROWSERBASE_API_KEY=***
BROWSERBASE_PROJECT_ID=your-project-id-here

Получите учетные данные на browserbase.com.

Облачный режим Использование браузера

Использование браузера в качестве облачного провайдера.

# Добавьте в ~/.hermes/.env
BROWSER_USE_API_KEY=***

Получите API-ключ на browser-use.com. Использование браузера обеспечивает облачный браузер через свой REST API. Если установлены учетные данные и База браузера, и Использование браузера, приоритет в базе браузера.

Облачный режим Firecrawl

Для использования Firecrawl в качестве облачного провайдера браузера:

# Добавьте в ~/.hermes/.env
FIRECRAWL_API_KEY=fc-***

Получите API-ключ на firecrawl.dev. Затем выберите Firecrawl в качестве провайдера браузера:

hermes setup tools
# → Browser Automation → Firecrawl

Дополнительные настройки:

# Самостоятельно размещенный экземпляр Firecrawl (по умолчанию: https://api.firecrawl.dev)
FIRECRAWL_API_URL=http://localhost:3002

# TTL сеанса в секундах (по умолчанию: 300)
FIRECRAWL_BROWSER_TTL=600

Гибридная маршрутизация: облако для публичных URL, локальный для LAN/localhost

При настроении облачного провайдера Hermes автоматически запускает локальный Sidecar Chromium для URL, который разрешен в частном/loopback/LAN-адресе (localhost, 127.0.0.1, 192.168.x.x, 10.x.x.x, 172.16-31.x.x, *.local, *.lan, *.internal, Шлейф IPv6 ::1, локальный канал 169.254.x.x). Публичные URL продолжают использовать облачного провайдера в том же диалоге.

Это решает распространенную проблему «Я разрабатываю локально, но использую базу браузера» — агент может сделать скриншот вашей панели управления на http://localhost:3000 и спарсить https://github.com без переключения провайдеров или отключения защиты SSRF. Облачный провайдер никогда не видит частный URL.

функция включена по умолчанию. Чтобы отключить ее (все URL подходят к настроенному облачному провайдеру, как раньше):

# ~/.hermes/config.yaml
browser:
  cloud_provider: browserbase
  auto_local_for_private_urls: false

При отключенной автомаршрутизации частные URL отклоняются с "Заблокировано: URL-адрес нацелен на частный или внутренний адрес", если только вы также не установилиbrowser.allow_private_urls: true` (что позволяет облачному провайдеру попытаться их открыть — обычно не работает, так как Browserbase и т.д. не может достичь вашей локальной сети).

Требования: локальный сайдкар использует тот же CLI agent-browser, что и чисто локальный. режим, поэтому он должен быть установлен (Инструменты настройки Hermes → Автоматизация браузера устанавливает его автоматически). Перенаправление после перехода с публичного URL на частный адрес по-прежнему блокируется (нельзя использовать трюк с редиректом на внутренний адрес для доступ к вашей локальной сети через общедоступный путь).

Локальный режим Camofox

Camofox — это самостоятельно размещенный Node.js-сервер, оборачивающий Camoufox (форк Firefox с подменой отпечатков на C++). Он обеспечивает локальный антидетекционный взгляд без облачных зависимостей.

# Сначала клонируйте сервер Camofox browser
git clone https://github.com/jo-inc/camofox-browser
cd camofox-browser

# Соберите и запустите с Docker, используя настройки контейнера по умолчанию
# (автоматически определяет архитектуру: aarch64 на M1/M2, x86_64 на Intel)
make up

# Остановите и удалите контейнер по умолчанию
make down

# Принудительная чистая пересборка (например, после обновления VERSION/RELEASE)
make reset

# Просто загрузите бинарные файлы без сборки
make fetch

# Явно укажите архитектуру или версию
make up ARCH=x86_64
make up VERSION=135.0.1 RELEASE=beta.24

make up запускает контейнер по умолчанию. Если вам нужны пользовательские настройки времени выполнения, такие как узел большого куча, VNC или профиль постоянного каталога, сначала выберите образ, а затем запустите его самостоятельно:

# Соберите образ без запуска контейнера по умолчанию
make build

# Запустите с сохранением состояния, VNC live view и большей кучей Node
mkdir -p ~/.camofox-docker
docker run -d \
  --name camofox-browser \
  --restart unless-stopped \
  -p 9377:9377 \
  -p 6080:6080 \
  -p 5901:5900 \
  -e CAMOFOX_PORT=9377 \
  -e ENABLE_VNC=1 \
  -e VNC_BIND=0.0.0.0 \
  -e VNC_RESOLUTION=1920x1080 \
  -e MAX_OLD_SPACE_SIZE=2048 \
  -v ~/.camofox-docker:/root/.camofox \
  camofox-browser:135.0.1-aarch64

С включенным VNC-браузером работает в режиме с графическим интерфейсом, и за ним можно наблюдать в мгновение ока в вашем браузере по адресу http://localhost:6080 (noVNC). Вы также можете подключить собственный VNC-клиент к localhost:5901.

Если вы уже запустили make up, остановите и удалите этот контейнер по умолчанию перед запуском пользовательского:

make down
# затем выполните пользовательскую команду docker run выше

Затем установите в ~/.hermes/.env:

CAMOFOX_URL=http://localhost:9377

Или настройте через hermes Tools → Автоматизация браузера → Camofox.

Когда установлен CAMOFOX_URL, все инструменты браузера автоматически маршрутизируются через Camofox вместо базы браузера или агента-браузера.

Постоянные сеансы браузера

По умолчанию в каждом сеансе Camofox получает случайную идентичность — куки и логины не определяются между перезапусками агента. Чтобы отключить постоянные сеансы браузера, перейдите в следующую строку ~/.hermes/config.yaml:

browser:
  camofox:
    managed_persistence: true

Затем полностью перезапустите Hermes, чтобы была применена новая версия.:::предупреждение Вложенный путь имеет значение Гермес читает browser.camofox.managed_persistence, а не managed_persistence на верхнем уровне. Частая ошибка — напишите:

# ❌ Неправильно — Hermes игнорирует это
managed_persistence: true

Если флаг установлен неправильно, Гермес возвращает молчание случайному эфемерному userId, и ваш вход в состояние будет потерян при каждом сеансе.

Что делает Гермес
Что Гермес не делает
проверь, что это работает
  1. Запустите Hermes и ваш сервер Camofox.
  2. Откройте Google (или вход на любой сайт) в задачу браузера и войдите вручную.
  3. Завершите задачу браузера аналогичным образом.
  4. Запустите новую задачу браузера.
  5. Снова въезд на тот же сайт — вам следует оставаться в системе.

Если на пятом шаге вы выйдете из системы, сервер Camofox не соблюдает стабильный userId. Перепроверьте путь конфигурации, подтвердите, что вы полностью перезапустили Hermes после редактирования config.yaml, и убедитесь, что ваша версия сервера Camofox поддерживает постоянные профили для каждого пользователя.

Где хранить состояние

Hermes получает стабильный userId из каталога в профиле ~/.hermes/browser_auth/camofox/ (или эквивалентного под $HERMES_HOME для нестандартных профилей). Полученные данные профиля браузера хранятся на стороне сервера Camofox, ключом к которому является этот userId. Чтобы полностью удалить постоянный профиль, очистите его на окне Camofox и добавьте соответствующий каталог состояния профиля Hermes.

Внешне управляемые сеансы Camofox

Когда другое приложение станет видимым браузером Camofox (настольный ассистент, пользовательская интеграция, другой агент), настройте Hermes для работы внутри той же идентичности вместо создания собственного изолированного профиля.

Три параметра управляют поведением:

Настройка Переменная окружения Эффект
browser.camofox.user_id CAMOFOX_USER_ID Camofox userId, который Hermes использует при создании вкладок. Установка этого параметра переводит сеанс в режим «внешнего управления».
browser.camofox.session_key CAMOFOX_SESSION_KEY sessionKey (также известный как listItemId), отправляемый при создании вложений. Используется для согласования вложений, когда вы знаете. По умолчанию принимается значение для каждой задачи, если она не установлена.
browser.camofox.adopt_existing_tab CAMOFOX_ADOPT_EXISTING_TAB Если это правда, Hermes выдает GET /tabs?userId=<user_id> при первом использовании и повторно использует существующую вкладку перед созданием новой.

Переменные окружения имеют приоритет над config.yaml. Любая форма работает:

browser:
  camofox:
    user_id: shared-camofox
    session_key: visible-tab
    adopt_existing_tab: true
CAMOFOX_USER_ID=shared-camofox
CAMOFOX_SESSION_KEY=visible-tab
CAMOFOX_ADOPT_EXISTING_TAB=true

Что меняется, когда установлен user_id:

Как работает составление вкладки (когда adopt_existing_tab: true):

  1. При первом вызове инструмента браузера после запуска процесса Hermes отправляет GET /tabs?userId=<user_id> (тайм-аут 5 секунд).
  2. Если какая-либо вкладка в ответе имеет listItemId == session_key, Hermes занимает наименьшую созданную в этой группе.
  3. В противном случае Hermes предпринимает малейшую созданную вставку для пользователя (любой listItemId).
  4. Если вкладок не существует или запрос не выполнен, Гермес возвращается к созданию новой вкладки при этой операции.

Принятие реализации только до тех пор, пока tab_id не будет заполнен для сеанса. Если внешнее приложение закроет вкладку во время выполнения, следующий вызов инструмента браузера вызовет ошибку Camofox — Гермес не переспрашивает новую вкладку при каждом вызове.

Выбор session_key: если вы хотите, чтобы Hermes надежно подключался к конкретной вкладке, установите session_key в listItemId, который внешнее приложение использовало при ее создании. Если вы оставите session_key неустановленным и установите только user_id, Hermes последовательно session_key для каждой задачи (task_<id>) — Hermes будет использовать общие куки и профиль с внешними приложениями, но откроет свою внутреннюю вкладку рядом, и не будет повторно использовать существующую.

Примечание о параллелизме: внешнее приложение, и Hermes может одновременно управлять одним и тем же userId Camofox, но Camofox не координирует фокус на вкладках между клиентами. Координируйте управление на уровне приложения (например, внешнее приложение приостанавливается, пока работает Hermes).

Просмотр в реальном времени VNC

Когда Camofox работает в режиме с графическим интерфейсом (с видимым окном браузера), он предоставляет VNC-порт в свой ответ для проверки работоспособности. Гермес автоматически обнаруживает это и включает URL-адрес VNC в ответах навигации, чтобы агент мог поделиться ссылкой для просмотра браузера в первый раз.

Локальный Chrome через CDP (/browser Connect)

Вместо облачного провайдера вы можете подключить инструменты браузера Hermes к своему собственному рабочему экземпляру Chrome через протокол Chrome DevTools Protocol (CDP). Это полезно, когда вы увидите, что агент в ближайшее время хочет пообщаться с страницами, требующими ваших хороших куки/сеансов, или избежать затрат на облачный браузер.:::примечание /browser Connect — это слеш-команда интерактивного CLI — она не отправляется через шлюз. Если вы попытаетесь проверить ее внутри WebUI, Telegram, Discord или другого чат-шлюза, сообщение будет отправлено агенту в обычном текстовом виде, и команда не выполнится. Запустите Hermes из терминала («hermes» или «hermeschat») и выполните там «/browser Connect». В CLI поддерживают:

/browser connect              # Подключиться к Chrome на ws://localhost:9222
/browser connect ws://host:port  # Подключиться к конкретному CDP-эндпоинту
/browser status               # Проверить текущее подключение
/browser disconnect            # Отключиться и вернуться в облачный/локальный режим

Если Chrome еще не запущен удаленной отладкой, Hermes автоматически запускает его с помощью --remote-debugging-port=9222.:::совет Чтобы вручную запустить Chrome с включенным CDP, воспользуйтесь выделенным каталогом user-data-dir, чтобы портировать отладки действительно, даже если Chrome уже запущен с вашим аналогичным профилем:

# Linux
google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir=$HOME/.hermes/chrome-debug \
  --no-first-run \
  --no-default-browser-check &

# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.hermes/chrome-debug" \
  --no-first-run \
  --no-default-browser-check &

Затем запустите CLI Hermes и выполните /browser Connect.

Почему --user-data-dir? Без его запуска Chrome, когда обычный экземпляр Chrome уже работает, обычно открывается новое окно в существующем процессе — а этот существующий процесс не был запущен с --remote-debugging-port, поэтому порт 9222 никогда не открывается. Выделенный user-data-dir заставляет создать новый процесс Chrome, порт отладки которого действительно слушает. --no-first-run --no-default-browser-check пропускает мастер первого запуска для нового профиля. При подключении через CDP все инструменты браузера (browser_navigate,browser_click и т.д.) работают на вашем живом экземпляре Chrome вместо запуска облачного сеанса.

WSL2 + Windows Chrome: предпочитайте MCP вместо /browser Connect

Если Hermes работает внутри WSL2, но окно Chrome, которым вы хотите управлять, работает на хосте Windows, /browser Connect часто не является лучшим способом.

Почему:

Для такой настройки предпочитайте chrome-devtools-mcp через поддержку MCP в Hermes.

См. руководство по MCP для практической настройки:

Локальный режим браузера

Если вы не устанавливаете какие-либо облачные учетные данные и не используете /browser Connect, Hermes все равно может использовать инструменты браузера через локальную установку Chromium, управляемую агент-браузер.

Дополнительные переменные окружения

# Резидентные прокси для лучшего решения CAPTCHA (по умолчанию: "true")
BROWSERBASE_PROXIES=true

# Продвинутая скрытность с пользовательским Chromium — требует Scale Plan (по умолчанию: "false")
BROWSERBASE_ADVANCED_STEALTH=false

# Повторное подключение сеанса после отключений — требует платного плана (по умолчанию: "true")
BROWSERBASE_KEEP_ALIVE=true

# Пользовательский тайм-аут сеанса в миллисекундах (по умолчанию: проект)
# Примеры: 600000 (10 мин), 1800000 (30 мин)
BROWSERBASE_SESSION_TIMEOUT=600000

# Тайм-аут бездействия перед автоматической очисткой в секундах (по умолчанию: 120)
BROWSER_INACTIVITY_TIMEOUT=120

Установка CLI-агента-браузера

npm install -g agent-browser
# Или установите локально в репозитории:
npm install
```:::информация
Набор инструментов `browser` должен быть включен в список `toolsets` вашей конфигурации или включен через `hermes config settoolsets '["hermes-cli", "browser"]'`.</div>
## Доступные инструменты

### `browser_navigate`

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

Navigate to https://github.com/NousResearch ``:::совет Для простого извлечения информации предпочитайтеweb_searchилиweb_extract` — они быстрее и дешевле. Используйте инструменты браузера, когда вам нужно взаимодействовать со страницей (нажимать кнопки, заполнять формы, обрабатывать движущийся контент).

browser_snapshot

Получить текстовое исправление текущей страницы доступности дерева. Возвращает интерактивные элементы с идентификатором ссылки, например @e1, @e2, для использования с browser_click и browser_type.

Снимки длиннее 8000 символов автоматически суммируются LLM.

browser_click

Нажать на элемент, идентифицированный по его ref ID из снимка.

Click @e5 to press the "Sign In" button

тип_браузера

Введите текст в поле ввода. Сначала очищает поле, затем вводит новый текст.

Type "hermes agent" into the search field @e3

browser_scroll

Прокрутите страницу вверх или вниз, чтобы показать больше оценок.

Scroll down to see more results

browser_press

Нажать на клавиатуре. Полезно для форм отправки или навигации.

Press Enter to submit the form

Поддерживаемые клавиши: Enter, Tab, Escape, ArrowDown, ArrowUp и другие.

browser_back

Вернуться на предыдущую страницу в истории браузера.

browser_get_images

Вывести список всех изображений на текущей странице с их URL и альтернативным текстом. Полезно для поиска изображений для анализа.

browser_vision

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

Скриншот сохраняется постоянно, и путь к файлу возвращается вместе с AI-анализом. На платформах обмена сообщениями (Telegram, Discord, Slack, WhatsApp) вы можете попросить агента поделиться скриншотом — он будет отправлен как нативное приложение через механизм «MEDIA:».

What does the chart on this page show?

Скриншоты сохраняются в ~/.hermes/cache/screenshots/ и автоматически удаляются через 24 часа.

browser_console

Вывести консоль браузера (журнал сообщений/предупреждений/ошибок) и незахваченные исключения JavaScript с текущей страницы. Необходимо найти скрытых JS-ошибок, которые не предусмотрены в гостевом доме.

Check the browser console for any JavaScript errors

Используйте clear=True, чтобы включить консоль после чтения, чтобы вызовы показывали только новые сообщения.

browser_console также выполняет вызов JavaScript с аргументными expression — в той же форме, что и консоль DevTools, возвращает результаты разобранными (объекты, сериализованные в JSON, становятся словарями; примитивные значения остаются примитивными).

browser_console(expression="document.querySelector('h1').textContent")
browser_console(expression="JSON.stringify(performance.timing)")

Когда для текущего сеанса активен CDP-супервизор (типично для любого сеанса, который выполнял browser_navigate против бэкенда с поддержкой CDP), выполнение происходит через постоянный супервизор WebSocket — без затрат на запуск подпроцесса. В противном случае используется стандартный путь CLI-агент-браузер. Поведение идентично в обоих случаях; меняется только задержка.

browser_cdp

Прямой протокол протокола Chrome DevTools — запасной вариант для работы браузера, не связанный с другими инструментами. Используйте для обработки нативных диалогов, выполнения кода в iframe, управления куками/сетью или любой командой CDP, которая нужна агенту.

Доступен только тогда, когда CDP-эндпоинт достижим при запуске сеанса — то есть /browser Connect подключился к работающему Chrome, или в config.yaml установленbrowser.cdp_url. Режим локального агента-браузера по умолчанию, Camofox и облачные провайдеры (База браузера, Использование браузера, Firecrawl) в настоящее время не предоставляют CDP этому инструменту — у облачных провайдеров есть URL-адрес CDP для каждого сеанса, но маршрутизация живого сеанса — это последующее улучшение.

Справочник по методам CDP: https://chromedevtools.github.io/devtools-protocol/ — агент может использовать web_extract для страницы конкретного метода, чтобы найти параметры и форму возврата.

Распространенные шаблоны:

# Список вкладок (уровень браузера, без target_id)
browser_cdp(method="Target.getTargets")

# Обработка нативного JS-диалога на вкладке
browser_cdp(method="Page.handleJavaScriptDialog",
            params={"accept": true, "promptText": ""},
            target_id="<tabId>")

# Выполнение JS в конкретной вкладке
browser_cdp(method="Runtime.evaluate",
            params={"expression": "document.title", "returnByValue": true},
            target_id="<tabId>")

# Получить все куки
browser_cdp(method="Network.getAllCookies")

Методы уровня браузера (Target.*, Browser.*, Storage.*) опускают target_id. Методы уровней страницы (Page.*, Runtime.*, DOM.*, Emulation.*) требуют target_id из Target.getTargets. Каждый вызов без сохранения состояния независим — сеансы не определяются между вызовами.

Кросс-доменные iframe: передайте frame_id (из browser_snapshot.frame_tree.children[], где is_oopif=true), чтобы направить вызов CDP через живой сеанс супервизора для этого iframe. Это как работает Runtime.evaluate внутри кросс-доменного iframe в базе браузера, где вызовы CDP без сохранения состояния сталкивались с истечением подписанного URL-адреса. Пример:

browser_cdp(
  method="Runtime.evaluate",
  params={"expression": "document.title", "returnByValue": True},
  frame_id="<frame_id from browser_snapshot>",
)

Однодоменные iframe не обязательно в frame_id — викор document.querySelector('iframe').contentDocument из Runtime.evaluate верхних уровней.

browser_dialog

Отвечает на нативный JS-диалог (alert/confirm/prompt/beforeunload). При показе этого инструмента диалоги молча блокировали поток JavaScript-страницы, и вызовы browser_* зависали или вызывали ошибку; теперь агент видит ожидающие диалоги в выводе browser_snapshot и явно отвечает.

Рабочий процесс: 1. Вызовите «browser_snapshot». Если диалог блокирует страницу, он отображается как pending_dialogs: [{"id": "d-1", "type": "alert", "message": "..."}]. 2. Вызовите browser_dialog(action="accept") или browser_dialog(action="dismiss"). Для диалогов prompt() передайте prompt_text="...", чтобы указать ответ. 3. Сделайте новый снимок — pending_dialogs пуст; поток JavaScript страницы активируется.

Обнаружение происходит автоматически через постоянный CDP-супервизор — один WebSocket на задаче, который подписывается событиями Page/Runtime/Target. Супервизор также выполняет поле frame_tree в снимке, чтобы агент мог видеть структуру iframe на текущей странице, включая кросс-доменные (OOPIF) iframe.

Матрица доступности:

Бекенд Обнаружение через pending_dialogs Ответ (инструмент browser_dialog)
Локальный Chrome через /browser Connect или browser.cdp_url ✓ полный рабочий процесс
База браузеров ✓ полный рабочий процесс (через внедрение XHR-мост)
Camofox / локальный агент-браузер по умолчанию ✗ (нет CDP-эндпоинта)

Как это работает на базе браузера. Прокси CDP Browserbase автоматически отклоняет настоящие собственные диалоги на стороне сервера в течение ~10 мс, поэтому мы не используем Page.handleJavaScriptDialog. Супервизор внедряет небольшой скрипт через Page.addScriptToEvaluateOnNewDocument, который переопределяет window.alert/confirm/prompt синхронным XHR. Мы перехватываем эти XHR через Fetch.enable — поток JavaScript-страницы остаётся заблокированным на XHR, пока мы не вызываем Fetch.fulfillRequest с ответом агента. Значения prompt() возвращаются обратно на JS-страницы без изменений.

Политика диалогов о вреде в config.yaml в разделе browser.dialog_policy:

Политика Поведение
must_respond (по умолчанию) Захватить, отобразить в снимке, дождаться явного вызова browser_dialog(). Автоматическое отклонение безопасности после browser.dialog_timeout_s (по умолчанию 300 с), чтобы ошибочный агент не мог зависнуть навсегда.
auto_dismiss Захватить, немедленно отклонить. Агент все еще видит диалог в истории «browser_state», но не должен действовать.
auto_accept Захватить, немедленно принять. Полезно при навигации по страницам с агрессивными подсказками beforeunload.

Дерево фреймов внутри browser_snapshot.frame_tree ограничено 30 фреймами и глубиной OOPIF 2, чтобы размер полезной нагрузки был ограничен на страницах с большим количеством рекламы. Флаг truncated: true появляется, когда лимиты были превышены; Агентам, нуждающимся в полной семье, можно использовать browser_cdp с Page.getFrameTree.

Практические образцы

Заполнение веб-форм

User: Sign up for an account on example.com with my email john@example.com

Agent workflow:
1. browser_navigate("https://example.com/signup")
2. browser_snapshot()   видит поля формы с ref
3. browser_type(ref="@e3", text="john@example.com")
4. browser_type(ref="@e5", text="SecurePass123")
5. browser_click(ref="@e8")   нажимает "Create Account"
6. browser_snapshot()   подтверждает успех

Исследование динамического контента

User: What are the top trending repos on GitHub right now?

Agent workflow:
1. browser_navigate("https://github.com/trending")
2. browser_snapshot(full=true)   читает список трендовых репозиториев
3. Возвращает отформатированные результаты

Запись сеансов

Автоматически записывайте сеансы браузера в видеофайлы WebM:

browser:
  record_sessions: true  # по умолчанию: false

При включении запись начинается автоматически при первом browser_navigate и сохраняется в ~/.hermes/browser_recordings/ при закрытии сеанса. Работает как в локальном, так и в облачном (браузерном) режиме. Записи старше 72 часов автоматически удаляются.

функции скрытности

Браузерная база обеспечивает автоматические скрытые возможности:

функция По умолчанию Примечания
Базовая скрытность Всегда включено Случайные отпечатки, рандомизация области просмотра, решение CAPTCHA
Резидентные прокси Включено Маршрутизация через резидентные IP для лучшего доступа
Продвинутая скрытность Выключено Пользовательская сборка Chromium, требует масштабного плана
Оставайся в живых Включено Повторное подключение сеанса сети после сбоев
Если платные функции отключены в вашем плане, Гермес автоматически откатывается — сначала отключая keepAlive, затем прокси — так что просмотр все равно работает на планах.
## Управление сеансами

Ограничения