การทำงานแบบอัตโนมัติบน Instagram สามารถปรับปรุงวิธีการจัดการสถานะออนไลน์ของคุณได้อย่างมาก instagrapi
คือไลบรารี Python ที่ออกแบบมาเพื่อช่วยให้คุณทำสิ่งนั้นได้โดยตรง มันจะโต้ตอบโดยตรงกับระบบแบ็กเอนด์ของ Instagram เอง ซึ่งเป็นระบบเดียวกับที่แอปพลิเคชันมือถืออย่างเป็นทางการใช้ การสื่อสารโดยตรงนี้ทำให้ instagrapi
รวดเร็วและมีประสิทธิภาพ และไม่จำเป็นต้องใช้เว็บเบราว์เซอร์ในการทำงาน
คู่มือนี้มีจุดประสงค์เพื่อให้เส้นทางที่ชัดเจนในการเริ่มต้นใช้งาน instagrapi
เราจะกล่าวถึงวิธีการติดตั้ง การเข้าสู่ระบบบัญชี Instagram ของคุณอย่างปลอดภัย การดำเนินการทั่วไป เช่น การโต้ตอบกับโพสต์และผู้ใช้ การอัปโหลดเนื้อหา และจะกล่าวถึงแนวทางปฏิบัติที่จำเป็นเพื่อให้แน่ใจว่าการทำงานแบบอัตโนมัติของคุณปลอดภัยและมีประสิทธิภาพ
ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณเพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด หรือไม่?
Apidog ตอบสนองทุกความต้องการของคุณ และ แทนที่ Postman ในราคาที่เข้าถึงได้ง่ายกว่ามาก!
การติดตั้ง 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
และการพูดคุยในชุมชนสามารถช่วยให้คุณปรับตัวได้ ขอให้สนุกกับการทำงานแบบอัตโนมัติ และทำอย่างมีความรับผิดชอบ!
ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณเพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด หรือไม่?
Apidog ตอบสนองทุกความต้องการของคุณ และ แทนที่ Postman ในราคาที่เข้าถึงได้ง่ายกว่ามาก!