Агент работает в том же браузере, где вы уже вошли
Автоматизация кабинетов, у которых нет API, — без передачи паролей
Ключевой результат
Доля успешных прогонов с ~30% до 85%+; четыре проекта на одном инструменте, самая крупная задача — разбор тысячи закупок
Контекст
Много рабочей рутины живёт в чужих веб-кабинетах: закупки, доски объявлений, кабинеты аналитики и вебмастеров. У части из них API нет вовсе. У части он есть, но требует сервисного аккаунта, договора или интеграции, которая дороже самой задачи. Обычный ответ на это — «делайте руками», и означает он часы одинаковых кликов.
Проблема
Проблемы две, и вторая серьёзнее.
Первая — надёжность. Автономный браузерный агент на живом кабинете ломается предсказуемо: кликает по элементу, который успел исчезнуть, заново открывает то же меню, ходит по кругу. До доработок доля успешных прогонов держалась около 30%, а один сценарий раздувался за восемьдесят шагов.
Вторая — доступ. Чтобы что-то сделать в кабинете, надо быть в него залогиненным, а это пароль, второй фактор и подтверждение личности. Отдавать это скрипту нельзя — ни по здравому смыслу, ни по правилам сервиса.
Подход
Развернули постановку: не «агент вместо человека», а агент рядом с человеком, в одном окне. Человек открывает браузер и логинится сам; агент подключается к уже живой сессии по служебному протоколу отладки. Учётных данных он не видит и не запрашивает — это не пожелание, а свойство схемы.
Жизненный цикл разбит на четыре шага: разведка — агент составляет карту интерфейса и список граблей; прототип — алгоритм отлаживается на одном-двух примерах; перенос — отлаженное переезжает в обычный скрипт; производство — скрипт работает сам, по расписанию. Сломалось на стороне сайта — возвращаемся к разведке, а не переписываем всё заново.
Безопасность — отдельный слой, а не оговорка в конце: изолированный профиль браузера на каждый проект, белый список доменов, журнал действий, режим «только чтение» по умолчанию. Изоляция профилей нужна не для порядка: бан или капча в одном проекте не задевает соседние.
Реализация
Помощник-обёртка около тысячи строк и тонкие скрипты под каждый целевой сайт. Три защиты закрывают типовые срывы: пауза на «устаканивание» интерфейса после клика, обрыв повторов по одному и тому же элементу, обрыв повторов одного и того же логического шага. После них доля успешных прогонов — 85%+, а типичный сценарий укладывается в 9–11 шагов вместо восьмидесяти.
Знание о сайте не теряется между заходами: по каждому целевому сайту ведутся карта интерфейса и список граблей — от «эта кнопка ловит соседнюю ссылку» до «после простоя сессия деградирует, признак такой-то». Следующий проход начинается не с нуля.
Самая нагруженная работа на этом стеке — сбор данных о закупках для исследования рынка. Из выгрузки видно название закупки и общую сумму, а нужен состав: какие позиции внутри и чьи. Разобрать одну руками — минуты; на тысяче это недели. Здесь браузерная часть только вход, дальше идёт то, ради чего контур строился как инструмент, а не как скрипт: «что ищем» отделено от «как ищем» — предмет поиска задаётся одним каталогом, а поиск карточки, чтение состава, классификация и выгрузка от него не зависят; находки не останавливают прогон — спорное закрывается решением по умолчанию, а между чанками вся ранее обработанная база размечается заново под обновлённое знание, без повторного захода на сайт; и там, где ответ следует из названия, карточка не запрашивается вовсе. Результат: 966 закупок разобраны в один прогон с нулевым остатком, 505 решений сохранены с историей и обоснованием, а инструмент передан второму оператору — команды запуска написаны и под вторую операционную систему.
Почему это не только наша история. Кабинетами пользуются все: Авито, Юла, Ozon, Wildberries, кабинеты Google и Яндекса. И почти в каждом есть операции, которые делаются руками просто потому, что до них не дотягивается никакой API, — выдать ключ, поменять настройку, снять отчёт, поднять объявление. У нас часть этого уже закрыта: доска объявлений и кабинеты Google и Яндекса работают через описанный контур. Маркетплейсы — Ozon и Wildberries — пока нет, они в очереди. И одно ограничение мы держим сознательно: там, где действия касаются денег или необратимы, агент остаётся на привязи — работает под присмотром оператора, а не по расписанию. Автономность здесь не цель.
Метрики до / после
| Показатель | До | После |
|---|---|---|
| Доля успешных прогонов сценария | около 30% | 85%+ |
| Шагов в типичном сценарии | 80+ | 9–11 |
| Учётные данные у автоматики | пришлось бы отдать пароль и второй фактор | не нужны, человек входит сам |
| Права по умолчанию | полные | только чтение, действия по белому списку |
| Разбор нового сайта | заново каждый раз | карта интерфейса и грабли сохраняются |
| Сервис без API | для автоматизации недоступен | доступен через тот же браузер, что у человека |
| Самая крупная задача на стеке | недели ручного разбора | 966 закупок за прогон, остаток ноль |
Можно ли повторить в вашем случае?
Напишите — разберём вашу задачу бесплатно и скажем, что реально сделать.