Tự Động Hóa Instagram với Instagrapi: Hướng Dẫn Chi Tiết

Mark Ponomarev

Mark Ponomarev

5 tháng 6 2025

Tự Động Hóa Instagram với Instagrapi: Hướng Dẫn Chi Tiết

Tự động hóa các tác vụ trên Instagram có thể đơn giản hóa đáng kể cách bạn quản lý sự hiện diện trực tuyến của mình. instagrapi là một thư viện Python được thiết kế để giúp bạn làm điều đó. Nó tương tác trực tiếp với các hệ thống backend của Instagram—chính là những hệ thống mà ứng dụng di động chính thức sử dụng. Giao tiếp trực tiếp này giúp instagrapi nhanh chóng và hiệu quả, và nó không yêu cầu trình duyệt web để hoạt động.

Hướng dẫn này nhằm cung cấp một lộ trình rõ ràng để bắt đầu với instagrapi. Chúng ta sẽ đề cập đến cách cài đặt nó, đăng nhập an toàn vào tài khoản Instagram của bạn, thực hiện các hành động phổ biến như tương tác với bài đăng và người dùng, tải nội dung lên, và chạm đến các thực hành thiết yếu để đảm bảo tự động hóa của bạn an toàn và hiệu quả.

💡
Bạn muốn một công cụ kiểm thử API tuyệt vời tạo ra Tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, Tất cả trong Một cho Nhóm Phát triển của bạn làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng mọi nhu cầu của bạn, và thay thế Postman với mức giá phải chăng hơn nhiều!
button

Cài đặt Instagrapi vào Hệ thống của bạn

Trước khi bạn có thể sử dụng instagrapi, bạn cần cài đặt nó. Đầu tiên, đảm bảo bạn đã cài đặt Python trên máy tính; instagrapi hoạt động tốt nhất với Python phiên bản 3.9 trở lên. Bạn có thể kiểm tra phiên bản Python của mình bằng cách mở terminal (Command Prompt, PowerShell, hoặc Terminal trên macOS/Linux) và gõ python --version hoặc python3 --version.

Khi Python đã sẵn sàng, việc cài đặt instagrapi rất đơn giản bằng cách sử dụng pip, trình cài đặt gói của Python. Trong terminal của bạn, thực hiện lệnh sau:

pip install instagrapi

Nếu bạn sử dụng python3 đặc biệt cho cài đặt Python 3 của mình, bạn có thể cần:

python3 -m pip install instagrapi

Lệnh này sẽ tải xuống và cài đặt instagrapi cùng với bất kỳ thư viện nào khác mà nó phụ thuộc. Để quản lý dự án gọn gàng hơn, thường nên sử dụng môi trường ảo Python, giúp cô lập các dependency của dự án. Bạn có thể tạo một môi trường bằng lệnh python3 -m venv your_project_name, kích hoạt nó, và sau đó chạy lệnh pip install instagrapi bên trong đó.

Kết nối với Tài khoản Instagram của bạn

Để thực hiện các hành động trên Instagram, script của bạn cần đăng nhập. instagrapi xử lý quá trình này. Bước đầu tiên trong script Python của bạn sẽ là nhập lớp Client và tạo một thể hiện (instance) của nó. Đối tượng Client này sẽ là công cụ chính của bạn cho mọi tương tác.

from instagrapi import Client
import os
import time
import random

cl = Client()

Bây giờ, hãy đăng nhập. Rất nên tránh việc mã hóa cứng tên người dùng và mật khẩu trực tiếp trong script của bạn. Sử dụng biến môi trường là một phương pháp an toàn hơn.

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

Nếu tài khoản của bạn đã bật Xác thực hai yếu tố (2FA), điều này rất tốt cho bảo mật, phương thức login sẽ yêu cầu thêm tham số verification_code. Bạn thường nhận mã này từ ứng dụng xác thực hoặc tin nhắn SMS và truyền nó trong lệnh gọi đăng nhập: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE").

Việc liên tục đăng nhập bằng tên người dùng và mật khẩu có thể không hiệu quả và có thể thu hút sự chú ý không mong muốn từ Instagram. Một cách tiếp cận thông minh hơn là lưu phiên đăng nhập của bạn sau lần xác thực thành công đầu tiên và sau đó tải lại phiên này cho các lần chạy script sau.

Dưới đây là cách bạn có thể quản lý phiên:

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

Cách tiếp cận kết hợp này cố gắng sử dụng phiên đã lưu trước tiên và quay lại đăng nhập mới nếu cần, lưu phiên mới cho lần sau.

Tương tác cốt lõi với Instagram bằng Instagrapi

Sau khi đăng nhập, bạn có thể bắt đầu tương tác với Instagram. Giả sử cl là đối tượng Client đã đăng nhập thành công của bạn cho các ví dụ dưới đây.

Lấy thông tin người dùng
Bạn có thể lấy thông tin công khai về bất kỳ người dùng Instagram nào nếu bạn biết tên người dùng của họ. Điều này bao gồm ID người dùng duy nhất (PK), tên đầy đủ, tiểu sử, số lượng người theo dõi, v.v.

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

Tương tác với Bài đăng (Media)
Các bài đăng trên Instagram được gọi là "media" trong instagrapi. Để tương tác với một bài đăng, bạn thường cần media_pk của nó (một ID số duy nhất cho bài đăng). Bạn có thể lấy media_pk này từ URL của bài đăng. Ví dụ sau đây cho thấy cách lấy chi tiết bài đăng. Các tương tác như thích hoặc bình luận rất nhạy cảm với tự động hóa; hãy sử dụng các tính năng này một cách tiết kiệm và luôn có đạo đức.

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

Để thích một bài đăng, bạn sẽ sử dụng cl.media_like(string_media_id_for_action). Để bình luận, bạn sẽ sử dụng cl.media_comment(string_media_id_for_action, text="Your comment"). Luôn bao gồm độ trễ (`time.sleep()`) sau các hành động như vậy.

Tải nội dung lên
instagrapi cho phép bạn tải lên ảnh, video, album và story.

Tải lên Ảnh:
Bạn sẽ cần đường dẫn đến một tệp ảnh JPG. Ví dụ dưới đây phác thảo cấu trúc; bạn sẽ cần cung cấp một đường dẫn hợp lệ đến một ảnh.

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

Tải lên Story:
Story thường sử dụng tỷ lệ khung hình 9:16. Bạn có thể tải lên ảnh hoặc video. Mã để tải lên story ảnh tương tự như bài đăng ảnh thông thường nhưng sử dụng 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.")

Bạn có thể thêm các yếu tố tương tác như mentions (đề cập) và links (liên kết) bằng cách chuẩn bị các đối tượng StoryMention hoặc StoryLink và truyền chúng làm tham số cho photo_upload_to_story.

Những cân nhắc chính để tự động hóa mượt mà

Khi tự động hóa các hành động trên Instagram, một vài thực hành là rất quan trọng để đảm bảo độ tin cậy và tránh các vấn đề với tài khoản của bạn.

Thêm Độ trễ: Người dùng thật không thực hiện các hành động ngay lập tức liên tiếp nhau. Script của bạn cũng không nên làm vậy. Sử dụng time.sleep(random.uniform(min_seconds, max_seconds)) giữa các hành động để mô phỏng các mẫu tương tác tự nhiên. Bản thân instagrapi có cài đặt cl.delay_range = [min, max] để thêm một số độ trễ tự động cho các hoạt động nhất định.

Cân nhắc Proxy cho việc sử dụng Chuyên sâu: Nếu script của bạn thực hiện số lượng lớn yêu cầu, hoặc nếu bạn quản lý nhiều tài khoản từ cùng một địa chỉ IP, Instagram có thể giới hạn hoạt động của bạn. Sử dụng máy chủ proxy (`cl.set_proxy("your_proxy_string")`) có thể giúp phân tán các yêu cầu của bạn và làm cho chúng trông như đến từ các vị trí khác nhau.

Xử lý các Lỗi Tiềm ẩn: Các vấn đề mạng có thể xảy ra, API của Instagram có thể thay đổi, hoặc bạn có thể đạt giới hạn tốc độ. Hãy bao bọc các lệnh gọi `instagrapi` của bạn trong các khối `try...except` để bắt các lỗi này một cách nhẹ nhàng. `instagrapi` có các ngoại lệ cụ thể như RateLimitError, UserNotFound, MediaNotFound, v.v., mà bạn có thể bắt để xử lý lỗi có mục tiêu hơn.

Sử dụng có Trách nhiệm và Đạo đức: Tự động hóa rất mạnh mẽ. Tránh gửi spam, tôn trọng quyền riêng tư của người dùng và không tham gia vào các hoạt động vi phạm Điều khoản Dịch vụ hoặc Nguyên tắc Cộng đồng của Instagram. Mục tiêu của tự động hóa nên là tăng cường tương tác chân thực hoặc quản lý sự hiện diện của bạn một cách hiệu quả, chứ không phải thao túng hoặc gây khó chịu.

Một Ví dụ Tự động hóa Đơn giản: Thích các Bài đăng Gần đây cho một Hashtag

Hãy tạo một script nhỏ tìm các bài đăng gần đây cho một hashtag cụ thể và thích một vài bài. Điều này minh họa việc kết hợp nhiều tính năng của instagrapi. Sử dụng ví dụ này hết sức thận trọng và chỉ trên các hashtag cũng như số lượng phù hợp với việc sử dụng có trách nhiệm. Mã này chỉ mang tính minh họa và việc sử dụng quá mức có thể gây hại cho tài khoản của bạn.

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

Ví dụ này chỉ để minh họa. Tự động hóa việc thích, đặc biệt với số lượng lớn, có thể dễ dàng bị Instagram gắn cờ. Luôn ưu tiên tương tác chân thực hơn là các hành động tự động hàng loạt.

Tiếp tục với Instagrapi

instagrapi cung cấp một bộ công cụ sâu rộng để tương tác với Instagram. Hướng dẫn này mới chỉ chạm đến bề mặt, chỉ cho bạn cách thiết lập, đăng nhập và thực hiện một số hành động phổ biến nhất.

Để thực sự thành thạo instagrapi, hãy khám phá tài liệu chính thức của nó. Tệp README.md trên kho lưu trữ GitHub của Instagrapi là điểm khởi đầu tốt nhất, thường liên kết đến các hướng dẫn chi tiết hơn và tham chiếu API trong thư mục docs của nó. Các tài nguyên này bao gồm nhiều tính năng hơn, cài đặt nâng cao và các loại cụ thể cho các đối tượng Instagram khác nhau.

Hãy nhớ rằng nền tảng Instagram và API của nó có thể thay đổi, vì vậy những gì hoạt động hôm nay có thể cần điều chỉnh vào ngày mai. Việc cập nhật thư viện instagrapi và các cuộc thảo luận cộng đồng có thể giúp bạn thích ứng. Chúc bạn tự động hóa thành công và có trách nhiệm!

💡
Bạn muốn một công cụ kiểm thử API tuyệt vời tạo ra Tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, Tất cả trong Một cho Nhóm Phát triển của bạn làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng mọi nhu cầu của bạn, và thay thế Postman với mức giá phải chăng hơn nhiều!
button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API