ตั้งค่าระบบอัตโนมัติ Instagram ด้วย Instagrapi: คู่มือฉบับเข้าใจง่าย

Mark Ponomarev

Mark Ponomarev

5 June 2025

ตั้งค่าระบบอัตโนมัติ Instagram ด้วย Instagrapi: คู่มือฉบับเข้าใจง่าย

การทำงานแบบอัตโนมัติบน Instagram สามารถปรับปรุงวิธีการจัดการสถานะออนไลน์ของคุณได้อย่างมาก instagrapi คือไลบรารี Python ที่ออกแบบมาเพื่อช่วยให้คุณทำสิ่งนั้นได้โดยตรง มันจะโต้ตอบโดยตรงกับระบบแบ็กเอนด์ของ Instagram เอง ซึ่งเป็นระบบเดียวกับที่แอปพลิเคชันมือถืออย่างเป็นทางการใช้ การสื่อสารโดยตรงนี้ทำให้ instagrapi รวดเร็วและมีประสิทธิภาพ และไม่จำเป็นต้องใช้เว็บเบราว์เซอร์ในการทำงาน

คู่มือนี้มีจุดประสงค์เพื่อให้เส้นทางที่ชัดเจนในการเริ่มต้นใช้งาน instagrapi เราจะกล่าวถึงวิธีการติดตั้ง การเข้าสู่ระบบบัญชี Instagram ของคุณอย่างปลอดภัย การดำเนินการทั่วไป เช่น การโต้ตอบกับโพสต์และผู้ใช้ การอัปโหลดเนื้อหา และจะกล่าวถึงแนวทางปฏิบัติที่จำเป็นเพื่อให้แน่ใจว่าการทำงานแบบอัตโนมัติของคุณปลอดภัยและมีประสิทธิภาพ

💡
ต้องการเครื่องมือทดสอบ API ที่ยอดเยี่ยมซึ่งสร้าง เอกสารประกอบ API ที่สวยงาม หรือไม่?

ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณเพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด หรือไม่?

Apidog ตอบสนองทุกความต้องการของคุณ และ แทนที่ Postman ในราคาที่เข้าถึงได้ง่ายกว่ามาก!
button

การติดตั้ง Instagrapi บนระบบของคุณ

ก่อนที่คุณจะสามารถใช้ instagrapi ได้ คุณต้องติดตั้งมันก่อน ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Python บนคอมพิวเตอร์ของคุณแล้ว instagrapi ทำงานได้ดีที่สุดกับ Python เวอร์ชัน 3.9 หรือใหม่กว่า คุณสามารถตรวจสอบเวอร์ชัน Python ของคุณได้โดยเปิดเทอร์มินัล (Command Prompt, PowerShell หรือ Terminal บน macOS/Linux) และพิมพ์ python --version หรือ python3 --version

เมื่อ Python พร้อมแล้ว การติดตั้ง instagrapi ก็ทำได้ง่ายโดยใช้ pip ซึ่งเป็นตัวติดตั้งแพ็กเกจของ Python ในเทอร์มินัลของคุณ ให้รันคำสั่งต่อไปนี้:

pip install instagrapi

หากคุณใช้ python3 โดยเฉพาะสำหรับการติดตั้ง Python 3 ของคุณ คุณอาจต้องใช้:

python3 -m pip install instagrapi

คำสั่งนี้จะดาวน์โหลดและติดตั้ง instagrapi และไลบรารีอื่น ๆ ที่เกี่ยวข้อง เพื่อการจัดการโปรเจกต์ที่เรียบร้อยขึ้น มักแนะนำให้ใช้สภาพแวดล้อมเสมือน (virtual environments) ของ Python ซึ่งจะแยกส่วนการพึ่งพาของโปรเจกต์ คุณสามารถสร้างได้ด้วย python3 -m venv your_project_name เปิดใช้งาน แล้วรันคำสั่ง pip install instagrapi ภายในนั้น

