Browser
На этой странице
Hermes Agent включает полный набор инструментов для автоматизации браузера с несколькими вариантами бэкенда:
* Облачный режим Browserbase через Browserbase для управляемых облачных браузеров и анти-бот инструментов
* Облачный режим Browser Use через Browser Use как альтернативный облачный провайдер браузера
* Облачный режим Firecrawl через Firecrawl для облачных браузеров со встроенным скрапингом
* Локальный режим Camofox через Camofox для локального анти-детекционного браузинга (спуфинг отпечатков на основе Firefox)
* Локальный Chrome через CDP — подключение инструментов браузера к вашему собственному экземпляру Chrome с помощью /browser connect
* Локальный режим браузера через CLI agent-browser и локальную установку Chromium
Во всех режимах агент может перемещаться по веб-сайтам, взаимодействовать с элементами страницы, заполнять формы и извлекать информацию.
Обзор¶
Страницы представлены как деревья доступности (текстовые снимки), что делает их идеальными для LLM-агентов. Интерактивные элементы получают идентификаторы ссылок (например, @e1, @e2), которые агент использует для кликов и ввода текста.
Ключевые возможности:
* Мульти-провайдерное облачное выполнение — Browserbase, Browser Use или Firecrawl — без необходимости локального браузера
* Интеграция с локальным Chrome — подключение к вашему запущенному Chrome через CDP для интерактивного браузинга
* Встроенная скрытность — случайные отпечатки, решение CAPTCHA, резидентные прокси (Browserbase)
* Изоляция сессий — каждая задача получает свою собственную сессию браузера
* Автоматическая очистка — неактивные сессии закрываются по истечении тайм-аута
* Визуальный анализ — скриншот + AI-анализ для визуального понимания
Настройка¶
Подписчики Nous
Если у вас есть платная подписка Nous Portal, вы можете использовать автоматизацию браузера через Tool Gateway без отдельных API-ключей. Выполните hermes model или hermes tools, чтобы включить его.
Облачный режим Browserbase¶
Для использования управляемых облачных браузеров Browserbase добавьте:
[code]
# Добавьте в ~/.hermes/.env
BROWSERBASE_API_KEY=***
BROWSERBASE_PROJECT_ID=your-project-id-here
[/code] Получите свои учетные данные на browserbase.com.
Облачный режим Browser Use¶
Для использования Browser Use в качестве облачного провайдера браузера добавьте:
[code]
# Добавьте в ~/.hermes/.env
BROWSER_USE_API_KEY=***
[/code] Получите свой API-ключ на browser-use.com. Browser Use предоставляет облачный браузер через свой REST API. Если указаны учетные данные и Browserbase, и Browser Use, приоритет отдается Browserbase.
Облачный режим Firecrawl¶
Для использования Firecrawl в качестве облачного провайдера браузера добавьте:
[code]
# Добавьте в ~/.hermes/.env
FIRECRAWL_API_KEY=fc-***
[/code]
Получите свой API-ключ на firecrawl.dev. Затем выберите Firecrawl в качестве провайдера браузера:
[code]
hermes setup tools
# → Browser Automation → Firecrawl
[/code]
Дополнительные настройки:
[code]
# Самостоятельно размещенный экземпляр Firecrawl (по умолчанию: https://api.firecrawl.dev)
FIRECRAWL_API_URL=http://localhost:3002
# Время жизни сессии в секундах (по умолчанию: 300)
FIRECRAWL_BROWSER_TTL=600
[/code]
Гибридная маршрутизация: облако для публичных 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 loopback ::1, link-local 169.254.x.x). Публичные URL продолжают использовать облачного провайдера в том же разговоре.
Это решает распространенный сценарий «я разрабатываю локально, но использую Browserbase» — агент может сделать скриншот вашей панели управления на http://localhost:3000 И спарсить https://github.com без переключения провайдеров или отключения SSRF-защиты. Облачный провайдер никогда не видит частный URL.
Функция включена по умолчанию. Чтобы отключить её (все URL направляются настроенному облачному провайдеру, как раньше):
[code]
# ~/.hermes/config.yaml
browser:
cloud_provider: browserbase
auto_local_for_private_urls: false
[/code]
При отключенной автоматической маршрутизации частные URL отклоняются с сообщением "Blocked: URL targets a private or internal address", если только вы также не установите browser.allow_private_urls: true (что позволит облачному провайдеру пытаться открыть их — обычно не сработает, так как Browserbase и другие не могут достичь вашей локальной сети).
Требования: локальный sidecar использует тот же CLI agent-browser, что и чистый локальный режим, поэтому он должен быть установлен (hermes setup tools → Browser Automation устанавливает его автоматически). Перенаправления после навигации с публичного URL на частный адрес по-прежнему блокируются (нельзя использовать трюк с редиректом на внутренний адрес, чтобы получить доступ к локальной сети через публичный путь).
Локальный режим Camofox¶
Camofox — это самостоятельно размещаемый Node.js-сервер, оборачивающий Camoufox (форк Firefox со спуфингом отпечатков на C++). Он обеспечивает локальный анти-детекционный браузинг без облачных зависимостей.
[code]
# Сначала клонируйте сервер Camofox
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
[/code]
make up немедленно запускает контейнер по умолчанию. Если вам нужны пользовательские настройки выполнения, такие как большая куча Node, VNC или постоянный каталог профиля, сначала соберите образ, а затем запустите его самостоятельно:
[code]
# Соберите образ без запуска контейнера по умолчанию
make build
# Запустите с сохранением состояния, VNC просмотром в реальном времени и большей кучей 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
[/code]
С включенным VNC браузер запускается в режиме с графическим интерфейсом, и за ним можно наблюдать в реальном времени в вашем браузере по адресу http://localhost:6080 (noVNC). Вы также можете подключить нативный VNC-клиент к localhost:5901.
Если вы уже запускали make up, остановите и удалите этот контейнер по умолчанию перед запуском пользовательского:
[code]
make down
# затем выполните приведенную выше команду docker run
[/code]
Затем укажите в ~/.hermes/.env:
[code]
CAMOFOX_URL=http://localhost:9377
[/code]
Или настройте через hermes tools → Browser Automation → Camofox.
Когда CAMOFOX_URL установлен, все инструменты браузера автоматически маршрутизируются через Camofox вместо Browserbase или agent-browser.
Постоянные сессии браузера¶
По умолчанию каждая сессия Camofox получает случайную идентичность — куки и данные входа не сохраняются между перезапусками агента. Чтобы включить постоянные сессии браузера, добавьте следующее в ~/.hermes/config.yaml:
[code]
browser:
camofox:
managed_persistence: true
[/code]
Затем полностью перезапустите Hermes, чтобы новая конфигурация вступила в силу.
Важность вложенного пути
Hermes читает browser.camofox.managed_persistence, а не managed_persistence на верхнем уровне. Распространенная ошибка — написать:
[code]
# ❌ Неправильно — Hermes игнорирует это
managed_persistence: true
[/code]
Если флаг размещен по неправильному пути, Hermes молча возвращается к случайному эфемерному userId, и ваше состояние входа будет потеряно при каждой сессии.
Что делает Hermes¶
- Отправляет детерминированный
userId, привязанный к профилю, в Camofox, чтобы сервер мог повторно использовать один и тот же профиль Firefox между сессиями. - Пропускает уничтожение контекста на стороне сервера при очистке, поэтому куки и данные входа сохраняются между задачами агента.
- Привязывает
userIdк активному профилю Hermes, поэтому разные профили Hermes получают разные профили браузера (изоляция профилей).
Что Hermes не делает¶
- Он не принуждает к сохранению состояния на сервере Camofox. Hermes только отправляет стабильный
userId; сервер должен соблюдать его, сопоставляя этотuserIdс постоянным каталогом профиля Firefox. - Если ваша сборка сервера Camofox обрабатывает каждый запрос как эфемерный (например, всегда вызывает
browser.newContext()без загрузки сохраненного профиля), Hermes не может заставить эти сессии сохраняться. Убедитесь, что вы используете сборку Camofox, которая реализует сохранение профилей на основе userId.
Проверка работоспособности¶
- Запустите Hermes и ваш сервер Camofox.
- Откройте Google (или любой сайт с входом) в задаче браузера и войдите вручную.
- Завершите задачу браузера обычным образом.
- Запустите новую задачу браузера.
- Снова откройте тот же сайт — вы всё ещё должны быть авторизованы.
Если на шаге 5 вас выкидывает из системы, значит сервер Camofox не соблюдает стабильный userId. Перепроверьте путь в конфиге, убедитесь, что вы полностью перезапустили Hermes после редактирования config.yaml, и проверьте, что ваша версия сервера Camofox поддерживает постоянные профили пользователей.
Где хранятся данные¶
Hermes извлекает стабильный userId из каталога, привязанного к профилю: ~/.hermes/browser_auth/camofox/ (или эквивалентного пути в $HERMES_HOME для нестандартных профилей). Фактические данные профиля браузера хранятся на стороне сервера Camofox, привязанные к этому userId. Чтобы полностью сбросить постоянный профиль, очистите его на сервере Camofox и удалите соответствующий каталог состояния профиля Hermes.
VNC просмотр в реальном времени¶
Когда Camofox работает в режиме с графическим интерфейсом (с видимым окном браузера), он предоставляет VNC-порт в ответе на проверку состояния. Hermes автоматически обнаруживает это и включает URL VNC в ответы навигации, чтобы агент мог поделиться ссылкой для просмотра браузера в реальном времени.
Локальный Chrome через CDP (/browser connect)¶
Вместо облачного провайдера вы можете подключить инструменты браузера Hermes к своему собственному запущенному экземпляру Chrome через Chrome DevTools Protocol (CDP). Это полезно, когда вы хотите видеть, что делает агент в реальном времени, взаимодействовать со страницами, требующими ваших собственных куки/сессий, или избежать затрат на облачный браузер.
note
/browser connect — это слеш-команда интерактивного CLI — она не обрабатывается через шлюз. Если вы попытаетесь выполнить её в WebUI, Telegram, Discord или другом шлюзовом чате, сообщение будет отправлено агенту как обычный текст, и команда не выполнится. Запустите Hermes из терминала (hermes или hermes chat) и выполните /browser connect там.
В CLI используйте:
[code]
/browser connect # Подключиться к Chrome на ws://localhost:9222
/browser connect ws://host:port # Подключиться к конкретной CDP-точке
/browser status # Проверить текущее подключение
/browser disconnect # Отключиться и вернуться в облачный/локальный режим
[/code]
Если Chrome ещё не запущен с удаленной отладкой, Hermes попытается автоматически запустить его с флагом --remote-debugging-port=9222.
tip
Чтобы вручную запустить Chrome с включенным CDP, используйте выделенный каталог user-data-dir, чтобы порт отладки действительно открылся, даже если Chrome уже запущен с вашим обычным профилем:
[code]
# 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 &
[/code]
Затем запустите 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 + Chrome на Windows: предпочитайте MCP вместо /browser connect¶
Если Hermes запущен внутри WSL2, но окно Chrome, которым вы хотите управлять, работает на хосте Windows, /browser connect часто не является лучшим путем.
Почему:
* /browser connect ожидает, что Hermes сам сможет достичь работоспособной CDP-точки
* современные сессии живой отладки Chrome часто предоставляют точку подключения, доступную только на хосте, которая не доступна напрямую из WSL так же, как классический порт 9222
* даже когда Chrome на Windows доступен для отладки, чистейшая интеграция часто заключается в том, чтобы позволить MCP-серверу браузера на стороне Windows подключиться к Chrome, а Hermes пусть общается с этим MCP-сервером
Для такой настройки предпочитайте chrome-devtools-mcp через поддержку MCP в Hermes.
Смотрите руководство по MCP для практической настройки:
* Использование MCP с Hermes
Локальный режим браузера¶
Если вы не устанавливаете никаких облачных учетных данных и не используете /browser connect, Hermes всё равно может использовать инструменты браузера через локальную установку Chromium, управляемую agent-browser.
Дополнительные переменные окружения¶
[code]
# Резидентные прокси для лучшего решения CAPTCHA (по умолчанию: "true")
BROWSERBASE_PROXIES=true
# Продвинутая скрытность с кастомным Chromium — требуется тариф Scale (по умолчанию: "false")
BROWSERBASE_ADVANCED_STEALTH=false
# Переподключение сессии после разрывов — требуется платный тариф (по умолчанию: "true")
BROWSERBASE_KEEP_ALIVE=true
# Пользовательский тайм-аут сессии в миллисекундах (по умолчанию: значение проекта)
# Примеры: 600000 (10мин), 1800000 (30мин)
BROWSERBASE_SESSION_TIMEOUT=600000
# Тайм-аут неактивности перед автоочисткой в секундах (по умолчанию: 120)
BROWSER_INACTIVITY_TIMEOUT=120
[/code]
Установка CLI agent-browser¶
[code]
npm install -g agent-browser
# Или установите локально в репозитории:
npm install
[/code]
info
Набор инструментов browser должен быть включен в список toolsets вашей конфигурации или активирован через hermes config set toolsets '["hermes-cli", "browser"]'.
Доступные инструменты¶
browser_navigate¶
Перейти по URL. Должен быть вызван перед любым другим инструментом браузера. Инициализирует сессию Browserbase. [code] Navigate to https://github.com/NousResearch
[/code]
tip
Для простого получения информации предпочитайте web_search или web_extract — они быстрее и дешевле. Используйте инструменты браузера, когда вам нужно взаимодействовать со страницей (нажимать кнопки, заполнять формы, работать с динамическим контентом).
browser_snapshot¶
Получить текстовый снимок текущего дерева доступности страницы. Возвращает интерактивные элементы с идентификаторами ссылок, такими как @e1, @e2, для использования с browser_click и browser_type.
* full=false (по умолчанию): Компактный вид, показывающий только интерактивные элементы
* full=true : Полное содержимое страницы
Снимки длиннее 8000 символов автоматически обобщаются LLM.
browser_click¶
Нажать на элемент, идентифицированный по его ref ID из снимка. [code] Click @e5 to press the "Sign In" button
[/code]
browser_type¶
Ввести текст в поле ввода. Сначала очищает поле, затем вводит новый текст. [code] Type "hermes agent" into the search field @e3
[/code]
browser_scroll¶
Прокрутить страницу вверх или вниз, чтобы показать больше контента. [code] Scroll down to see more results
[/code]
browser_press¶
Нажать клавишу на клавиатуре. Полезно для отправки форм или навигации. [code] Press Enter to submit the form
[/code]
Поддерживаемые клавиши: Enter, Tab, Escape, ArrowDown, ArrowUp и другие.
browser_back¶
Вернуться на предыдущую страницу в истории браузера.
browser_get_images¶
Получить список всех изображений на текущей странице с их URL и alt-текстом. Полезно для поиска изображений для анализа.
browser_vision¶
Сделать скриншот и проанализировать его с помощью vision AI. Используйте это, когда текстовые снимки не захватывают важную визуальную информацию — особенно полезно для CAPTCHA, сложных макетов или задач визуальной верификации.
Скриншот сохраняется постоянно, и путь к файлу возвращается вместе с AI-анализом. На платформах обмена сообщениями (Telegram, Discord, Slack, WhatsApp) вы можете попросить агента поделиться скриншотом — он будет отправлен как нативное вложение фото через механизм MEDIA:.
[code]
What does the chart on this page show?
[/code]
Скриншоты хранятся в ~/.hermes/cache/screenshots/ и автоматически удаляются через 24 часа.
browser_console¶
Получить вывод консоли браузера (сообщения log/warn/error) и неперехваченные исключения JavaScript с текущей страницы. Необходим для обнаружения тихих JS-ошибок, которые не отображаются в дереве доступности. [code] Check the browser console for any JavaScript errors
[/code]
Используйте clear=True, чтобы очистить консоль после чтения, чтобы последующие вызовы показывали только новые сообщения.
browser_cdp¶
Прямой проход к Chrome DevTools Protocol — запасной выход для операций с браузером, не охваченных другими инструментами. Используется для обработки нативных диалогов, выполнения кода в iframe, управления куками/сетью или любых CDP-команд, которые нужны агенту.
Доступен только когда CDP-точка доступна при запуске сессии — то есть когда /browser connect подключился к запущенному Chrome или установлен browser.cdp_url в config.yaml. Стандартный локальный режим agent-browser, Camofox и облачные провайдеры (Browserbase, Browser Use, Firecrawl) в настоящее время не предоставляют CDP этому инструменту — облачные провайдеры имеют CDP-URL для каждой сессии, но маршрутизация живых сессий в разработке.
Справочник CDP-методов: https://chromedevtools.github.io/devtools-protocol/ — агент может выполнить web_extract для страницы конкретного метода, чтобы узнать параметры и возвращаемую структуру.
Распространенные шаблоны:
[code]
# Список вкладок (уровень браузера, без 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")
[/code]
Методы уровня браузера (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 работает на Browserbase, где вызовы CDP без сохранения состояния столкнулись бы с истечением подписанных URL. Пример:
[code]
browser_cdp(
method="Runtime.evaluate",
params={"expression": "document.title", "returnByValue": True},
frame_id="
)
[/code]
Одно-доменные 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 пуст; поток JS страницы возобновлен.
Обнаружение происходит автоматически через постоянный CDP-супервизор — один WebSocket на задачу, который подписывается на события Page/Runtime/Target. Супервизор также заполняет поле frame_tree в снимке, чтобы агент мог видеть структуру iframe текущей страницы, включая кросс-доменные (OOPIF) iframe.
Матрица доступности:
Бэкенд| Обнаружение через pending_dialogs| Ответ (инструмент browser_dialog)
|---|---|---
Локальный Chrome через /browser connect или browser.cdp_url| ✓| ✓ полный рабочий процесс
Browserbase| ✓| ✓ полный рабочий процесс (через встроенный XHR-мост)
Camofox / стандартный локальный agent-browser| ✗| ✗ (нет CDP-точки)
Как это работает на Browserbase. CDP-прокси Browserbase автоматически отклоняет настоящие нативные диалоги на стороне сервера примерно за 10 мс, поэтому мы не можем использовать Page.handleJavaScriptDialog. Супервизор внедряет небольшой скрипт через Page.addScriptToEvaluateOnNewDocument, который переопределяет window.alert/confirm/prompt синхронным XHR. Мы перехватываем эти XHR через Fetch.enable — поток JS страницы остается заблокированным на 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.
Практические примеры¶
Заполнение веб-формы¶
[code] 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() → подтверждает успех
[/code]
Исследование динамического контента¶
[code] 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. Возвращает отформатированные результаты
[/code]
Запись сессий¶
Автоматически записывайте сессии браузера в видеофайлы WebM:
[code]
browser:
record_sessions: true # по умолчанию: false
[/code]
Когда запись включена, она начинается автоматически при первом browser_navigate и сохраняется в ~/.hermes/browser_recordings/ при закрытии сессии. Работает как в локальном, так и в облачном (Browserbase) режимах. Записи старше 72 часов автоматически удаляются.
Функции скрытности¶
Browserbase предоставляет автоматические возможности скрытности:
Функция| По умолчанию| Примечания
|---|---|---
Базовая скрытность| Всегда включена| Случайные отпечатки, рандомизация окна просмотра, решение CAPTCHA
Резидентные прокси| Вкл| Маршрутизация через резидентные IP для лучшего доступа
Продвинутая скрытность| Выкл| Кастомная сборка Chromium, требуется тариф Scale
Keep Alive| Вкл| Переподключение сессии после сетевых сбоев
note
Если платные функции недоступны на вашем тарифе, Hermes автоматически выполняет откат — сначала отключает keepAlive, затем прокси — так что работа в браузере всё ещё возможна на бесплатных тарифах.
Управление сессиями¶
- Каждая задача получает изолированную сессию браузера через Browserbase
- Сессии автоматически очищаются после бездействия (по умолчанию: 2 минуты)
- Фоновый поток проверяет устаревшие сессии каждые 30 секунд
- Аварийная очистка выполняется при завершении процесса для предотвращения потерянных сессий
- Сессии освобождаются через API Browserbase (статус
REQUEST_RELEASE)
Ограничения¶
- Текстовое взаимодействие — основано на дереве доступности, а не на пиксельных координатах
- Размер снимка — большие страницы могут быть усечены или обобщены LLM при 8000 символах
- Тайм-аут сессии — облачные сессии истекают в зависимости от настроек тарифа вашего провайдера
- Стоимость — облачные сессии расходуют кредиты провайдера; сессии автоматически очищаются при завершении разговора или после бездействия. Используйте
/browser connectдля бесплатного локального браузинга. -
Нет загрузки файлов — невозможно загружать файлы из браузера
- Настройка
- Облачный режим Browserbase
- Облачный режим Browser Use
- Облачный режим Firecrawl
- Гибридная маршрутизация: облако для публичных URL, локально для LAN/localhost
- Локальный режим Camofox
- Локальный Chrome через CDP (
/browser connect) - WSL2 + Chrome на Windows: предпочитайте MCP вместо
/browser connect - Локальный режим браузера
- Дополнительные переменные окружения
- Установка CLI agent-browser
- Доступные инструменты
- Практические примеры
- Запись сессий
- Функции скрытности
- Управление сессиями
- Ограничения