أتمتة انستغرام باستخدام Instagrapi: دليل واضح

Mark Ponomarev

Mark Ponomarev

5 يونيو 2025

أتمتة انستغرام باستخدام Instagrapi: دليل واضح

يمكن لأتمتة المهام على انستغرام تبسيط طريقة إدارتك لحضورك عبر الإنترنت بشكل كبير. instagrapi هي مكتبة بايثون مصممة لمساعدتك على القيام بذلك بالضبط. تتفاعل مباشرة مع أنظمة الواجهة الخلفية الخاصة بانستغرام - نفس الأنظمة التي يستخدمها التطبيق الرسمي للهاتف المحمول. هذا الاتصال المباشر يجعل instagrapi سريعًا وفعالًا، ولا يتطلب متصفح ويب للعمل.

يهدف هذا الدليل إلى توفير مسار واضح للبدء باستخدام instagrapi. سنتناول كيفية تثبيته، وتسجيل الدخول إلى حساب انستغرام الخاص بك بشكل آمن، وإجراء الإجراءات الشائعة مثل التفاعل مع المنشورات والمستخدمين، وتحميل المحتوى، وسنتطرق إلى الممارسات الأساسية لضمان أن تكون أتمتتك آمنة وفعالة.

💡
هل تريد أداة رائعة لاختبار واجهات برمجة التطبيقات (API) تولد وثائق API جميلة؟

هل تريد منصة متكاملة وشاملة لفريق المطورين لديك للعمل معًا بأقصى إنتاجية؟

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 ومناقشات المجتمع يمكن أن يساعدك على التكيف. أتمتة سعيدة، وقم بذلك بمسؤولية!

💡
هل تريد أداة رائعة لاختبار واجهات برمجة التطبيقات (API) تولد وثائق API جميلة؟

هل تريد منصة متكاملة وشاملة لفريق المطورين لديك للعمل معًا بأقصى إنتاجية؟

Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول جدًا!
زر

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات