← Все статьи

У всего есть интерфейс. Почти ни у чего нет API.

11 мин чтения автоматизацияагентыapiпрофили

Вкладка, которую нельзя вызвать из кода

Составьте список программ, к которым ваша команда прикасалась на этой неделе. Теперь вычеркните всё, чем можно управлять из кода, ни у кого не спрашивая разрешения. У большинства команд второй список втрое короче первого, а уцелевшее - это то, что кто-то интегрировал много лет назад.

Оставшееся в первом списке вовсе не экзотика. Это сервис генерации видео, за который платит ваш дизайнер. Это кабинет продавца, где живут ваши карточки. Это портал поставщика, который раз в месяц присылает вам PDF. Это место в сервисе для рекрутинга, портал страховой, система таможенного оформления, внутреннее приложение, чья команда давно разошлась. Каждый из них - продукт, за который вы уже платите и которым имеете полное право пользоваться. И каждым можно управлять только руками, мышью, во вкладке.

Именно этот разрыв нас просят закрыть, и вопросы приходят поразительно одинаковые. Не «как мне спарсить этот сайт» - так почти никто уже не спрашивает. Вопрос звучит так: «у меня здесь аккаунт, я делаю одно и то же сорок раз в неделю, почему я не могу это вызвать».

Три способа стать недостижимым

Причины стоит разделить: у них разная форма и разный срок жизни.

API просто нет. Вендор выпустил веб-приложение и на этом остановился. Flow, инструмент Google для съёмки видео, - пример, к которому сейчас апеллируют чаще всего: публичного API нет, на форумах самой Google стоит очередь разработчиков с просьбами его добавить, и вокруг этого уже выросла небольшая индустрия сторонних обёрток, продающих то, чего Google не даёт. Midjourney находится в этом положении годами: официального API не было никогда, условия использования запрещают автоматический доступ, и любой продукт, который продаётся как «Midjourney API», - неофициальная обёртка поверх интерфейса. С Suno в аудио история ровно та же. Это не только про генеративный ИИ - просто там боль слышнее всего, потому что пользователи технические, а задачи по природе повторяющиеся.

API - это другой продукт, не тот, что вы купили. Вот это удивляет сильнее всего. Потребительская подписка и API для разработчиков сплошь и рядом оказываются двумя разными бизнесами внутри одной компании, с разными балансами, которые не конвертируются. Купить топовый потребительский тариф видеомодели и обнаружить, что ни один из этих кредитов нельзя потратить через API, - настолько частое недоразумение, что вендоры выносят его в свои FAQ. Хуже того: поштучный тариф для разработчика нередко в несколько раз дороже, чем та же генерация обходится вам как подписчику. То есть рациональный ход клиента - использовать уже оплаченное место - оказывается единственным, который продукт не поддерживает.

API есть, но не для вас. Проверка доступа. Партнёрский договор. Минимальный оборот. Токен разработчика, на который уходит квартал переписки. Квота, рассчитанная на интегратора, а не на клиента. Здесь живут рекрутинговые продукты, крупные рекламные платформы и большинство финансовых порталов. Ирония острая: смотреть на все эти записи собственными глазами прямо сейчас, в браузере, вам можно, а забрать ту же запись программно - нельзя.

Обратите внимание, что общего у всех трёх случаев. Ни в одном из них вы не пытаетесь добраться до данных, на которые не имеете прав. Место оплачено вами. Проблема - в форме двери.

Где на самом деле спрос

Мы ведём список того, куда нас просят направить автоматизацию. Он длиннее и страннее, чем можно решить по формулировке «ИИ-инструменты», и основная часть рабочих часов лежит как раз в длинном хвосте.

