يمكن لأتمتة المهام على انستغرام تبسيط طريقة إدارتك لحضورك عبر الإنترنت بشكل كبير. instagrapi
هي مكتبة بايثون مصممة لمساعدتك على القيام بذلك بالضبط. تتفاعل مباشرة مع أنظمة الواجهة الخلفية الخاصة بانستغرام - نفس الأنظمة التي يستخدمها التطبيق الرسمي للهاتف المحمول. هذا الاتصال المباشر يجعل instagrapi
سريعًا وفعالًا، ولا يتطلب متصفح ويب للعمل.
يهدف هذا الدليل إلى توفير مسار واضح للبدء باستخدام instagrapi
. سنتناول كيفية تثبيته، وتسجيل الدخول إلى حساب انستغرام الخاص بك بشكل آمن، وإجراء الإجراءات الشائعة مثل التفاعل مع المنشورات والمستخدمين، وتحميل المحتوى، وسنتطرق إلى الممارسات الأساسية لضمان أن تكون أتمتتك آمنة وفعالة.
هل تريد منصة متكاملة وشاملة لفريق المطورين لديك للعمل معًا بأقصى إنتاجية؟
Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول جدًا!
الحصول على Instagrapi على نظامك
قبل أن تتمكن من استخدام instagrapi
، تحتاج إلى تثبيته. أولاً، تأكد من تثبيت بايثون على جهاز الكمبيوتر الخاص بك؛ يعمل instagrapi
بشكل أفضل مع بايثون الإصدار 3.9 أو أحدث. يمكنك التحقق من إصدار بايثون الخاص بك عن طريق فتح طرفية (Command Prompt، PowerShell، أو Terminal على macOS/Linux) وكتابة python --version
أو python3 --version
.
بمجرد أن يكون بايثون جاهزًا، تثبيت instagrapi
سهل ومباشر باستخدام pip
، مدير حزم بايثون. في الطرفية الخاصة بك، قم بتنفيذ الأمر التالي:
pip install instagrapi
إذا كنت تستخدم python3
خصيصًا لتثبيت بايثون 3، فقد تحتاج إلى:
python3 -m pip install instagrapi
سيقوم هذا الأمر بتنزيل وتثبيت instagrapi
وأي مكتبات أخرى يعتمد عليها. لإدارة مشروع أنظف، غالبًا ما يُنصح باستخدام بيئات بايثون الافتراضية، التي تعزل تبعيات المشروع. يمكنك إنشاء واحدة باستخدام python3 -m venv your_project_name
، وتنشيطها، ثم تشغيل أمر pip install instagrapi
بداخلها.
الاتصال بحساب انستغرام الخاص بك
لإجراء إجراءات على انستغرام، يحتاج النص البرمجي الخاص بك إلى تسجيل الدخول. يتولى instagrapi
هذه العملية. الخطوة الأولى في النص البرمجي لبايثون الخاص بك ستكون استيراد الفئة 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
. ستحصل عادةً على هذا الرمز من تطبيق المصادقة الخاص بك أو رسالة نصية قصيرة وتمرره أثناء استدعاء تسجيل الدخول: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE")
.
تسجيل الدخول المستمر باستخدام اسم مستخدم وكلمة مرور يمكن أن يكون غير فعال وقد يجذب انتباهًا غير مرغوب فيه من انستغرام. نهج أذكى هو حفظ جلسة تسجيل الدخول الخاصة بك بعد المصادقة الناجحة الأولى ثم إعادة تحميل هذه الجلسة لتشغيلات النص البرمجي المستقبلية.
إليك كيفية إدارة الجلسات:
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.")
يحاول هذا النهج المدمج استخدام جلسة محفوظة أولاً ويعود إلى تسجيل دخول جديد إذا لزم الأمر، مع حفظ الجلسة الجديدة للمرة القادمة.
تفاعلات انستغرام الأساسية مع Instagrapi
بمجرد تسجيل الدخول، يمكنك البدء في التفاعل مع انستغرام. افترض أن cl
هو كائن Client
الذي سجل الدخول بنجاح للأمثلة أدناه.
الحصول على معلومات المستخدم
يمكنك جلب المعلومات العامة حول أي مستخدم انستغرام إذا كنت تعرف اسم المستخدم الخاص به. يتضمن ذلك معرف المستخدم الفريد (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}")
التفاعل مع المنشورات (الوسائط)
يشار إلى منشورات انستغرام على أنها "وسائط" في instagrapi
. للتفاعل مع منشور، تحتاج عادةً إلى media_pk
الخاص به (معرف رقمي فريد للمنشور). يمكنك الحصول على 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
.
اعتبارات رئيسية للأتمتة السلسة
عند أتمتة إجراءات انستغرام، هناك بعض الممارسات الحاسمة للموثوقية وتجنب المشاكل مع حسابك.
إدخال فترات تأخير: المستخدمون البشر لا يقومون بالإجراءات على الفور واحدًا تلو الآخر. يجب ألا يقوم النص البرمجي الخاص بك بذلك أيضًا. استخدم time.sleep(random.uniform(min_seconds, max_seconds))
بين الإجراءات لمحاكاة أنماط التفاعل الطبيعية. instagrapi
نفسها لديها إعداد cl.delay_range = [min, max]
يضيف بعض التأخيرات التلقائية لعمليات معينة.
النظر في استخدام البروكسيات للاستخدام المكثف: إذا كان النص البرمجي الخاص بك يقوم بعدد كبير من الطلبات، أو إذا كنت تدير حسابات متعددة من نفس عنوان IP، فقد يحد انستغرام من نشاطك. استخدام خادم بروكسي (cl.set_proxy("your_proxy_string")
) يمكن أن يساعد في توزيع طلباتك ويجعلها تبدو وكأنها قادمة من مواقع مختلفة.
التعامل مع الأخطاء المحتملة: قد تحدث مشاكل في الشبكة، أو قد تتغير واجهة برمجة تطبيقات انستغرام، أو قد تصل إلى حد المعدل. قم بتضمين استدعاءات instagrapi
الخاصة بك في كتل try...except
لالتقاط هذه الأخطاء بأمان. يحتوي instagrapi
على استثناءات محددة مثل RateLimitError
، UserNotFound
، MediaNotFound
، إلخ، والتي يمكنك التقاطها لمعالجة الأخطاء بشكل أكثر استهدافًا.
الاستخدام بمسؤولية وأخلاقية: الأتمتة قوية. تجنب البريد المزعج، احترم خصوصية المستخدم، ولا تشارك في الأنشطة التي تنتهك شروط خدمة انستغرام أو إرشادات المجتمع. يجب أن يكون هدف الأتمتة هو تعزيز التفاعل الحقيقي أو إدارة حضورك بكفاءة، وليس التلاعب أو الإزعاج.
مثال بسيط للأتمتة: الإعجاب بالمنشورات الأخيرة لهاشتاغ
دعنا ننشئ نصًا برمجيًا صغيرًا يجد المنشورات الأخيرة لهاشتاغ معين ويعجب ببعضها. هذا يوضح كيفية دمج العديد من ميزات 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}")
هذا المثال هو للتوضيح. أتمتة الإعجابات، خاصة بأعداد كبيرة، يمكن أن يتم تمييزها بسهولة بواسطة انستغرام. قم دائمًا بإعطاء الأولوية للتفاعل الحقيقي على الإجراءات الآلية الجماعية.
المضي قدمًا مع Instagrapi
يقدم instagrapi
مجموعة عميقة من الأدوات للتفاعل مع انستغرام. لقد غطى هذا الدليل جزءًا بسيطًا، موضحًا لك كيفية الإعداد وتسجيل الدخول وإجراء بعض الإجراءات الأكثر شيوعًا.
لإتقان instagrapi
حقًا، استكشف وثائقه الرسمية. ملف README.md
على مستودع Instagrapi GitHub هو أفضل نقطة بداية، وعادةً ما يرتبط بأدلة أكثر تفصيلاً ومراجع API داخل مجلد docs
الخاص به. تغطي هذه الموارد العديد من الميزات الإضافية، والإعدادات المتقدمة، والأنواع المحددة لكائنات انستغرام المختلفة.
تذكر أن منصة انستغرام وواجهة برمجة التطبيقات الخاصة بها يمكن أن تتغير، لذا فإن ما يعمل اليوم قد يحتاج إلى تعديلات غدًا. البقاء على اطلاع دائم بمكتبة instagrapi
ومناقشات المجتمع يمكن أن يساعدك على التكيف. أتمتة سعيدة، وقم بذلك بمسؤولية!
هل تريد منصة متكاملة وشاملة لفريق المطورين لديك للعمل معًا بأقصى إنتاجية؟
Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول جدًا!