Этот гайд закрывает конкретную задачу: настроить Chrome так, чтобы ИИ-агент мог сам открывать сайты, кликать по кнопкам, заполнять формы и читать результаты — без ручного управления браузером. Подходит для Windows 10/11, macOS и Linux с установленным Chrome/Chromium. Всё, что нужно, — терминал, Python и ключ API от любой LLM (например, OpenAI или локальной модели). Мы используем связку Playwright и Chrome DevTools Protocol (CDP — протокол, через который внешние программы отдают команды браузеру).
Пример:на странице `chrome://version` вы увидите строку вида `126.0.6478.126`. Запишите её — если что-то пойдёт не так, по номеру версии легче искать решение.
Playwright — инструмент автоматизации браузера, который работает с Chrome по протоколу CDP. Откройте терминал и выполните команду:
pip install playwright
Ожидаемый результат: в конце появится строка `Successfully installed playwright-1.4x.x`. Если pip не найден, проверьте, что Python установлен корректно (команда `python --version`).
Пример:на macOS с Python 3.11 команда отработает за 30–60 секунд и установит пакет в системную папку site-packages.
Теперь внутри Playwright нужно скачать отдельный Chromium — именно его будет использовать агент:
playwright install chromium
Ожидаемый результат: прогресс-бар загрузки 100% и сообщение о завершении установки. Это отдельный браузер, он не конфликтует с вашим обычным Chrome.
Почему это работает: Playwright не трогает пользовательский профиль Chrome, а запускает чистый движок — так автоматизация безопаснее, а результат предсказуем.
Агент должен подключиться к браузеру через порт. Закройте Chrome и запустите его такой командой:
chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug
Ожидаемый результат: откроется обычное окно Chrome, а в терминале появится строка вида `DevTools listening on ws://127.0.0.1:9222/devtools/browser/...`.
Пример:откройте `http://localhost:9222/json` в любом браузере — вы увидите JSON-список открытых вкладок. Это значит, что порт работает.
Создайте файл `connect.py` с таким содержимым:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# Подключаемся к уже запущенному Chrome, ничего не перезапускаем
browser = p.chromium.connect_over_cdp("http://localhost:9222")
page = browser.contexts[0].pages[0] # берём первую открытую вкладку
page.goto("https://example.com")
page.click("a") # клик по первой ссылке
print("Заголовок:", page.title())
browser.close()
Запустите: `python connect.py`.
Ожидаемый результат: вкладка Chrome перейдёт на example.com, выполнится клик, а в терминале напечатается заголовок страницы. Именно отсюда начинается автоматизация.
Почему это работает: `connect_over_cdp` обращается к порту 9222 и находит открытые вкладки — вам не нужно каждый раз поднимать браузер заново.
Чтобы нейросеть могла управлять браузером, дайте ей набор функций: открыть страницу, кликнуть, ввести текст, прочитать содержимое. В коде это выглядит как список инструментов, который LLM вызывает при ответе. Подробная схема превращения обычного чата в агента описана в отдельном руководстве.
Ожидаемый результат: агент получает массив доступных действий и сам решает, какое вызывать — например, «перейти на страницу» → `page.goto()`, «отправить форму» → `page.click("button[type=submit]")`.
Дайте агенту реальную задачу: «Открой поисковик, набери запрос, выведи первый результат в консоль». Запустите скрипт и следите за вкладкой Chrome.
Ожидаемый результат: браузер сам выполняет все действия, а агент печатает ответ — без вашего участия. Если что-то упало, переходите к разделу проблем ниже.
1. Ошибка `Connection refused` на localhost:9222.Симптом: при запуске скрипта падает исключение, Chrome не отвечает. Решение: проверьте, что Chrome запущен с флагом `--remote-debugging-port=9222` (в обычном режиме порт не открывается). Если порт занят другим процессом, выполните `lsof -i :9222` на macOS/Linux или `netstat -ano | findstr 9222` на Windows и смените порт, например, на 9333.
2. Ошибка `Target page, context or browser has been closed`.Симптом: скрипт отработал частично и оборвался. Причина — компьютер ушёл в сон или вкладку закрыли вручную. Решение: отключите автоматический сон на время теста и добавьте в код переподключение через `try/except` с повторным вызовом `connect_over_cdp`.
3. Playwright не находит установленный движок.Симптом: сообщение вида `Executable doesn't exist`. Решение: выполните `playwright install chromium` повторно — при первом запуске могла прерваться загрузка. Проверьте права на запись в папку профиля пользователя.
Нужен ли Python, или можно автоматизировать на JavaScript?
Можно и на JavaScript: установите `playwright` через npm и используйте функцию `chromium.connectOverCDP()`. Принцип тот же, отличается только синтаксис.
Это бесплатно?
Сама автоматизация бесплатна: Playwright и Chromium — open-source проекты. Платить нужно только за API-ключ LLM, если вы используете платную модель. Локальные модели работают без оплаты.
Можно ли автоматизировать обычный Chrome без отдельного профиля?
Можно, но не рекомендуется: без `--user-data-dir` вы даёте агенту доступ к вашим сохранённым паролям и cookies. Лучше всегда использовать изолированный профиль.
Это безопасно для моих данных?
Да, если следовать правилам: отдельный профиль, минимум прав у скрипта (не запускать от root) и проверка действий агента на тестовом сайте перед боевой задачей. Агент выполняет только те команды, которые вы описали в списке инструментов.
Готово: после прохождения всех шагов у вас есть полноценная связка «нейросеть + браузер». Агент сможет собирать данные, тестировать формы и выполнять рутинные операции в Chrome. Дальше расширяйте набор инструментов — добавляйте функции скриншотов, скачивания файлов или работы с cookie.