Automatizar tarefas no Instagram pode simplificar significativamente a forma como você gerencia sua presença online. instagrapi
é uma biblioteca Python projetada para ajudá-lo a fazer exatamente isso. Ela interage diretamente com os próprios sistemas de backend do Instagram—os mesmos que o aplicativo móvel oficial usa. Essa comunicação direta torna o instagrapi
rápido e eficiente, e ele não requer um navegador web para operar.
Este guia tem como objetivo fornecer um caminho claro para começar com o instagrapi
. Abordaremos como instalá-lo, fazer login seguro em sua conta do Instagram, realizar ações comuns como interagir com posts e usuários, fazer upload de conteúdo e mencionar práticas essenciais para garantir que sua automação seja segura e eficaz.
Quer uma plataforma integrada e completa para sua Equipe de Desenvolvedores trabalhar em conjunto com máxima produtividade?
Apidog atende a todas as suas demandas e substitui o Postman por um preço muito mais acessível!
Instalando o Instagrapi em Seu Sistema
Antes de usar o instagrapi
, você precisa instalá-lo. Primeiro, certifique-se de ter o Python instalado em seu computador; o instagrapi
funciona melhor com a versão 3.9 ou mais recente do Python. Você pode verificar sua versão do Python abrindo um terminal (Prompt de Comando, PowerShell ou Terminal no macOS/Linux) e digitando python --version
ou python3 --version
.
Assim que o Python estiver pronto, instalar o instagrapi
é simples usando o pip
, o instalador de pacotes do Python. Em seu terminal, execute o seguinte comando:
pip install instagrapi
Se você usar python3
especificamente para sua instalação do Python 3, talvez precise de:
python3 -m pip install instagrapi
Este comando fará o download e instalará o instagrapi
e quaisquer outras bibliotecas das quais ele dependa. Para um gerenciamento de projeto mais limpo, é frequentemente recomendado usar ambientes virtuais Python, que isolam as dependências do projeto. Você pode criar um com python3 -m venv your_project_name
, ativá-lo e então executar o comando pip install instagrapi
dentro dele.
Conectando-se à Sua Conta do Instagram
Para realizar ações no Instagram, seu script precisa fazer login. O instagrapi
lida com esse processo. O primeiro passo em seu script Python será importar a classe Client
e criar uma instância dela. Este objeto Client
será sua ferramenta principal para todas as interações.
from instagrapi import Client
import os
import time
import random
cl = Client()
Agora, vamos fazer login. É altamente recomendável não codificar seu nome de usuário e senha diretamente em seu script. Usar variáveis de ambiente é um método mais seguro.
INSTAGRAM_USERNAME = os.getenv("INSTA_USERNAME", "your_insta_username")
INSTAGRAM_PASSWORD = os.getenv("INSTA_PASSWORD", "your_insta_password")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
print(f"Login successful as @{INSTAGRAM_USERNAME}!")
except Exception as e:
print(f"Login failed for @{INSTAGRAM_USERNAME}. Error: {e}")
Se sua conta tiver a Autenticação de Dois Fatores (2FA) habilitada, o que é ótimo para segurança, o método login
exigirá um parâmetro adicional verification_code
. Você normalmente obteria esse código de seu aplicativo autenticador ou de um SMS e o passaria durante a chamada de login: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE")
.
Fazer login constantemente com nome de usuário e senha pode ser ineficiente e pode atrair atenção indesejada do Instagram. Uma abordagem mais inteligente é salvar sua sessão de login após a primeira autenticação bem-sucedida e, em seguida, recarregar essa sessão para futuras execuções do script.
Veja como você pode gerenciar sessões:
from instagrapi.exceptions import LoginRequired
SESSION_FILE_PATH = "my_active_session.json"
if os.path.exists(SESSION_FILE_PATH):
cl.load_settings(SESSION_FILE_PATH)
print(f"Loaded session from {SESSION_FILE_PATH}.")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.get_timeline_feed()
print("Session is valid and login successful using saved session.")
except LoginRequired:
print("Saved session was invalid. Need to perform a fresh login.")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.dump_settings(SESSION_FILE_PATH)
print("Fresh login successful, new session saved.")
except Exception as e_relogin:
print(f"Fresh login failed after invalid session: {e_relogin}")
except Exception as e_session_use:
print(f"Error while using saved session: {e_session_use}. Trying fresh login.")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.dump_settings(SESSION_FILE_PATH)
print("Fresh login successful after session error, new session saved.")
except Exception as e_fresh_fallback:
print(f"Fresh login fallback also failed: {e_fresh_fallback}")
else:
print("No session file found. Performing fresh login...")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.dump_settings(SESSION_FILE_PATH)
print(f"Fresh login successful, session saved to {SESSION_FILE_PATH}.")
except Exception as e_initial_login:
print(f"Initial fresh login failed: {e_initial_login}")
if cl.user_id:
print(f"Successfully authenticated. User ID: {cl.user_id}")
else:
print("Authentication failed. Check credentials and previous error messages.")
Esta abordagem combinada tenta usar uma sessão salva primeiro e recorre a um novo login, se necessário, salvando a nova sessão para a próxima vez.
Interações Essenciais do Instagram com Instagrapi
Uma vez logado, você pode começar a interagir com o Instagram. Assuma que cl
é seu objeto Client
logado com sucesso para os exemplos abaixo.
Obtendo Informações do Usuário
Você pode buscar informações públicas sobre qualquer usuário do Instagram se souber o nome de usuário dele. Isso inclui seu ID de Usuário exclusivo (PK), nome completo, biografia, contagem de seguidores, etc.
target_user = "instagram"
try:
user_id_num = cl.user_id_from_username(target_user)
print(f"The unique User ID for @{target_user} is {user_id_num}.")
user_details = cl.user_info_by_username(target_user)
print(f"\nDetails for @{user_details.username}:")
print(f" Followers: {user_details.follower_count}")
print(f" Bio: {user_details.biography[:50]}...")
except Exception as e:
print(f"Could not fetch info for @{target_user}. Error: {e}")
Interagindo com Posts (Mídia)
Os posts do Instagram são referidos como "mídia" no instagrapi
. Para interagir com um post, você geralmente precisa de seu media_pk
(um ID numérico exclusivo para o post). Você pode obter este media_pk
a partir da URL do post. O exemplo a seguir mostra como obter detalhes do post. Interações como curtir ou comentar são muito sensíveis à automação; use tais recursos com moderação e sempre eticamente.
example_post_url = "https://www.instagram.com/p/C_q9Jg1NAn1/"
try:
media_pk_val = cl.media_pk_from_url(example_post_url)
print(f"The media_pk for the post is: {media_pk_val}")
media_details = cl.media_info(media_pk_val)
print(f"\nPost by @{media_details.user.username} has {media_details.like_count} likes.")
print(f"Caption snippet: {media_details.caption_text[:60]}...")
string_media_id_for_action = cl.media_id(media_pk_val)
print(f"String media_id for actions (like liking/commenting): {string_media_id_for_action}")
except Exception as e:
print(f"Error interacting with post {example_post_url}. Error: {e}")
Para curtir um post, você usaria cl.media_like(string_media_id_for_action)
. Para comentar, você usaria cl.media_comment(string_media_id_for_action, text="Seu comentário")
. Sempre inclua atrasos (time.sleep()
) após tais ações.
Fazendo Upload de Conteúdo
O instagrapi
permite que você faça upload de fotos, vídeos, álbuns e stories.
Fazendo Upload de uma Foto:
Você precisará do caminho para um arquivo de imagem JPG. O exemplo abaixo descreve a estrutura; você precisará fornecer um caminho válido para uma imagem.
from pathlib import Path
image_path_to_upload = Path("your_image.jpg")
photo_caption = "My first photo upload with Instagrapi! #Python #Automation"
if image_path_to_upload.exists() and image_path_to_upload.suffix.lower() == ".jpg":
try:
uploaded_photo = cl.photo_upload(image_path_to_upload, photo_caption)
print(f"Photo uploaded! View it at: https://www.instagram.com/p/{uploaded_photo.code}/")
except Exception as e:
print(f"Photo upload failed for {image_path_to_upload}. Error: {e}")
else:
print(f"Replace 'your_image.jpg' with a valid path to a JPG file.")
Fazendo Upload de um Story:
Stories geralmente usam uma proporção de 9:16. Você pode fazer upload de fotos ou vídeos. O código para fazer upload de um story de foto é semelhante a um post de foto regular, mas usa photo_upload_to_story
.
from instagrapi.types import StoryMention, StoryLink
story_image_path = Path("your_story_image.jpg")
if story_image_path.exists() and story_image_path.suffix.lower() == ".jpg":
try:
uploaded_story = cl.photo_upload_to_story(
story_image_path,
caption="My Instagrapi Story!"
)
print(f"Story uploaded successfully! PK: {uploaded_story.pk}")
except Exception as e:
print(f"Story upload failed for {story_image_path}. Error: {e}")
else:
print(f"Replace 'your_story_image.jpg' with a valid path to a 9:16 JPG file for stories.")
Você pode adicionar elementos interativos como mentions
(menções) e links
(links) preparando objetos StoryMention
ou StoryLink
e passando-os como parâmetros para photo_upload_to_story
.
Considerações Chave para uma Automação Suave
Ao automatizar ações no Instagram, algumas práticas são cruciais para a confiabilidade e para evitar problemas com sua conta.
Introduza Atrasos: Usuários humanos não realizam ações instantaneamente uma após a outra. Seu script também não deveria. Use time.sleep(random.uniform(min_seconds, max_seconds))
entre as ações para imitar padrões de interação naturais. O próprio instagrapi
tem uma configuração cl.delay_range = [min, max]
que adiciona alguns atrasos automáticos para certas operações.
Considere Proxies para Uso Intensivo: Se seu script fizer um grande número de requisições, ou se você gerenciar várias contas a partir do mesmo endereço IP, o Instagram pode limitar sua atividade. Usar um servidor proxy (cl.set_proxy("sua_string_proxy")
) pode ajudar a distribuir suas requisições e fazer parecer que elas vêm de locais diferentes.
Lide com Erros Potenciais: Problemas de rede podem ocorrer, a API do Instagram pode mudar, ou você pode atingir um limite de taxa (rate limit). Envolva suas chamadas instagrapi
em blocos try...except
para capturar esses erros de forma elegante. O instagrapi
possui exceções específicas como RateLimitError
, UserNotFound
, MediaNotFound
, etc., que você pode capturar para um tratamento de erro mais direcionado.
Use de Forma Responsável e Ética: A automação é poderosa. Evite spam, respeite a privacidade do usuário e não se envolva em atividades que violem os Termos de Serviço ou as Diretrizes da Comunidade do Instagram. O objetivo da automação deve ser aprimorar a interação genuína ou gerenciar sua presença de forma eficiente, não manipular ou incomodar.
Um Exemplo Simples de Automação: Curtindo Posts Recentes de uma Hashtag
Vamos criar um pequeno script que encontra posts recentes para uma hashtag específica e curte alguns deles. Isso demonstra a combinação de vários recursos do instagrapi
. Use este exemplo com extrema cautela e apenas em hashtags e em quantidades que estejam alinhadas com o uso responsável. Este código é ilustrativo e o uso agressivo pode prejudicar sua conta.
target_hashtag_for_liking = "pythonprogramming"
number_of_posts_to_like = 1
try:
print(f"Fetching recent media for #{target_hashtag_for_liking}...")
recent_hashtag_media = cl.hashtag_medias_recent(target_hashtag_for_liking, amount=number_of_posts_to_like * 2)
liked_count = 0
if recent_hashtag_media:
for media_item in recent_hashtag_media:
if liked_count >= number_of_posts_to_like:
break
if not media_item.has_liked:
print(f" Attempting to like post PK {media_item.pk} by @{media_item.user.username}...")
try:
media_id_str_to_like = cl.media_id(media_item.pk)
cl.media_like(media_id_str_to_like)
liked_count += 1
print(f" Successfully liked. Liked {liked_count}/{number_of_posts_to_like} posts so far.")
time.sleep(random.uniform(15, 25))
except Exception as e_like:
print(f" Could not like post PK {media_item.pk}. Error: {e_like}")
else:
print(f" Skipping already liked post PK {media_item.pk} by @{media_item.user.username}.")
print(f"\nFinished liking script for #{target_hashtag_for_liking}. Total liked in this run: {liked_count}")
else:
print(f"No recent media found for #{target_hashtag_for_liking}.")
except Exception as e_hashtag_script:
print(f"An error occurred in the hashtag liking script: {e_hashtag_script}")
Este exemplo é para demonstração. Automatizar curtidas, especialmente em grande número, pode ser facilmente sinalizado pelo Instagram. Sempre priorize o engajamento genuíno em vez de ações automatizadas em massa.
Avançando com Instagrapi
O instagrapi
oferece um conjunto profundo de ferramentas para interagir com o Instagram. Este guia arranhou a superfície, mostrando como configurar, fazer login e realizar algumas das ações mais comuns.
Para realmente dominar o instagrapi
, explore sua documentação oficial. O arquivo README.md
no repositório Instagrapi no GitHub é o melhor ponto de partida, geralmente linkando para guias mais detalhados e referências de API dentro de sua pasta docs
. Esses recursos cobrem muitos outros recursos, configurações avançadas e tipos específicos para vários objetos do Instagram.
Lembre-se que a plataforma do Instagram e sua API podem mudar, então o que funciona hoje pode precisar de ajustes amanhã. Manter-se atualizado com a biblioteca instagrapi
e as discussões da comunidade pode ajudá-lo a se adaptar. Boa automação, e faça isso com responsabilidade!
Quer uma plataforma integrada e completa para sua Equipe de Desenvolvedores trabalhar em conjunto com máxima produtividade?
Apidog atende a todas as suas demandas e substitui o Postman por um preço muito mais acessível!