Категория Какие названия называют Что хотят вызывать
Места в генеративных сервисах Google Flow, Midjourney, Suno, Runway, Kling, Luma, Higgsfield, Leonardo, Krea, Freepik Генерация, итерации, выгрузка, каталогизация
Места в ассистентах и research-сервисах NotebookLM, Google AI Studio, Perplexity, Grok, Gemini, Copilot Спросить, собрать, выгрузить, держать корпус в актуальном виде
Кабинеты продавца на маркетплейсах Amazon Seller Central, Walmart Seller Center, eBay, Etsy, TikTok Shop, Shopee, Lazada, Mercado Libre, Allegro, Alibaba, Temu Правка карточек, выгрузка заказов, споры, проверка выкупа
Рекламные кабинеты Google Ads, Meta Ads Manager, TikTok Ads, Amazon Ads, LinkedIn Campaign Manager, Reddit Ads, Snapchat Ads Выгрузить расходы, поменять бюджеты и ставки, забрать отчёты
Соцсети и аккаунты авторов LinkedIn, X, Instagram, TikTok, YouTube Studio, Pinterest, Threads, Reddit Публиковать, планировать, читать входящие, брать свою аналитику
Рекрутинг и поиск кандидатов LinkedIn Recruiter, Indeed, ZipRecruiter, Workday, Greenhouse, Lever, SmartRecruiters Сохранённые поиски, состояние воронки, переписка
Закупки и порталы поставщиков SAP Ariba, Coupa, Jaggaer, Tungsten, Taulia, SAP Concur, Basware Счета, заказы, выписки, документы о перечислениях
Кадры и расчёт зарплаты ADP, Paychex, Gusto, Rippling, Deel, Workday Выгрузка штата, расчётные периоды, документы
Страхование и урегулирование убытков Порталы страховых, клиринговые порталы, брокерские бэк-офисы Проверка полиса, статус заявки, выгрузка расчётов
Госорганы и отчётность Налоговые порталы, таможенное декларирование, реестры юрлиц, патентные ведомства, площадки госзакупок Подать, проверить статус, скачать подтверждение
Логистика и перевозчики FedEx, UPS, DHL, Maersk, порталы LTL-перевозчиков, экстранеты экспедиторов Тарифы, заявки, отклонения в отслеживании, документы о доставке
Экстранеты в туризме и гостеприимстве Booking.com Extranet, Expedia Partner Central, Airbnb, Agoda, бэк-офисы channel manager Тарифы, доступность, наличие мест, отзывы
Места в аналитике и исследованиях Semrush, Ahrefs, Similarweb, Search Console, App Store Connect, Google Play Console Выгрузить цифры, которые место и так показывает
Внутренние легаси-системы Внутренние админки, вендорские системы с платным API, интранет-процессы Всё подряд

Читать это стоит как список спроса, а не как таблицу «у кого есть API». У части из них API опубликован, и всплывают они из-за цены, покрытия или проверки доступа, а не из-за отсутствия. У нескольких его сегодня нет вовсе - чаще всего спрашивают про Google Flow, Midjourney, Suno и потребительский NotebookLM, - и всё это может измениться по графику вендора, а не по вашему.

Если смотреть на это как на один список, а не как на тринадцать, бросаются в глаза две вещи.

Первая: самое ценное почти никогда не является публичными данными. Это ваши собственные записи за вашим собственным логином. Это другая задача, нежели веб-скрейпинг, с другой механикой и другим профилем риска, - и именно поэтому универсальная инфраструктура для скрейпинга её не решает.

Вторая: колоссальная доля мировых бизнес-процессов и в 2026 году состоит из человека, заполняющего форму. Порталы никуда не денутся. API не появятся. Между ними должно что-то стоять.

Как индустрия отвечает на это сегодня

На рынке есть четыре семейства ответов, и каждое в чём-то по-настоящему хорошо.

Классический RPA. Самый старый ответ и до сих пор самый крупный бизнес. Робот управляет интерфейсом, обычно на виртуальной машине, которую кто-то в ИТ обслуживает. Это работает, за этим стоят два десятилетия корпоративного управления процессами, и это правильный инструмент, когда процесс стабилен, а компания готова содержать под него отдельный центр компетенций. Одному разработчику с одним местом и скриптом он подходит плохо, а его рекордеры на селекторах славятся хрупкостью при первом же редизайне.