การเชื่อมต่อกับบัญชี Instagram ของคุณ

หากต้องการดำเนินการบน Instagram สคริปต์ของคุณจำเป็นต้องเข้าสู่ระบบ instagrapi จะจัดการกระบวนการนี้ ขั้นตอนแรกในสคริปต์ Python ของคุณคือการนำเข้าคลาส Client และสร้างอินสแตนซ์ของมัน อ็อบเจกต์ Client นี้จะเป็นเครื่องมือหลักของคุณสำหรับการโต้ตอบทั้งหมด

from instagrapi import Client
import os
import time
import random

cl = Client()

ตอนนี้ มาเข้าสู่ระบบกัน เป็นสิ่งสำคัญอย่างยิ่งที่จะไม่ใส่ชื่อผู้ใช้และรหัสผ่านของคุณลงในสคริปต์โดยตรง การใช้ตัวแปรสภาพแวดล้อมเป็นวิธีการที่ปลอดภัยกว่า

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

หากบัญชีของคุณเปิดใช้งานการยืนยันตัวตนแบบสองขั้นตอน (2FA) ซึ่งดีมากสำหรับความปลอดภัย เมธอด login จะต้องมีพารามิเตอร์ verification_code เพิ่มเติม โดยทั่วไปคุณจะได้รับรหัสนี้จากแอปยืนยันตัวตนของคุณหรือทาง SMS และส่งรหัสนี้ระหว่างการเรียกใช้ login: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE")

การเข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่านตลอดเวลาอาจไม่มีประสิทธิภาพและอาจดึงดูดความสนใจที่ไม่พึงประสงค์จาก Instagram วิธีที่ฉลาดกว่าคือการบันทึกเซสชันการเข้าสู่ระบบของคุณหลังจากการยืนยันตัวตนครั้งแรกสำเร็จ แล้วโหลดเซสชันนี้ซ้ำสำหรับการรันสคริปต์ในอนาคต

นี่คือวิธีการจัดการเซสชัน:

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

แนวทางแบบผสมนี้จะพยายามใช้เซสชันที่บันทึกไว้ก่อน และจะกลับไปใช้การเข้าสู่ระบบใหม่หากจำเป็น โดยจะบันทึกเซสชันใหม่ไว้สำหรับครั้งต่อไป

การโต้ตอบหลักกับ Instagram ด้วย Instagrapi

เมื่อเข้าสู่ระบบแล้ว คุณสามารถเริ่มโต้ตอบกับ Instagram ได้ สมมติว่า cl คืออ็อบเจกต์ Client ที่เข้าสู่ระบบสำเร็จแล้วสำหรับตัวอย่างด้านล่าง

การรับข้อมูลผู้ใช้
คุณสามารถดึงข้อมูลสาธารณะเกี่ยวกับผู้ใช้ Instagram คนใดก็ได้ หากคุณทราบชื่อผู้ใช้ของพวกเขา ซึ่งรวมถึง User ID (PK) ที่ไม่ซ้ำกัน ชื่อเต็ม ประวัติ จำนวนผู้ติดตาม ฯลฯ

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

การโต้ตอบกับโพสต์ (สื่อ)
โพสต์ Instagram ถูกเรียกว่า "สื่อ" ใน instagrapi หากต้องการโต้ตอบกับโพสต์ คุณมักจะต้องใช้ media_pk (ID ตัวเลขที่ไม่ซ้ำกันสำหรับโพสต์) คุณสามารถรับ media_pk นี้ได้จาก URL ของโพสต์ ตัวอย่างต่อไปนี้แสดงวิธีการรับรายละเอียดโพสต์ การโต้ตอบเช่น การกดไลค์หรือแสดงความคิดเห็นมีความอ่อนไหวต่อการทำงานแบบอัตโนมัติมาก ใช้คุณสมบัติดังกล่าวอย่างจำกัดและต้องมีจริยธรรมเสมอ

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

