Как автоматизировать сайт, у которого нет API
Типичная ситуация: есть сервис, в котором вы каждый день делаете одно и то же руками, и очень хочется это автоматизировать. Идёте искать API - а его нет, или он закрыт, или в нём нет нужного метода. Разберём, что делать дальше.
Почему API часто нет
Открытый API - это обязательство: его нужно поддерживать, документировать, версионировать, защищать от злоупотреблений. Многим продуктам это невыгодно, а некоторым прямо противоречит модели: сервис зарабатывает на том, что вы проводите время в его интерфейсе.
Подход 1: парсинг HTML
Программа скачивает страницу и вытаскивает нужные данные из разметки. Работает для публичных страниц и для чтения. Слабые места: современные сайты рендерят контент скриптами, так что в сыром HTML может ничего не быть, а любое изменение вёрстки ломает парсер.
Подход 2: реверс сетевых запросов
Открываете панель разработчика, смотрите, какие запросы шлёт сам сайт, и повторяете их. Работает быстро и без браузера. Слабые места: запросы часто защищены токенами и подписями, а на изменение внутреннего протокола вы не влияете - сломается без предупреждения.
Подход 3: браузерная автоматизация
Настоящий браузер, которым управляет программа: открывает страницы, кликает, заполняет формы - как человек. Самый универсальный подход: работает с любым сайтом, включая те, где всё рендерится скриптами и требуется авторизация. Плата за универсальность - выше расход ресурсов и необходимость поддерживать привязки к элементам страницы.
Как сделать автоматизацию устойчивой
Главный враг - изменения интерфейса. Практика, которая спасает: выносить привязки к элементам страницы в конфигурацию, а не зашивать в код. Тогда после обновления сайта вы правите конфиг, а не пересобираете и не переустанавливаете весь инструмент. Второе - человеческий темп действий: случайные паузы вместо механических интервалов. Третье - обработка неожиданного: всплывающие окна, редиректы, капчи должны не ронять процесс, а корректно останавливать его.
О правовой стороне
Автоматизация своих собственных действий в сервисе, которым вы пользуетесь легально - это одно. Массовый сбор чужих персональных данных, обход платных ограничений и создание нагрузки на чужие серверы - совсем другое, и этим заниматься не стоит. Проверяйте пользовательское соглашение сервиса.
Общалкин - это как раз четвёртый подход под ключ: мы автоматизируем рутину в сервисах без API. Нестандартная задача - напишите в Telegram @zloegucci, разберём.
Нужна автоматизация?
Общалкин автоматизирует задачи в сервисах, у которых нет API.
Написать в Telegram