На всякий случай, чтобы не докопались
В заголовке и в данном тексте упоминается социальная сеть 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. Специально настроенный браузер
Второе решение сводится к следующему:
-
я разворачиваю на VPS клиента специально настроенный браузер, который будет посещать эти 1000 профилей, и все собранные данные для формирования RSS-ленты будет пересылать на экземпляр RSS-Bridge
-
экземпляр на основе данных полученных с помощью RSS-Bridge формирует RSS-ленты
-
если при посещении профиля выкидывается ошибка вида 429 Too Many Requests, то переключаем используем другой Instagram аккаунт для авторизации
“Специально настроенный браузер” в конечной итерации - это был Chromium с расширением TamperMonkey, в который добавлен написанный мной юзерскрипт, который в свою очередь выполняет п.1. выше. В начале использовал Firefox и GreaseMonkey, но он тупо оказывался не надежным, ибо при смене страницы юзерскрипт мог просто не запуститься.
Причины, почему я выбрал обычный браузер, а не какой-нибудь инструмент типа Selenium:
-
я не знаком хорошо с Selenium
-
в планах были наработки решения залить в основной репозиторий RSS-Bridge, где подобный браузер мог быть обычный ПК и не сильно продвинутый пользователь.
Первую реализацию этого решения развернул в начале февраля 2022. В ноябре 2022 последний раз применял напильник.
Итого
-
Часть работы, которую я делал клиенту, с доработками перешли в основной репозиторий RSS-Bridge:
-
На основе наработок я реализовал общее решение для публичного экземпляра. Про него упомянул тут. На момент написания полностью еще не готов для переноса в общий репозиторий RSS-Bridge.