หากต้องการกดไลค์โพสต์ คุณจะใช้ cl.media_like(string_media_id_for_action) หากต้องการแสดงความคิดเห็น คุณจะใช้ cl.media_comment(string_media_id_for_action, text="Your comment") ควรใส่การหน่วงเวลา (time.sleep()) หลังจากการดำเนินการดังกล่าวเสมอ

การอัปโหลดเนื้อหา
instagrapi ช่วยให้คุณสามารถอัปโหลดรูปภาพ วิดีโอ อัลบั้ม และสตอรี่ได้

การอัปโหลดรูปภาพ:
คุณจะต้องมีพาธไปยังไฟล์รูปภาพ JPG ตัวอย่างด้านล่างแสดงโครงสร้าง คุณจะต้องระบุพาธที่ถูกต้องไปยังรูปภาพ

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

การอัปโหลดสตอรี่:
สตอรี่มักใช้อัตราส่วนภาพ 9:16 คุณสามารถอัปโหลดรูปภาพหรือวิดีโอได้ โค้ดสำหรับการอัปโหลดสตอรี่รูปภาพคล้ายกับการโพสต์รูปภาพปกติ แต่ใช้ 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.")

คุณสามารถเพิ่มองค์ประกอบแบบโต้ตอบได้ เช่น mentions และ links โดยการเตรียมอ็อบเจกต์ StoryMention หรือ StoryLink แล้วส่งเป็นพารามิเตอร์ไปยัง photo_upload_to_story

ข้อควรพิจารณาที่สำคัญสำหรับการทำงานแบบอัตโนมัติที่ราบรื่น

เมื่อทำการทำงานแบบอัตโนมัติบน Instagram มีแนวทางปฏิบัติบางอย่างที่สำคัญอย่างยิ่งสำหรับความน่าเชื่อถือและเพื่อหลีกเลี่ยงปัญหาเกี่ยวกับบัญชีของคุณ

ใส่การหน่วงเวลา: ผู้ใช้ที่เป็นมนุษย์ไม่ได้ดำเนินการทันทีทีละอย่าง สคริปต์ของคุณก็ไม่ควรทำเช่นกัน ใช้ time.sleep(random.uniform(min_seconds, max_seconds)) ระหว่างการดำเนินการเพื่อเลียนแบบรูปแบบการโต้ตอบตามธรรมชาติ instagrapi เองก็มีการตั้งค่า cl.delay_range = [min, max] ที่เพิ่มการหน่วงเวลาอัตโนมัติสำหรับการดำเนินการบางอย่าง

พิจารณาใช้พร็อกซีสำหรับการใช้งานหนัก: หากสคริปต์ของคุณส่งคำขอจำนวนมาก หรือหากคุณจัดการหลายบัญชีจากที่อยู่ IP เดียวกัน Instagram อาจจำกัดกิจกรรมของคุณ การใช้เซิร์ฟเวอร์พร็อกซี (cl.set_proxy("your_proxy_string")) สามารถช่วยกระจายคำขอของคุณและทำให้ดูเหมือนว่ามาจากตำแหน่งที่แตกต่างกัน

จัดการข้อผิดพลาดที่อาจเกิดขึ้น: ปัญหาเครือข่ายอาจเกิดขึ้น API ของ Instagram อาจเปลี่ยนแปลง หรือคุณอาจถึงขีดจำกัดอัตรา (rate limit) ห่อการเรียกใช้ instagrapi ของคุณไว้ในบล็อก try...except เพื่อจับข้อผิดพลาดเหล่านี้อย่างนุ่มนวล instagrapi มีข้อยกเว้นเฉพาะ เช่น RateLimitError, UserNotFound, MediaNotFound ฯลฯ ซึ่งคุณสามารถจับเพื่อจัดการข้อผิดพลาดได้อย่างเจาะจงมากขึ้น

