MCP-сервер
Запустите SDK как MCP-сервер, и агент получит настоящий браузер с подменённым отпечатком и 16 инструментами. Добавьте это в конфигурацию своего MCP-клиента - больше ничего устанавливать не нужно.
{
"mcpServers": {
"anti-detect-browser": {
"command": "npx",
"args": ["anti-detect-browser", "--mcp"],
"env": {
"ANTI_DETECT_BROWSER_KEY": "your-api-key"
}
}
}
} Работает с любым MCP-клиентом. Браузер работает на вашей машине, поэтому не нужно покупать browser-hours.
16 инструментов ниже - это те, что предоставляет этот сервер. Если ваш агент на Python и вы хотите сами владеть сервером, выполните pip install "antibrow[mcp]" - пакет содержит готовый пример stdio-сервера, покрывающий тот же цикл launch, navigate, click, fill, read, screenshot, evaluate и close - профили в обоих случаях одинаковые. См. Python SDK.
Модель сессии
Это стоит понять перед чтением списка инструментов. Вызовы инструментов MCP дискретны: модель вызывает инструмент, получает результат, размышляет, вызывает следующий. Многие инструменты для браузера запускают новый контекст на каждый вызов, поэтому вход в аккаунт, выполненный в одном вызове, исчезает к следующему.
Здесь процесс браузера остаётся запущенным. launch_browser возвращает sessionId, и каждый инструмент страницы принимает этот id и переподключается к тому же работающему браузеру. Вкладка, которую вы оставили открытой, - та же вкладка, которую найдёт следующий вызов. Cookies, хранилище и passkeys записываются в каталог профиля, поэтому даже перезапуск восстанавливает ту же авторизованную личность с тем же отпечатком.
// 1. launch. `profile` is required; the profile is created if new.
launch_browser({ profile: "agent-01" })
// -> { sessionId, profileDir, viewUrl }
// 2. every page tool takes that sessionId
navigate({ sessionId, url: "https://example.com" })
fill({ sessionId, selector: "#email", value: "me@example.com" })
click({ sessionId, selector: "button[type=submit]" })
get_content({ sessionId })
// 3. the browser stays up between tool calls, so a later turn
// is still signed in. Close it when the task is done.
close_browser({ sessionId }) profile обязателен в launch_browser. Значения по умолчанию нет. Выберите стабильное имя для каждой личности и переиспользуйте его, потому что профиль и есть личность: повторное использование имени делает 40-й запуск похожим для сайта на 1-й.
Инструменты браузера
Запуск и остановка браузера, а также поиск уже запущенных.
launch_browser
(profile , label?, color?, tags?, proxy?, proxyId?, headless?)
Запускает браузер с подменённым отпечатком. Создаёт профиль, если его ещё нет.
profile | string | required | Имя профиля. Также имя каталога на диске. |
label | string | optional | Текст метки, отображаемой в окне браузера. |
color | string | optional | Цвет темы в hex, например #e74c3c. |
tags | array | optional | Теги, сохраняемые вместе с профилем. |
proxy | string | optional | URL собственного прокси: protocol://user:pass@host:port |
proxyId | string | optional | ID управляемого прокси. Активирует его и учитывает месячную квоту. Получите его через list_proxies или claim_proxy. |
headless | boolean | optional | Запуск без видимого окна. |
close_browser
(sessionId )
Закрывает одну сессию браузера.
sessionId | string | required | ID, возвращённый launch_browser. |
list_sessions
( )
Список всех сессий браузера, работающих сейчас.
Инструменты страницы
Все они действуют на открытой сессии, поэтому каждый из них принимает sessionId.
navigate
(sessionId, url )
Переход по URL.
sessionId | string | required | |
url | string | required | URL для перехода. |
click
(sessionId, selector )
Клик по элементу.
sessionId | string | required | |
selector | string | required | CSS-селектор элемента для клика. |
fill
(sessionId, selector, value )
Заполняет поле формы текстом.
sessionId | string | required | |
selector | string | required | CSS-селектор поля ввода. |
value | string | required | Текст для заполнения. |
get_content
(sessionId , selector?)
Читает текстовое содержимое страницы или одного элемента.
sessionId | string | required | |
selector | string | optional | Ограничить одним элементом. Опустите для всей страницы. |
screenshot
(sessionId )
Скриншот текущей страницы.
sessionId | string | required |
evaluate
(sessionId, script )
Выполняет JavaScript в контексте страницы и возвращает результат.
sessionId | string | required | |
script | string | required | JavaScript-код для выполнения. |
Инструменты профиля
Профили - это каталоги на вашем собственном диске, неограничены на любом тарифе, включая Бесплатный.
list_profiles
( )
Список локальных профилей.
create_profile
(name )
Создаёт профиль и фиксирует его отпечаток сейчас, а не при первом запуске. Движок автоматически генерирует согласованный отпечаток.
name | string | required | Имя профиля. |
delete_profile
(name )
Удаляет профиль и его данные с диска.
name | string | required | Имя профиля. |
Инструменты прокси
Управляемые резидентные прокси доступны на платных тарифах. Получение бесплатно; квота расходуется только при запуске профиля с прокси.
list_proxies
( )
Список назначенных вам управляемых прокси, а также месячная квота: limit, usedThisMonth, remaining, holdCount и holdCap.
claim_proxy
( )
Получает доступный управляемый прокси и возвращает его, включая id. Получение не расходует месячную квоту.
Инструменты Live View
Транслируйте работающую сессию в свой кабинет. Live View - функция платных тарифов.
start_live_view
(sessionId , quality?)
Начинает трансляцию экрана сессии.
sessionId | string | required | |
quality | number | optional | Качество JPEG, от 1 до 100. По умолчанию 60. |
stop_live_view
(sessionId )
Останавливает трансляцию.
sessionId | string | required |
Частые ошибки
| Missing required parameter "profile" | |
У launch_browser нет профиля по умолчанию. Передайте его и используйте одно и то же имя каждый раз для этой личности. | |
| Session not found | |
sessionId ссылается на браузер, который уже закрыт. Вызовите list_sessions, чтобы увидеть, что запущено, или запустите заново. | |
| Concurrency limit reached | |
| Ваш тариф ограничивает число одновременно работающих браузеров: 1 на Бесплатном, затем 5, 20 или 100. Закройте сессию или повысьте лимит. Число профилей никогда не является ограничением. |
Предпочитаете писать код, а не использовать инструменты MCP? Те же профили можно запускать через SDK со стандартным Playwright.