invisible_playwright_mcp — браузерный ИИ-агент, невидимый для анти-бот систем

· 1 мин чтения
mcp browser-automation playwright python web-scraping
📂 Исходный код на GitHub

Playwright-совместимый MCP-сервер на Python: ИИ-агент работает в анти-детект Firefox, остаётся невидимым для анти-бот проверок и капч, поддерживает прокси, профили и детерминированную идентичность браузера.

invisible_playwright_mcp — браузерный ИИ-агент, невидимый для анти-бот систем

invisible_playwright_mcp — это MCP-сервер для браузерной автоматизации, невидимый для анти-бот систем. Слоган проекта звучит так: «Другие ИИ-браузерные агенты получают капчи. Этот невидим для анти-ботов». Сервер написан на Python, распространяется по лицензии MIT и собрал более 30 тысяч звёзд на GitHub.

Проблема знакома каждому, кто пробовал браузерных агентов. Обычный headless-браузер защита распознаёт быстро. Агент открывает сайт — и вместо страницы получает капчу или блокировку. Этот проект решает задачу иначе: он запускает специальную анти-детект сборку Firefox и водит её как человек. Курсор двигается, клавиши нажимаются, страницу читает модель. Для сайта такой агент выглядит обычным посетителем.

Два способа работы

Первый способ — подключить сервер к своему ассистенту как обычный MCP-инструмент. Поддерживаются Claude Code, Codex и Gemini CLI.

Сначала установите uv:

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"

Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env

Затем подключите сервер к ассистенту.

Claude Code:

claude plugin marketplace add feder-cr/invisible_playwright_mcp
claude plugin install invisible-playwright-mcp@feder-cr

Codex:

codex plugin marketplace add feder-cr/invisible_playwright_mcp
codex plugin add invisible-playwright-mcp@feder-cr

Gemini CLI:

gemini extensions install https://github.com/feder-cr/invisible_playwright_mcp

Второй способ — standalone-режим. Проект приносит свой веб-интерфейс, а вы приносите ключ OpenRouter. Слева чат, справа живой браузер в реальном времени:

uvx invisible-playwright-mcp ui --openrouter-key sk-or-...

После запуска откройте http://127.0.0.1:8765 и пишите задачи в чат.

Что поручать агенту

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

Зайди на сайт. Билет в один конец, Милан — Лиссабон, экономкласс, одно место багажа, один взрослый. Проверь каждую дату с 12-го по 16-е следующего месяца по одной и прочитай самую дешёвую цену на каждый день. Поле даты — это календарь, поэтому кликай по дням, а не вводи их с клавиатуры. Если на дату мест нет, так и скажи. Не выдумывай цифры.

Обратите внимание на формулировку: агенту сказано, что поле даты открывается календарём. Это важная деталь. Агент водит мышью и печатает как человек, но сам он не догадается — объясните, куда идти и что делать.

Опции запуска

Опция Назначение
--openrouter-key ключ OpenRouter или переменная OPENROUTER_API_KEY
--model ID модели в OpenRouter. По умолчанию z-ai/glm-5.3-flash
--proxy HTTP или SOCKS5 прокси. За ним следуют часовой пояс, локаль и внешний IP
--binary свой бинарник движка. Загрузка пропускается, но проверка версии остаётся
--seed целое число. Одинаковый seed даёт одинаковую идентичность браузера в каждом запуске
--profile-dir каталог профиля: логины и cookie переживают перезапуск
--headed показать окно браузера. Впрочем, интерфейс и так показывает страницу
--host, --port по умолчанию 127.0.0.1:8765. Смена хоста открывает интерфейс без аутентификации

Опция --binary заслуживает пояснения. Движок скачивается с GitHub при первом запуске. Если подложить свой бинарник, сервер пропустит загрузку, но не проверку версии: подойдёт только та сборка, которую закрепил проект.

Файл .env

Ключ и путь к бинарнику можно не набирать в команде. Положите рядом с местом запуска файл .env:

OPENROUTER_API_KEY=sk-or-...
STEALTHFOX_BINARY=/path/to/firefox

Порядок приоритетов такой: флаг командной строки, затем переменные окружения, затем .env, затем значения по умолчанию. Файл .env никогда не перебивает то, что уже задано. Читается только файл из текущего каталога — наверх поиск не идёт. Запуск из подпапки не подхватит чужой ключ.

Есть и безопасность. Ключ в флаге --openrouter-key попадает в историю shell, а на Linux ещё и в список процессов. Через переменную окружения или .env обоих рисков нет. При старте сервер называет применённые переменные, но никогда не печатает их значения.

Семейство проектов

Сервер — часть связки из трёх репозиториев.

  • invisible_playwright — движок в виде Python-библиотеки. Для тех, кто хочет писать код вместо промптов. API повторяет Playwright, поэтому существующий код почти не меняется.
  • invisible_core — низкоуровневая часть. Из seed она строит отпечаток браузера, настройки, прокси и геолокацию.

Wiki и примеры

К проекту приложена wiki с гайдами по браузерным агентам:

Готовые примеры с диалогами и результатами лежат в каталоге articles/. Блоки конфигурации для MCP-клиентов, настройки и список инструментов описаны на странице wiki «The MCP server».

Приватность и лицензия

Сервер работает локально и не имеет своего сервера. Вот что покидает вашу машину:

  • Сайты видят браузер — как и любого посетителя с обычным Firefox.
  • Провайдер модели получает переписку и то, что агент прочитал на странице. В веб-интерфейсе это OpenRouter под вашим ключом. Через MCP тем же занимается клиент, к которому подключён сервер.
  • GitHub отдаёт движок и базу GeoIP при первом запуске, а также принимает запрос к строке-счётчику при каждом старте браузера. Запрос не несёт никаких данных о вас, GitHub видит лишь IP-адрес.

Сессии, профили и скриншоты остаются на диске: в каталоге INVISIBLE_MCP_HOME, если он задан, иначе в системном каталоге данных приложения. Удаляйте их когда хотите, больше их нигде не хранят.

Лицензия — MIT. Всё, что распространялось до 2 сентября 2026 года, вышло под AGPL-3.0 и остаётся под ней.

Напоследок напоминание самих авторов: читайте правила сайтов, куда отправляете агента, уважайте лимиты на частоту запросов и не отправляйте ничего, что человек не прочитал.

Источник: https://github.com/feder-cr/invisible_playwright_mcp