Otomatisasi Instagram dengan Instagrapi: Panduan Lengkap

Mark Ponomarev

Mark Ponomarev

5 June 2025

Otomatisasi Instagram dengan Instagrapi: Panduan Lengkap

Mengotomatiskan tugas di Instagram dapat secara signifikan menyederhanakan cara Anda mengelola kehadiran online Anda. instagrapi adalah pustaka Python yang dirancang untuk membantu Anda melakukan hal tersebut. Pustaka ini berinteraksi langsung dengan sistem backend Instagram sendiri—sistem yang sama yang digunakan oleh aplikasi seluler resminya. Komunikasi langsung ini membuat instagrapi cepat dan efisien, dan tidak memerlukan browser web untuk beroperasi.

Panduan ini bertujuan untuk memberikan jalur yang jelas untuk memulai dengan instagrapi. Kami akan membahas cara menginstalnya, masuk ke akun Instagram Anda dengan aman, melakukan tindakan umum seperti berinteraksi dengan postingan dan pengguna, mengunggah konten, dan menyentuh praktik-praktik penting untuk memastikan otomatisasi Anda aman dan efektif.

💡
Ingin alat Pengujian API yang hebat yang menghasilkan Dokumentasi API yang indah?

Ingin platform Terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum?

Apidog memenuhi semua kebutuhan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
button

Mendapatkan Instagrapi ke Sistem Anda

Sebelum Anda dapat menggunakan instagrapi, Anda perlu menginstalnya. Pertama, pastikan Anda telah menginstal Python di komputer Anda; instagrapi bekerja paling baik dengan Python versi 3.9 atau yang lebih baru. Anda dapat memeriksa versi Python Anda dengan membuka terminal (Command Prompt, PowerShell, atau Terminal di macOS/Linux) dan mengetik python --version atau python3 --version.

Setelah Python siap, menginstal instagrapi sangat mudah menggunakan pip, penginstal paket Python. Di terminal Anda, jalankan perintah berikut:

pip install instagrapi

Jika Anda menggunakan python3 secara khusus untuk instalasi Python 3 Anda, Anda mungkin perlu:

python3 -m pip install instagrapi

Perintah ini akan mengunduh dan menginstal instagrapi serta pustaka lain yang bergantung padanya. Untuk manajemen proyek yang lebih rapi, sering kali disarankan untuk menggunakan lingkungan virtual Python, yang mengisolasi dependensi proyek. Anda dapat membuatnya dengan python3 -m venv your_project_name, mengaktifkannya, lalu menjalankan perintah pip install instagrapi di dalamnya.

Menghubungkan ke Akun Instagram Anda

Untuk melakukan tindakan di Instagram, skrip Anda perlu masuk. instagrapi menangani proses ini. Langkah pertama dalam skrip Python Anda adalah mengimpor kelas Client dan membuat instansinya. Objek Client ini akan menjadi alat utama Anda untuk semua interaksi.

from instagrapi import Client
import os
import time
import random

cl = Client()

Sekarang, mari kita masuk. Sangat disarankan untuk tidak menuliskan nama pengguna dan kata sandi Anda secara langsung di skrip Anda. Menggunakan variabel lingkungan adalah metode yang lebih aman.

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

Jika akun Anda mengaktifkan Otentikasi Dua Faktor (2FA), yang bagus untuk keamanan, metode login akan memerlukan parameter verification_code tambahan. Anda biasanya akan mendapatkan kode ini dari aplikasi otentikator atau SMS dan meneruskannya selama panggilan login: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE").

Terus-menerus masuk dengan nama pengguna dan kata sandi bisa tidak efisien dan mungkin menarik perhatian yang tidak diinginkan dari Instagram. Pendekatan yang lebih cerdas adalah menyimpan sesi login Anda setelah otentikasi pertama yang berhasil dan kemudian memuat ulang sesi ini untuk menjalankan skrip di masa mendatang.

Berikut cara Anda dapat mengelola sesi:

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

Pendekatan gabungan ini mencoba menggunakan sesi yang tersimpan terlebih dahulu dan kembali ke login baru jika diperlukan, menyimpan sesi baru untuk lain kali.

Interaksi Inti Instagram dengan Instagrapi

Setelah masuk, Anda dapat mulai berinteraksi dengan Instagram. Asumsikan cl adalah objek Client Anda yang berhasil masuk untuk contoh di bawah ini.

Mendapatkan Informasi Pengguna
Anda dapat mengambil informasi publik tentang pengguna Instagram mana pun jika Anda mengetahui nama penggunanya. Ini termasuk ID Pengguna unik mereka (PK), nama lengkap, bio, jumlah pengikut, dll.

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

Berinteraksi dengan Postingan (Media)
Postingan Instagram disebut sebagai "media" dalam instagrapi. Untuk berinteraksi dengan postingan, Anda biasanya memerlukan media_pk-nya (ID numerik unik untuk postingan tersebut). Anda bisa mendapatkan media_pk ini dari URL postingan. Contoh berikut menunjukkan cara mendapatkan detail postingan. Interaksi seperti menyukai atau berkomentar sangat sensitif terhadap otomatisasi; gunakan fitur tersebut secukupnya dan selalu secara etis.

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

