Формирование контента из 1000 Instagram профилей с помощью RSS-Bridge Опубликовано 15 апреля 2023 в блоге Евгения Молотова

На всякий случай, чтобы не докопались

В заголовке и в данном тексте упоминается социальная сеть Instagram, которая с марта 2022 запрещена в РФ.

Задача

В конце 2021 года появился клиент из Великобритании, которому нужно было наполнить сайт на WordPress содержимым на тему “развлекательные заведения в Лондоне”. Содержимое клиент решил брать из Instagram профилей заведений, которых где-то 1000. Но вот загвоздка, Instagram не дает возможность легко экспортировать посты с 1000 профилей.

Путь к решению. Часть 1. Облом с легкими деньгами

Клиент нашел в магазине плагинов инструмент, который импортирует посты из RSS-ленты и нашел мой сервис на базе RSS-Bridge, который на тот момент практически без проблем формировал RSS-ленты из Instagram профилей. Я тогда использовал патч, который упомянул тут. Для патча нужно было использовать свой instagram аккаунт.

Связался со мной. Договорились, что я ему за деньги разверну на его сервере экземпляр RSS-Bridge, который сможет генерировать RSS-ленты на 1000 профилей.

Развернул ему RSS-Bridge с указанным патчем и через день понял, что решение, которую я использовал на своем сервере, уже не работает. Аккаунт, который использовался для доступа к постам Instagram, через короткое время переходил в бан и требовалось подтверждение номера телефона для снятия бана. От начала использования до бана удавалось подготовить где-то 50 RSS-лент, что далеко до нужных 1000. Описал этот момент клиенту, клиент понял и предложил мне поискать другое решение и упомянул, что есть у него 4 instagram аккаунта, если вдруг нужны.

Путь к решению. Часть 2. Специально настроенный браузер

Второе решение сводится к следующему:

  1. я разворачиваю на VPS клиента специально настроенный браузер, который будет посещать эти 1000 профилей, и все собранные данные для формирования RSS-ленты будет пересылать на экземпляр RSS-Bridge

  2. экземпляр на основе данных полученных с помощью RSS-Bridge формирует RSS-ленты

  3. если при посещении профиля выкидывается ошибка вида 429 Too Many Requests, то переключаем используем другой Instagram аккаунт для авторизации

“Специально настроенный браузер” в конечной итерации - это был Chromium с расширением TamperMonkey, в который добавлен написанный мной юзерскрипт, который в свою очередь выполняет п.1. выше. В начале использовал Firefox и GreaseMonkey, но он тупо оказывался не надежным, ибо при смене страницы юзерскрипт мог просто не запуститься.

Причины, почему я выбрал обычный браузер, а не какой-нибудь инструмент типа Selenium:

  1. я не знаком хорошо с Selenium

  2. в планах были наработки решения залить в основной репозиторий RSS-Bridge, где подобный браузер мог быть обычный ПК и не сильно продвинутый пользователь.

Первую реализацию этого решения развернул в начале февраля 2022. В ноябре 2022 последний раз применял напильник.

Итого

  1. Часть работы, которую я делал клиенту, с доработками перешли в основной репозиторий RSS-Bridge:

  2. На основе наработок я реализовал общее решение для публичного экземпляра. Про него упомянул тут. На момент написания полностью еще не готов для переноса в общий репозиторий RSS-Bridge.