Сторонние неофициальные обёртки. Кто-то строит автоматизацию и сдаёт её вам в аренду как REST-эндпоинт. Именно так устроена вся кустарная индустрия вокруг Midjourney и Flow. Внедряется быстро и снимает всю эксплуатацию, но присмотритесь, на что вы соглашаетесь. Либо вы передаёте учётные данные, чтобы вендор управлял вашим аккаунтом, либо вендор управляет собственной фермой аккаунтов, и тогда вы покупаете результат работы личности, о которой ничего не знаете. В первом случае риск вашего аккаунта теперь в чужих руках. Во втором - риск нарушения условий реален, но невидим, а сервис исчезает на той же неделе, когда меняется исходный сайт.

Облачная браузерная инфраструктура с сохранённой авторизацией. Текущая волна и технически самая интересная. У Browserbase есть Contexts, у Browser Use - профили, способные даже импортировать ваш настоящий профиль Chrome, Kernel предлагает управляемую авторизацию с поиском учётных данных и обработкой TOTP, у Anchor, Airtop и Notte - свои версии сохранённой личности. Под капотом это один и тот же примитив: сохраняемый каталог пользовательских данных браузера, переживающий сессии, чтобы агент не логинился каждый запуск. Примитив правильный. Не решено при этом всё, что идёт после «кука ещё на месте», - а там, как мы сейчас увидим, и лежит основная трудность.

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

Сложно не нажать кнопку. Сложно остаться тем же человеком.

Каждое из четырёх семейств умеет добиться нажатия. Но отказы почти никогда не происходят на нажатии.

Сессии истекают, и то, как именно они истекают, и есть вся игра. Хранилище кук, скопированное в девять утра, в полдень может быть живой сессией, а к полуночи - стеной авторизации. Механизмы обновления у каждого сайта свои. Одни выдают короткоживущие токены, которые продлеваются молча; другие требуют полной повторной авторизации; всё больше сайтов привязывают сессию к ключу в защищённом оборудовании устройства, который по своей конструкции нельзя скопировать на другую машину. Слой автоматизации, для которого авторизация - это «мы сохранили куки», отработает на демонстрации и развалится на третьей неделе.

У аккаунта есть история, и антифрод её помнит. Вот эту часть универсальная браузерная инфраструктура целиком оставляет вам. Аккаунт, который два года заходил с одного ноутбука в одном городе, а затем сделал запрос из свежего headless-браузера в дата-центре, не просто сменил устройство - он выдал ровно тот сигнал, который системы противодействия мошенничеству и ищут. Итог обычно не в виде честной ошибки. Это проверка личности, временная блокировка, запрос кода на телефон или тихо ухудшенный режим, в котором страница рисуется, а кнопка ничего не делает. Разбирать такое по строчке лога мучительно, потому что с точки зрения автоматизации она просто нажала, и ничего не произошло.

Две машины разойдутся. Как только одним аккаунтом управляют и руками с ноутбука, и скриптом с раннера, у вас две копии сессии и никакой стратегии слияния. Побеждает тот, кто закрылся последним, а всё, что записала вторая сторона, исчезает. Большинство команд узнаёт об этом после того, как потеряет день работы.

Некоторые шаги действительно требуют человека. Подтверждение оплаты, одноразовый код, принятие условий, капча, которую сайт имеет полное право вам показать. Конструкция, которая не умеет в этот момент вернуть сессию человеку, не приостанавливается на первом таком шаге, а окончательно на нём ломается.

Параллельность - не та ручка, которую можно крутить свободно. Десять одновременных вызовов с одного места совсем не похожи на человека за этим местом, и многие продукты следят именно за этим.

Перечитайте этот список и обратите внимание, что он описывает. Это не задача автоматизации. Это задача идентичности. Нажатие - последние десять процентов.

Что слой «интерфейс как API» обязан делать правильно

