Как скачать всех подписчиков в инстаграм python

Как скачать всех подписчиков в инстаграм python

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 Graph API

Для доступа к данным Instagram Business или Creator аккаунтов требуется действительный токен, получаемый через Facebook Graph API. Перед началом убедитесь, что у вас есть:

  • Бизнес-страница Facebook
  • Аккаунт Instagram, привязанный к этой странице
  • Приложение в Meta for Developers с активированным Instagram Graph API

После создания приложения выполните следующие шаги:

  1. В разделе Products добавьте Instagram Graph API.
  2. Перейдите в Settings → Basic, укажите домен и email для связи.
  3. В Roles добавьте ваш личный аккаунт как администратора, чтобы тестировать API-запросы.

Теперь получите краткосрочный токен:

  1. Сформируйте 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
  2. После авторизации получите код в параметре 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 дольше, получите долговременный токен:

  1. Выполните 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. Храните список уже обработанных пользователей в файле или базе данных, чтобы избежать повторных запросов и снизить нагрузку.

Вопрос-ответ:

Ссылка на основную публикацию