Хорошие Данные
← Все кейсы·АвтоматизацияPython + Chrome DevTools Protocol + Playwright + SQLite

Агент работает в том же браузере, где вы уже вошли

Автоматизация кабинетов, у которых нет API, — без передачи паролей

Ключевой результат

Доля успешных прогонов с ~30% до 85%+; четыре проекта на одном инструменте, самая крупная задача — разбор тысячи закупок

Контекст

Много рабочей рутины живёт в чужих веб-кабинетах: закупки, доски объявлений, кабинеты аналитики и вебмастеров. У части из них API нет вовсе. У части он есть, но требует сервисного аккаунта, договора или интеграции, которая дороже самой задачи. Обычный ответ на это — «делайте руками», и означает он часы одинаковых кликов.

Проблема

Проблемы две, и вторая серьёзнее.

Первая — надёжность. Автономный браузерный агент на живом кабинете ломается предсказуемо: кликает по элементу, который успел исчезнуть, заново открывает то же меню, ходит по кругу. До доработок доля успешных прогонов держалась около 30%, а один сценарий раздувался за восемьдесят шагов.

Вторая — доступ. Чтобы что-то сделать в кабинете, надо быть в него залогиненным, а это пароль, второй фактор и подтверждение личности. Отдавать это скрипту нельзя — ни по здравому смыслу, ни по правилам сервиса.

Подход

Развернули постановку: не «агент вместо человека», а агент рядом с человеком, в одном окне. Человек открывает браузер и логинится сам; агент подключается к уже живой сессии по служебному протоколу отладки. Учётных данных он не видит и не запрашивает — это не пожелание, а свойство схемы.

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

Безопасность — отдельный слой, а не оговорка в конце: изолированный профиль браузера на каждый проект, белый список доменов, журнал действий, режим «только чтение» по умолчанию. Изоляция профилей нужна не для порядка: бан или капча в одном проекте не задевает соседние.

Реализация

Помощник-обёртка около тысячи строк и тонкие скрипты под каждый целевой сайт. Три защиты закрывают типовые срывы: пауза на «устаканивание» интерфейса после клика, обрыв повторов по одному и тому же элементу, обрыв повторов одного и того же логического шага. После них доля успешных прогонов — 85%+, а типичный сценарий укладывается в 9–11 шагов вместо восьмидесяти.

Знание о сайте не теряется между заходами: по каждому целевому сайту ведутся карта интерфейса и список граблей — от «эта кнопка ловит соседнюю ссылку» до «после простоя сессия деградирует, признак такой-то». Следующий проход начинается не с нуля.

Самая нагруженная работа на этом стеке — сбор данных о закупках для исследования рынка. Из выгрузки видно название закупки и общую сумму, а нужен состав: какие позиции внутри и чьи. Разобрать одну руками — минуты; на тысяче это недели. Здесь браузерная часть только вход, дальше идёт то, ради чего контур строился как инструмент, а не как скрипт: «что ищем» отделено от «как ищем» — предмет поиска задаётся одним каталогом, а поиск карточки, чтение состава, классификация и выгрузка от него не зависят; находки не останавливают прогон — спорное закрывается решением по умолчанию, а между чанками вся ранее обработанная база размечается заново под обновлённое знание, без повторного захода на сайт; и там, где ответ следует из названия, карточка не запрашивается вовсе. Результат: 966 закупок разобраны в один прогон с нулевым остатком, 505 решений сохранены с историей и обоснованием, а инструмент передан второму оператору — команды запуска написаны и под вторую операционную систему.

Почему это не только наша история. Кабинетами пользуются все: Авито, Юла, Ozon, Wildberries, кабинеты Google и Яндекса. И почти в каждом есть операции, которые делаются руками просто потому, что до них не дотягивается никакой API, — выдать ключ, поменять настройку, снять отчёт, поднять объявление. У нас часть этого уже закрыта: доска объявлений и кабинеты Google и Яндекса работают через описанный контур. Маркетплейсы — Ozon и Wildberries — пока нет, они в очереди. И одно ограничение мы держим сознательно: там, где действия касаются денег или необратимы, агент остаётся на привязи — работает под присмотром оператора, а не по расписанию. Автономность здесь не цель.

Метрики до / после

ПоказательДоПосле
Доля успешных прогонов сценарияоколо 30%85%+
Шагов в типичном сценарии80+9–11
Учётные данные у автоматикипришлось бы отдать пароль и второй факторне нужны, человек входит сам
Права по умолчаниюполныетолько чтение, действия по белому списку
Разбор нового сайтазаново каждый разкарта интерфейса и грабли сохраняются
Сервис без APIдля автоматизации недоступендоступен через тот же браузер, что у человека
Самая крупная задача на стекенедели ручного разбора966 закупок за прогон, остаток ноль

Можно ли повторить в вашем случае?

Напишите — разберём вашу задачу бесплатно и скажем, что реально сделать.