Если вы такой слой выбираете или строите, вот свойства, от которых зависит, переживёт ли он встречу с продакшеном.

  1. Он управляет вашим аккаунтом, а не чужим. Вы входите сами. Слою не нужен ваш пароль, потому что он переиспользует созданную вами сессию. Никто посторонний не хранит ваши учётные данные, и вам незаметно не подставляют чьи-то чужие аккаунты.
  2. Личность сохраняется и остаётся связной. Не только куки - всё окружение. Те же характеристики устройства, та же точка выхода в сеть, та же локаль и часовой пояс при каждом вызове, ровно так, как этим аккаунтом всегда пользовались.
  3. Модель вне горячего пути. Используйте её, чтобы написать и починить. Не ставьте её между вызывающим кодом и результатом, иначе вы наследуете её задержку, её стоимость и её разброс на каждом отдельном вызове.
  4. Действия именованы, версионированы и типизированы. generate с определённым входом и определённым выходом. Когда сайт меняется, меняется версия действия, а ваш код нет - или ломается громко, на видимой границе.
  5. Долгая работа - это задача, а не удерживаемое соединение. Всё, что идёт минутами, возвращает идентификатор для опроса. Очередь рендера не должна быть HTTP-запросом, висящим на сокете.
  6. Ошибка называет сломавшийся слой. Стена авторизации, страница проверки, изменившийся селектор и настоящая ошибка сайта - четыре разных состояния с четырьмя разными способами починки. Схлопывание их в один таймаут - самый частый способ потерять на этой инструментальной обвязке полдня.
  7. Идемпотентность везде, где сайт её допускает. Повторный вызов не должен потратить кредиты дважды, оформить второй заказ или отправить второе сообщение.
  8. Есть выход к рукам. Когда шаг требует человека, вы открываете то же самое окружение сами и доводите дело, а дальше автоматизация продолжает. Это работает, только если автоматическая и человеческая сессии - буквально одно окружение, а не две копии.

Пункты 1, 2 и 8 - как раз те, где рынок сегодня слабее всего, и одновременно те три, которые необычно удачно решаются устойчивым профилем браузера со стабильной личностью: профиль уже удерживает сессию, отпечаток и точку выхода как один объект, и его уже можно открыть руками.

Где проходит граница

Ничто из сказанного не означает, что автоматизировать следует любой сайт. Условия использования различаются колоссально, и они не декорация: одни продукты прямо разрешают программное использование собственного аккаунта, другие ограничивают, третьи закроют за это аккаунт. Оценка делается по каждому сайту и принадлежит владельцу аккаунта - единственному, у кого есть и договор, и контекст.

Стоит отвергнуть небрежную версию противоположного довода - идею, будто раз вендор не построил API, то любые ваши действия под собственным логином нелегитимны. Читать свои счета, выгружать свои карточки, скачивать свои сгенерированные файлы и подавать свою отчётность - не враждебные акты. Ровно за этим место и покупалось. Отсутствие API - продуктовое решение вендора, а не граница, на которую вы соглашались.

Честная позиция узкая, и мы придерживаемся именно её: управлять аккаунтами, которыми вы владеете, на условиях, которые вы прочитали, с интенсивностью, похожей на то использование, за которое вы платите.

Форма ответа

Любая серьёзная попытка решить эту задачу сходится к одному и тому же основанию. Не скрейпер и не цикл из скриншотов, а долговечная браузерная сессия со стабильной личностью, которую может открыть и человек, плюс небольшой типизированный контракт перед ней. Сессия - то, что вообще делает вызов возможным. Контракт - то, что делает результат пригодным для программы.

У тех, кто работает с профилями, это основание уже есть: синхронизированный профиль - это браузерное окружение с фиксированной личностью, собственной точкой выхода, собственным хранилищем кук и собственными passkey, которое ездит за вами между машинами и в любой момент открывается руками. Поставить перед ним типизированное действие - куда более короткий путь, чем строить слой сессий с нуля, и мы движемся именно туда: как это устроено и чего оно намеренно делать не будет, мы описали на странице API профиля.

Если у вас есть конкретный сайт, на который вы бы это направили, там же есть форма. Список в начале этой статьи собран как раз из ответов на этот вопрос.

Попробуйте на бесплатном тарифе.

Неограниченное число локальных профилей, без карты. Проверьте результат детекторами сами.