Instagram официально не предоставляет открытого способа выгрузки списка подписчиков другого аккаунта. Однако с использованием Python и библиотек instaloader или instabot можно автоматизировать этот процесс при соблюдении ряда технических и правовых условий. Скрипт взаимодействует с внутренним API Instagram, требует авторизации и аккуратной настройки, чтобы избежать блокировки аккаунта.
Библиотека instaloader позволяет авторизоваться под своим аккаунтом и получить доступ к полной информации о подписчиках любого открытого профиля или собственного закрытого. Для работы необходимо установить модуль через pip install instaloader
, затем использовать методы загрузки профиля и обхода подписчиков: profile.get_followers()
. Важно реализовать паузы между запросами, чтобы избежать ограничения со стороны Instagram (рекомендуется не более 100 запросов в час).
Для массовой выгрузки данных удобно сохранять результаты в формате CSV или JSON, что обеспечивает дальнейшую интеграцию с другими системами аналитики или CRM. В дополнение к имени пользователя можно получить такие параметры, как идентификатор пользователя, био, количество публикаций и подписок. Все данные собираются через парсинг объектов, предоставляемых API библиотеки.
Перед началом работы необходимо учитывать, что Instagram регулярно меняет структуру API и алгоритмы защиты от ботов. Рекомендуется использовать актуальные версии библиотек и периодически обновлять логику скрипта. Для обхода блокировок возможно потребуется прокси и ротация user-agent. Работа с Instagram автоматически подпадает под условия пользовательского соглашения, нарушение которых может привести к блокировке аккаунта.
Настройка окружения для работы с Python и Instagram API
Установите Python версии не ниже 3.8. Проверьте установленную версию командой python --version
. Если Python не установлен, загрузите последнюю версию с официального сайта python.org и добавьте его в системную переменную PATH.
Создайте изолированное окружение с помощью python -m venv insta_env
и активируйте его: insta_env\Scripts\activate
в Windows или source insta_env/bin/activate
в Linux/MacOS.
Установите необходимые библиотеки: pip install instaloader python-dotenv
. Библиотека Instaloader позволяет взаимодействовать с Instagram без официального API, а dotenv используется для хранения конфиденциальных данных.
Создайте файл .env
в корне проекта и добавьте в него строки: IG_USERNAME=ваш_логин
и IG_PASSWORD=ваш_пароль
. Никогда не сохраняйте эти данные в коде.
Для корректной работы с Instaloader необходим доступ к действующему Instagram-аккаунту. Убедитесь, что в настройках аккаунта отключена двухфакторная аутентификация или используйте сессионные cookies для авторизации.
Проверьте подключение к Instagram с помощью команды: instaloader --login=ваш_логин
. При первом запуске потребуется ввести пароль вручную, после чего будет создан файл сессии. Его можно использовать повторно без повторной авторизации.
Получение токена доступа для работы с Instagram Graph API
Для доступа к данным Instagram Business или Creator аккаунтов требуется действительный токен, получаемый через Facebook Graph API. Перед началом убедитесь, что у вас есть:
- Бизнес-страница Facebook
- Аккаунт Instagram, привязанный к этой странице
- Приложение в Meta for Developers с активированным Instagram Graph API
После создания приложения выполните следующие шаги:
- В разделе Products добавьте Instagram Graph API.
- Перейдите в Settings → Basic, укажите домен и email для связи.
- В Roles добавьте ваш личный аккаунт как администратора, чтобы тестировать API-запросы.
Теперь получите краткосрочный токен:
- Сформируйте URL для запроса авторизации:
https://www.facebook.com/v19.0/dialog/oauth?client_id=APP_ID&redirect_uri=REDIRECT_URI&scope=instagram_basic, pages_show_list&response_type=code
- После авторизации получите код в параметре URL и обменяйте его на токен через POST-запрос:
https://graph.facebook.com/v19.0/oauth/access_token?
client_id=APP_ID&
redirect_uri=REDIRECT_URI&
client_secret=APP_SECRET&
code=CODE
Этот токен действителен 1 час. Чтобы работать с API дольше, получите долговременный токен:
- Выполните GET-запрос:
https://graph.facebook.com/v19.0/oauth/access_token?
grant_type=fb_exchange_token&
client_id=APP_ID&
client_secret=APP_SECRET&
fb_exchange_token=SHORT_LIVED_TOKEN
Долговременный токен активен 60 дней. Для получения ID Instagram аккаунта используйте:
GET https://graph.facebook.com/v19.0/me/accounts?access_token=LONG_LIVED_TOKEN
Из ответа получите id
страницы, а затем выполните:
GET https://graph.facebook.com/v19.0/PAGE_ID?fields=instagram_business_account&access_token=LONG_LIVED_TOKEN
Возвращаемый instagram_business_account.id
потребуется для всех последующих запросов к подписчикам.
Использование библиотеки requests для подключения к API
Библиотека requests позволяет отправлять HTTP-запросы к неофициальным точкам доступа Instagram. Для получения подписчиков необходимо авторизоваться и выполнить запрос к нужному endpoint-у.
Первым шагом требуется выполнить вход в Instagram. Для этого отправляется POST-запрос на https://www.instagram.com/accounts/login/ajax/ с заголовками User-Agent, X-CSRFToken, X-Requested-With и куками, полученными при предварительном GET-запросе на главную страницу.
После успешной авторизации полученные sessionid и csrftoken сохраняются. Эти значения используются в последующих запросах к endpoint-у GraphQL. Запрос на получение подписчиков строится по шаблону: https://www.instagram.com/graphql/query/ с параметрами variables и query_hash. Переменная variables должна содержать user_id, значение fetch_count (например, 50) и после первой страницы – end_cursor для пагинации.
Пример headers: {‘User-Agent’: ‘…’, ‘X-CSRFToken’: ‘…’, ‘Cookie’: ‘sessionid=…;’}.
Важно контролировать количество запросов, чтобы избежать блокировки. Рекомендуется использовать паузы между запросами (не менее 2-3 секунд) и обрабатывать статус-коды ответов (200 – успешно, 429 – превышен лимит, 403 – отказ в доступе).
Также необходимо учитывать, что Instagram регулярно обновляет структуру API и query_hash. Для получения актуального query_hash может потребоваться анализ сетевых запросов в DevTools браузера при загрузке страницы пользователя.
Получение списка подписчиков с помощью запросов к API
Для доступа к списку подписчиков Instagram необходимо использовать Graph API от Meta. Предварительно требуется зарегистрировать приложение в Meta for Developers, получить токен доступа с правами instagram_graph_user_profile
и instagram_graph_user_media
, а также привязать Instagram Business или Creator аккаунт к странице Facebook.
После получения токена выполните запрос к endpoint’у https://graph.instagram.com/me/accounts
, чтобы определить ID связанной страницы. Далее используйте https://graph.facebook.com/v19.0/{page-id}?fields=connected_instagram_account
, чтобы получить ID Instagram-аккаунта.
Список подписчиков напрямую через API Instagram не предоставляется по соображениям конфиденциальности. Однако возможно получить аудиторию, взаимодействовавшую с контентом, через endpoint’ы /insights
и /media
. Например, для получения ID пользователей, оставивших комментарии, используйте /{media-id}/comments
с параметром fields=username,id
.
Для автоматизированной обработки запросов применяйте библиотеку requests
в Python. Включите проверку статуса ответа и обновление токена по истечении срока действия. Ограничения по количеству запросов – 200 вызовов в час на пользователя, соблюдайте лимиты, используя задержки между запросами.
Парсинг подписчиков с личных аккаунтов без API нарушает условия использования платформы и может привести к блокировке. Используйте только официальные методы с авторизованным доступом и документированными endpoint’ами.
Обработка и фильтрация данных подписчиков
После получения списка подписчиков с использованием Instagram API или парсера важно привести данные к структурированному виду. Каждая запись должна содержать минимум: username, full_name, is_private, is_verified, follower_count, following_count и biography. Это обеспечит возможность точного анализа и последующей фильтрации.
Удаляйте дубликаты по полю username. Преобразуйте все строки в нижний регистр, чтобы избежать ошибок при сравнении. Очистите поля от лишних пробелов и специальных символов. Для анализа активности можно исключить аккаунты с нулевым количеством публикаций или закрытым профилем (is_private = True).
Для сегментации применяйте числовые фильтры. Например, исключите пользователей, у которых follower_count меньше 50 или больше 10000 – это часто либо боты, либо бренды. Учитывайте наличие ключевых слов в biography для выявления целевой аудитории. Используйте регулярные выражения для поиска по описанию, например: re.search(r'\bblogger\b|\bphotographer\b', biography)
.
При необходимости анализируйте соотношение подписок к подписчикам: если коэффициент (following_count / follower_count) превышает 2, вероятен массфолловинг. Такие аккаунты часто имеют низкую вовлечённость и могут быть исключены.
Сохраняйте очищенные и отфильтрованные данные в формате CSV или JSON для дальнейшей работы. Не забудьте исключить поля, не несущие ценности, чтобы минимизировать объём хранимых данных.
Сохранение списка подписчиков в CSV или JSON формат
Для сохранения полученного списка подписчиков используйте стандартные библиотеки Python – csv
и json
. После сбора данных через Instagram API или с помощью библиотеки instaloader
, сформируйте структуру данных в виде списка словарей, где каждый элемент содержит имя пользователя и ID.
Пример для сохранения в CSV:
import csv
with open("followers.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["username", "user_id"])
writer.writeheader()
for user in followers_list:
writer.writerow({"username": user.username, "user_id": user.userid})
Для JSON используйте модуль json
:
import json
with open("followers.json", "w", encoding="utf-8") as f:
json.dump([{"username": user.username, "user_id": user.userid} for user in followers_list], f, ensure_ascii=False, indent=2)
Имя файла должно включать дату или идентификатор аккаунта, чтобы избежать перезаписи при повторной выгрузке. Проверяйте наличие дубликатов перед сохранением. Рекомендуется ограничивать количество одновременно обрабатываемых подписчиков, чтобы избежать ошибок при работе с большими массивами данных.
Устранение ограничений и ошибок при скачивании подписчиков
Instagram активно ограничивает автоматические запросы, и при скачивании большого списка подписчиков вы можете столкнуться с ошибками типа 429 Too Many Requests
или внезапной блокировкой сессии. Чтобы избежать этого, важно учитывать следующие аспекты:
- Используйте авторизацию через cookies или токен, а не ввод логина и пароля в коде. Это снижает подозрения алгоритмов безопасности.
- Ограничьте частоту запросов: не более 1 запроса в 2–3 секунды. Используйте
time.sleep()
и рандомизацию задержек. - Каждые 200–300 запросов делайте паузу на 10–15 минут, чтобы избежать автоматической блокировки.
- При использовании библиотеки
instaloader
указывайте--fast-update
и избегайте скачивания лишних данных (постов, фото, IGTV). - Следите за кодами ответов сервера. Обработка ошибок типа
403
илиchallenge_required
должна сопровождаться остановкой скрипта и сменой IP-адреса. - Используйте прокси-серверы с ротацией IP, если работаете с несколькими аккаунтами или большими объемами данных.
Если при работе возникает ошибка LoginRequiredException
или TwoFactorAuthRequiredException
, авторизация должна быть перенесена в отдельный шаг, с ручным вводом кода подтверждения, который затем сохраняется в файл cookie для дальнейшего использования без повторного входа.
При частом использовании рекомендуется настроить логирование, чтобы отслеживать моменты сбоев и оперативно реагировать на изменения в политике API Instagram. Храните список уже обработанных пользователей в файле или базе данных, чтобы избежать повторных запросов и снизить нагрузку.