ใช้ด้วยความรับผิดชอบและมีจริยธรรม: การทำงานแบบอัตโนมัตินั้นมีพลัง หลีกเลี่ยงการสแปม เคารพความเป็นส่วนตัวของผู้ใช้ และอย่ามีส่วนร่วมในกิจกรรมที่ละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของชุมชน Instagram เป้าหมายของการทำงานแบบอัตโนมัติควรเป็นการเสริมสร้างการโต้ตอบที่แท้จริงหรือจัดการสถานะของคุณอย่างมีประสิทธิภาพ ไม่ใช่การบิดเบือนหรือสร้างความรำคาญ

ตัวอย่างการทำงานแบบอัตโนมัติอย่างง่าย: การกดไลค์โพสต์ล่าสุดสำหรับแฮชแท็ก

มาสร้างสคริปต์เล็กๆ ที่ค้นหาโพสต์ล่าสุดสำหรับแฮชแท็กที่ระบุ และกดไลค์บางส่วน นี่เป็นการสาธิตการรวมคุณสมบัติหลายอย่างของ instagrapi **ใช้ตัวอย่างนี้ด้วยความระมัดระวังอย่างยิ่ง และใช้เฉพาะกับแฮชแท็กและในปริมาณที่สอดคล้องกับการใช้งานอย่างรับผิดชอบ โค้ดนี้เป็นเพียงตัวอย่าง และการใช้งานที่รุนแรงอาจเป็นอันตรายต่อบัญชีของคุณ**

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

ตัวอย่างนี้มีไว้เพื่อการสาธิต การทำงานแบบอัตโนมัติ เช่น การกดไลค์ โดยเฉพาะอย่างยิ่งในจำนวนมาก อาจถูก Instagram ตั้งค่าสถานะได้อย่างง่ายดาย ควรให้ความสำคัญกับการมีส่วนร่วมที่แท้จริงมากกว่าการดำเนินการอัตโนมัติจำนวนมากเสมอ

การก้าวต่อไปกับ Instagrapi

instagrapi มีชุดเครื่องมือที่หลากหลายสำหรับการโต้ตอบกับ Instagram คู่มือนี้ได้กล่าวถึงเพียงผิวเผิน แสดงให้เห็นถึงวิธีการตั้งค่า การเข้าสู่ระบบ และการดำเนินการที่พบบ่อยที่สุดบางอย่าง

หากต้องการเชี่ยวชาญ instagrapi อย่างแท้จริง ให้ศึกษาเอกสารอย่างเป็นทางการ ไฟล์ README.md ใน พื้นที่เก็บข้อมูล Instagrapi บน GitHub เป็นจุดเริ่มต้นที่ดีที่สุด ซึ่งมักจะเชื่อมโยงไปยังคู่มือที่มีรายละเอียดเพิ่มเติมและเอกสารอ้างอิง API ภายในโฟลเดอร์ docs ทรัพยากรเหล่านี้ครอบคลุมคุณสมบัติอื่นๆ การตั้งค่าขั้นสูง และประเภทเฉพาะสำหรับอ็อบเจกต์ Instagram ต่างๆ

โปรดจำไว้ว่าแพลตฟอร์ม Instagram และ API อาจเปลี่ยนแปลงได้ ดังนั้นสิ่งที่ใช้ได้ในวันนี้อาจต้องมีการปรับเปลี่ยนในวันพรุ่งนี้ การติดตามความเคลื่อนไหวของไลบรารี instagrapi และการพูดคุยในชุมชนสามารถช่วยให้คุณปรับตัวได้ ขอให้สนุกกับการทำงานแบบอัตโนมัติ และทำอย่างมีความรับผิดชอบ!

💡
ต้องการเครื่องมือทดสอบ API ที่ยอดเยี่ยมซึ่งสร้าง เอกสารประกอบ API ที่สวยงาม หรือไม่?

ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณเพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด หรือไม่?

Apidog ตอบสนองทุกความต้องการของคุณ และ แทนที่ Postman ในราคาที่เข้าถึงได้ง่ายกว่ามาก!
button

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API