Instagrapi ile Instagram Otomasyonu: Anlaşılır Rehber

Mark Ponomarev

Mark Ponomarev

5 June 2025

Instagrapi ile Instagram Otomasyonu: Anlaşılır Rehber

Instagram'da görevleri otomatikleştirmek, çevrimiçi varlığınızı yönetme şeklinizi önemli ölçüde kolaylaştırabilir. instagrapi, tam olarak bunu yapmanıza yardımcı olmak için tasarlanmış bir Python kütüphanesidir. Doğrudan Instagram'ın kendi arka uç sistemleriyle etkileşime girer—resmi mobil uygulamanın kullandığı sistemlerle aynıdır. Bu doğrudan iletişim, instagrapi'yi hızlı ve verimli hale getirir ve çalışması için bir web tarayıcısı gerektirmez.

Bu rehber, instagrapi ile başlamak için net bir yol sunmayı amaçlamaktadır. Nasıl kurulacağını, Instagram hesabınıza güvenli bir şekilde nasıl giriş yapılacağını, gönderi ve kullanıcılarla etkileşim gibi yaygın eylemlerin nasıl gerçekleştirileceğini, içerik yüklemeyi ve otomasyonunuzun güvenli ve etkili olmasını sağlamak için temel uygulamalara değineceğiz.

💡
Harika API Dokümantasyonu üreten harika bir API Test Aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'in yerini çok daha uygun bir fiyata alır!

button

Sisteminize Instagrapi'yi Yükleme

instagrapi kullanmadan önce onu yüklemeniz gerekir. Öncelikle bilgisayarınızda Python'un kurulu olduğundan emin olun; instagrapi en iyi Python sürüm 3.9 veya daha yenisiyle çalışır. Python sürümünüzü bir terminal (Komut İstemi, PowerShell veya macOS/Linux'ta Terminal) açıp python --version veya python3 --version yazarak kontrol edebilirsiniz.

Python hazır olduğunda, instagrapi'yi Python'ın paket yükleyicisi olan pip kullanarak yüklemek kolaydır. Terminalinizde aşağıdaki komutu çalıştırın:

pip install instagrapi

Python 3 kurulumunuz için özellikle python3 kullanıyorsanız, şuna ihtiyacınız olabilir:

python3 -m pip install instagrapi

Bu komut, instagrapi'yi ve bağlı olduğu diğer kütüphaneleri indirip kuracaktır. Daha düzenli proje yönetimi için, proje bağımlılıklarını izole eden Python sanal ortamlarını kullanmak genellikle önerilir. python3 -m venv your_project_name ile bir tane oluşturabilir, etkinleştirebilir ve ardından içinde pip install instagrapi komutunu çalıştırabilirsiniz.

Instagram Hesabınıza Bağlanma

Instagram'da eylemler gerçekleştirmek için betiğinizin (script) giriş yapması gerekir. instagrapi bu süreci yönetir. Python betiğinizdeki ilk adım, Client sınıfını içe aktarmak (import) ve ondan bir örnek (instance) oluşturmak olacaktır. Bu Client nesnesi, tüm etkileşimleriniz için ana aracınız olacaktır.

from instagrapi import Client
import os
import time
import random

cl = Client()

Şimdi giriş yapalım. Kullanıcı adınızı ve şifrenizi doğrudan betiğinize yazmamanız şiddetle tavsiye edilir. Ortam değişkenlerini kullanmak daha güvenli bir yöntemdir.

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}")

Hesabınızda güvenlik için harika olan İki Faktörlü Kimlik Doğrulama (2FA) etkinse, login yöntemi ek bir verification_code parametresi gerektirecektir. Bu kodu genellikle kimlik doğrulama uygulamanızdan veya bir SMS'ten alıp giriş çağrısı sırasında iletirsiniz: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE").

Sürekli olarak kullanıcı adı ve şifre ile giriş yapmak verimsiz olabilir ve Instagram'dan istenmeyen dikkat çekebilir. Daha akıllı bir yaklaşım, ilk başarılı kimlik doğrulamasından sonra giriş oturumunuzu kaydetmek ve ardından bu oturumu gelecekteki betik çalıştırmaları için yeniden yüklemektir.

Oturumları şu şekilde yönetebilirsiniz:

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.")

Bu birleşik yaklaşım, öncelikle kaydedilmiş bir oturumu kullanmayı dener ve gerekirse yeni bir giriş yapmaya geri döner, yeni oturumu bir sonraki sefer için kaydeder.

Instagrapi ile Temel Instagram Etkileşimleri

Giriş yaptıktan sonra Instagram ile etkileşime başlayabilirsiniz. Aşağıdaki örnekler için cl'nin başarıyla giriş yapmış Client nesneniz olduğunu varsayın.

Kullanıcı Bilgilerini Alma
Kullanıcı adını biliyorsanız herhangi bir Instagram kullanıcısı hakkında herkese açık bilgileri alabilirsiniz. Buna benzersiz Kullanıcı Kimliği (PK), tam ad, biyografi, takipçi sayıları vb. dahildir.

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}")

Gönderilerle (Medya) Etkileşim
Instagram gönderileri instagrapi'de "medya" olarak adlandırılır. Bir gönderiyle etkileşim kurmak için genellikle media_pk'sına (gönderinin benzersiz sayısal Kimliği) ihtiyacınız vardır. Bu media_pk'yı gönderinin URL'sinden alabilirsiniz. Aşağıdaki örnek, gönderi detaylarını nasıl alacağınızı göstermektedir. Beğenme veya yorum yapma gibi etkileşimler otomasyona karşı çok hassastır; bu özellikleri idareli ve her zaman etik bir şekilde kullanın.

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}")