Untuk menyukai postingan, Anda akan menggunakan cl.media_like(string_media_id_for_action). Untuk berkomentar, Anda akan menggunakan cl.media_comment(string_media_id_for_action, text="Your comment"). Selalu sertakan jeda (time.sleep()) setelah tindakan tersebut.

Mengunggah Konten
instagrapi memungkinkan Anda mengunggah foto, video, album, dan cerita.

Mengunggah Foto:
Anda akan memerlukan jalur ke file gambar JPG. Contoh di bawah ini menguraikan strukturnya; Anda perlu menyediakan jalur yang valid ke gambar.

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

Mengunggah Cerita:
Cerita sering menggunakan rasio aspek 9:16. Anda dapat mengunggah foto atau video. Kode untuk mengunggah cerita foto mirip dengan postingan foto biasa tetapi menggunakan 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.")

Anda dapat menambahkan elemen interaktif seperti mentions dan links dengan menyiapkan objek StoryMention atau StoryLink dan meneruskannya sebagai parameter ke photo_upload_to_story.

Pertimbangan Utama untuk Otomatisasi yang Lancar

Saat mengotomatiskan tindakan Instagram, beberapa praktik sangat penting untuk keandalan dan untuk menghindari masalah dengan akun Anda.

Sertakan Jeda: Pengguna manusia tidak melakukan tindakan secara instan satu demi satu. Skrip Anda juga tidak boleh. Gunakan time.sleep(random.uniform(min_seconds, max_seconds)) di antara tindakan untuk meniru pola interaksi alami. instagrapi sendiri memiliki pengaturan cl.delay_range = [min, max] yang menambahkan beberapa jeda otomatis untuk operasi tertentu.

Pertimbangkan Proksi untuk Penggunaan Intensif: Jika skrip Anda membuat permintaan dalam jumlah besar, atau jika Anda mengelola beberapa akun dari alamat IP yang sama, Instagram mungkin membatasi aktivitas Anda. Menggunakan server proksi (cl.set_proxy("your_proxy_string")) dapat membantu mendistribusikan permintaan Anda dan tampak seolah-olah berasal dari lokasi yang berbeda.

Tangani Potensi Kesalahan: Masalah jaringan dapat terjadi, API Instagram dapat berubah, atau Anda mungkin mencapai batas laju (rate limit). Bungkus panggilan instagrapi Anda dalam blok try...except untuk menangkap kesalahan ini dengan baik. instagrapi memiliki pengecualian khusus seperti RateLimitError, UserNotFound, MediaNotFound, dll., yang dapat Anda tangkap untuk penanganan kesalahan yang lebih bertarget.

Gunakan Secara Bertanggung Jawab dan Etis: Otomatisasi sangat kuat. Hindari spamming, hormati privasi pengguna, dan jangan terlibat dalam aktivitas yang melanggar Ketentuan Layanan atau Pedoman Komunitas Instagram. Tujuan otomatisasi seharusnya untuk meningkatkan interaksi yang tulus atau mengelola kehadiran Anda secara efisien, bukan untuk memanipulasi atau mengganggu.

Contoh Otomatisasi Sederhana: Menyukai Postingan Terbaru untuk Hashtag

Mari kita buat skrip kecil yang menemukan postingan terbaru untuk hashtag tertentu dan menyukai beberapa di antaranya. Ini mendemonstrasikan penggabungan beberapa fitur instagrapi. Gunakan contoh ini dengan sangat hati-hati dan hanya pada hashtag dan dalam jumlah yang sesuai dengan penggunaan yang bertanggung jawab. Kode ini bersifat ilustratif dan penggunaan yang agresif dapat merusak akun Anda.

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

Contoh ini hanya untuk demonstrasi. Mengotomatiskan suka, terutama dalam jumlah besar, dapat dengan mudah ditandai oleh Instagram. Selalu prioritaskan keterlibatan yang tulus daripada tindakan otomatis massal.

Melangkah Maju dengan Instagrapi

instagrapi menawarkan serangkaian alat yang mendalam untuk berinteraksi dengan Instagram. Panduan ini baru menyentuh permukaan, menunjukkan cara mengatur, masuk, dan melakukan beberapa tindakan paling umum.

Untuk benar-benar menguasai instagrapi, jelajahi dokumentasi resminya. File README.md di repositori GitHub Instagrapi adalah titik awal terbaik, biasanya menghubungkan ke panduan yang lebih rinci dan referensi API dalam folder docs-nya. Sumber daya ini mencakup lebih banyak fitur, pengaturan lanjutan, dan tipe spesifik untuk berbagai objek Instagram.

Ingatlah bahwa platform Instagram dan API-nya dapat berubah, jadi apa yang berfungsi hari ini mungkin memerlukan penyesuaian besok. Tetap terbarui dengan pustaka instagrapi dan diskusi komunitas dapat membantu Anda beradaptasi. Selamat mengotomatiskan, dan lakukanlah secara bertanggung jawab!

💡
Ingin alat Pengujian API yang hebat yang menghasilkan Dokumentasi API yang indah?

Ingin platform Terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum?

Apidog memenuhi semua kebutuhan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
button

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.