Bir gönderiyi beğenmek için cl.media_like(string_media_id_for_action) kullanırsınız. Yorum yapmak için cl.media_comment(string_media_id_for_action, text="Yorumunuz") kullanırsınız. Bu tür eylemlerden sonra her zaman gecikmeler (time.sleep()) ekleyin.

İçerik Yükleme
instagrapi, fotoğraf, video, albüm ve hikaye yüklemenize olanak tanır.

Fotoğraf Yükleme:
Bir JPG resim dosyasının yoluna ihtiyacınız olacak. Aşağıdaki örnek yapıyı özetlemektedir; geçerli bir resim yolu sağlamanız gerekecektir.

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.")

Hikaye Yükleme:
Hikayeler genellikle 9:16 en boy oranını kullanır. Fotoğraf veya video yükleyebilirsiniz. Bir fotoğraf hikayesi yükleme kodu, normal bir fotoğraf gönderisiyle benzerdir ancak photo_upload_to_story kullanılır.

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.")

StoryMention veya StoryLink nesneleri hazırlayıp bunları photo_upload_to_story'ye parametre olarak ileterek mentions (bahsetmeler) ve links (bağlantılar) gibi etkileşimli öğeler ekleyebilirsiniz.

Sorunsuz Otomasyon İçin Temel Dikkat Edilmesi Gerekenler

Instagram eylemlerini otomatikleştirirken, güvenilirlik ve hesabınızla ilgili sorunları önlemek için birkaç uygulama çok önemlidir.

Gecikmeler Ekleyin: İnsan kullanıcılar eylemleri anında art arda gerçekleştirmez. Betiğiniz de yapmamalıdır. Doğal etkileşim kalıplarını taklit etmek için eylemler arasında time.sleep(random.uniform(min_seconds, max_seconds)) kullanın. instagrapi'nin kendisinde, belirli işlemler için otomatik gecikmeler ekleyen bir cl.delay_range = [min, max] ayarı bulunur.

Yoğun Kullanım İçin Proxy'leri Düşünün: Betiğiniz çok sayıda istekte bulunursa veya aynı IP adresinden birden fazla hesabı yönetiyorsanız, Instagram etkinliğinizi sınırlayabilir. Bir proxy sunucusu kullanmak (cl.set_proxy("your_proxy_string")), isteklerinizi dağıtmaya ve farklı konumlardan geliyormuş gibi görünmeye yardımcı olabilir.

Potansiyel Hataları Yönetin: Ağ sorunları oluşabilir, Instagram'ın API'si değişebilir veya bir hız sınırına ulaşabilirsiniz. Bu hataları zarifçe yakalamak için instagrapi çağrılarınızı try...except bloklarına sarın. instagrapi'nin RateLimitError, UserNotFound, MediaNotFound gibi belirli istisnaları vardır ve daha hedefli hata yönetimi için bunları yakalayabilirsiniz.

Sorumlu ve Etik Kullanın: Otomasyon güçlüdür. Spam yapmaktan kaçının, kullanıcı gizliliğine saygı gösterin ve Instagram'ın Hizmet Şartlarını veya Topluluk Kurallarını ihlal eden faaliyetlerde bulunmayın. Otomasyonun amacı, gerçek etkileşimi artırmak veya varlığınızı verimli bir şekilde yönetmek olmalıdır, manipüle etmek veya rahatsız etmek değil.

Basit Bir Otomasyon Örneği: Bir Etiket İçin Son Gönderileri Beğenme

Belirli bir etiket için son gönderileri bulan ve birkaçını beğenen küçük bir betik oluşturalım. Bu, çeşitli instagrapi özelliklerini birleştirmeyi gösterir. Bu örneği aşırı dikkatli kullanın ve yalnızca sorumlu kullanımla uyumlu etiketlerde ve miktarlarda uygulayın. Bu kod açıklayıcıdır ve agresif kullanım hesabınıza zarar verebilir.

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}")

Bu örnek gösterim amaçlıdır. Beğenileri otomatikleştirmek, özellikle büyük sayılarda, Instagram tarafından kolayca işaretlenebilir. Her zaman toplu otomatik eylemler yerine gerçek etkileşime öncelik verin.

Instagrapi ile İlerlemek

instagrapi, Instagram ile etkileşim kurmak için kapsamlı bir araç seti sunar. Bu rehber, kurulumu, giriş yapmayı ve en yaygın eylemlerden bazılarını gerçekleştirmeyi göstererek konunun sadece yüzeyini çizdi.

instagrapi'ye gerçekten hakim olmak için resmi dokümantasyonunu keşfedin. Instagrapi GitHub deposundaki README.md dosyası en iyi başlangıç noktasıdır ve genellikle docs klasöründeki daha detaylı rehberlere ve API referanslarına bağlantı verir. Bu kaynaklar, çeşitli Instagram nesneleri için çok daha fazla özellik, gelişmiş ayarlar ve belirli türleri kapsar.

Instagram platformunun ve API'sinin değişebileceğini unutmayın, bu nedenle bugün çalışan şey yarın ayarlamalar gerektirebilir. instagrapi kütüphanesi ve topluluk tartışmalarıyla güncel kalmak, uyum sağlamanıza yardımcı olabilir. Mutlu otomasyonlar dilerim ve bunu sorumlu bir şekilde yapın!

💡
Harika API Dokümantasyonu üreten harika bir API Test Aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'in yerini çok daha uygun bir fiyata alır!

button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin