
بوت مراقبة جماعي لتليغرام مكتوب بلغة بايثون

Informer (TGInformer) هي مكتبة بوت تسمح لك بانتحال شخصية عدة مستخدمين حقيقيين على تليغرام والتجسس على أكثر من 500 قناة تليغرام لكل حساب. يتم تسجيل التفاصيل إلى قاعدة بيانات MySQL، وجدول Google خاص، وقناتك الخاصة للتحليل.
هذا مشروع إثبات مفهوم يعمل مع أخطاء معروفة. لا تتردد في التفرع والمشاركة والتواصل معي.



دعم التعبيرات العادية لتصفية الكلمات المفتاحية
SQLAlchemy لاستمرارية البيانات المستقلة عن نوع قاعدة البيانات

تسجيل بيانات الرسائل والقنوات السياقية إلى قناة خاصة وقاعدة بيانات
تخزين معلومات وصفية عن مرسل الرسالة والقناة وعدد المشاركين في القناة


الاحتفاظ بجلسة القنوات المنضمة
تسجيل الدخول مرة واحدة، يبقى البوت متصلاً للأبد دون الحاجة لإعادة المصادقة الثنائية
الانضمام إلى ما يصل إلى 500 قناة لكل حساب

قم بتحرير الملف informer.env الذي يحتوي على جميع متغيرات البيئة المطلوبة لـ Informer
يمكنك استرداد المعلومات الضرورية المتعلقة بتليغرام هنا:


بمجرد المصادقة، انقر على "API Development Tools"

قم بإنشاء تطبيق جديد عن طريق ملء النموذج الموضح أدناه

يجب أن يكون لديك الآن قيم المعاملات الضرورية لحقول ملف informer.env: TELEGRAM_API_HASH و TELEGRAM_API_APP_ID


حتى الآن لدينا ما نحتاجه لـ Telethon و Informer للوصول إلى واجهات برمجة تطبيقات تليغرام، بعد ذلك نحتاج إلى الحصول على معرفات حساب البوت الخاص بك.



يجب أن تتلقى اسم المستخدم لتليغرام ومعرف حساب تليغرام. هذا مهم.

يمكنك اختياريًا ملء TELEGRAM_NOTIFICATIONS_CHANNEL_ID باسم المستخدم الخاص بك أو معرف قناة.
تأكد من تشغيل Python 3 وقم ببساطة بتشغيل ./quick_start.sh في الدليل.
يجب تشغيل هذا أولاً حتى تتمكن من المصادقة مع تليغرام في أول تشغيل وإنشاء ملف جلسة محلي
يمكنك لاحقًا نسخ الملفات للحسابات المختلفة في app/session وتحميلها عبر Docker إذا اخترت ذلك.

سيُطلب منك إدخال رمز المصادقة الذي تلقيته إما عبر تليغرام إذا كنت قد سجلت الدخول من قبل، أو عبر الرسائل النصية.

اضغط على إدخال وسيتم إنشاء جلستك في المجلد app/session باسم الملف كرقم الهاتف الدولي الذي قدمته مع امتداد .session.
تابع إلى القسم التالي حيث نستخدم Docker Compose لإعداد قاعدة بيانات.
هذه الخطوة اختيارية، ولكن إذا كنت ترغب في إنشاء قناة مجموعة خاصة وترغب في الحصول على معرف المجموعة، اتبع ما يلي:

قم بتعيين الرابط في ملف informer.env تحت المعامل TELEGRAM_NOTIFICATIONS_CHANNEL_URL
للحصول على معرف القناة، قم بتشغيل python3 bot.py <TELEGRAM_ACCOUNT_ID> في دليل app حيث <TELEGRAM_ACCOUNT_ID> هو معرف الحساب الذي قمت بإنشائه سابقًا.
عند تحميل السكريبت، سيعرض جميع القنوات التي أنت فيها، ببساطة انسخ هذه القيمة وضعها في معامل TELEGRAM_NOTIFICATIONS_CHANNEL_ID في ملف informer.env وأوقف السكريبت. أنت الآن جاهز لتشغيل Informer.
بعد تشغيل quick_start.sh، يمكنك تشغيل docker compose عن طريق:

تشغيل ./stop.sh لإيقاف الحاويات
تشغيل ./clean.sh لإزالة الحاويات والأحجام العالقة. ** ملاحظة ** هذا سيؤدي إلى إعادة تعيين قاعدة البيانات وستفقد جميع بياناتك.
بعض الأمور المهمة:
كنت مطالبًا سابقًا بتشغيل مثيل MySQL الخاص بك مما خلق بعض المشكلات في توافق سلسلة الاتصال والإصدار. في هذا التحديث، يتم إنشاؤه لك واستمراره على القرص.
بالإضافة إلى ذلك، يتم توفير Dozzle حتى تتمكن من عرض السجلات في متصفحك، ما عليك سوى الذهاب إلى http://localhost:9999 والنقر على حاوية app_informer.
إذا كنت لا ترغب في استخدام رقم هاتفك الخاص وتريد تشغيل بوت Informer بدرجة من عدم الكشف عن الهوية، يمكنك استخدام تطبيق Burner المتاح على iOS و Android.
تثبيت تطبيق Burner

اتبع نفس الخطوات المذكورة أعلاه بتقديم رقم الهاتف الجديد هنا: https://my.telegram.org/auth
التأكيد عبر Burner. سيتم إرسال رمز مصادقة عبر الرسائل النصية، ستحتاج إلى تقديمه

تسجيل الدخول إلى تليغرام
حاول تسجيل الدخول مع التطبيق عن طريق تشغيل
python3 bot.py <api_user_id> في دليل app.
تم إرسال هذا عبر رسالة تليغرام أو رسالة نصية.
قدم هذا وسيحفظ بيانات اعتماد جلستك في ملف الجلسة المذكور أدناه. لن تحتاج بعد الآن إلى المصادقة طالما لديك ملف الجلسة محفوظ.
يتم حفظ الجلسات في مجلد app/session/ باسم <telegram_phone_number>.session
كرر العملية حتى تحصل على جميع ملفات الجلسة اللازمة وقم بتركيبها في Docker.
كانت معرفة كيفية توسيع نطاق الحسابات كابوسًا بعض الشيء لأنني كنت بحاجة إلى عملية آلية. يتطلب تليغرام استخدام رقم هاتف حقيقي يمكنه استقبال رسائل نصية من رمز قصير.
لسوء الحظ، تُمنع الخدمات التي تحتوي على واجهات برمجة تطبيقات مثل Twilio من استقبال رسائل نصية من رموز قصيرة في الولايات المتحدة وكندا والمملكة المتحدة https://support.twilio.com/hc/en-us/articles/223181668-Can-Twilio-numbers-receive-SMS-from-a-short-code- لأغراض الاحتيال. كان هذا سيكون مثاليًا، يا للأسف.
تم إضاعة أمسية كاملة في هذه المحاولة حتى تذكرت تطبيقًا رائعًا استخدمته في الماضي: Burner (https://www.burnerapp.com/) — والذي يصادف أن لديه واجهة برمجة تطبيقات (https://developer.burnerapp.com/api-documentation/incoming-webhooks/). مما يعني أنه يمكنك إنشاء أرقام ديناميكيًا، وإنشاء حساب جديد، ومصادقته كل ذلك عبر SDK عميل تليغرام في Python (Telethon: https://docs.telethon.dev/en/latest/)
أفضل جزء هو أن أرقام Burner مجانية لمدة 14 يومًا. حسابات تليغرام المتصلة عبر واجهة برمجة تطبيقات العميل تحتاج فقط إلى تسجيل الدخول مرة واحدة وتحتفظ بالجلسات بشكل دائم. لم أدمج مع واجهة برمجة تطبيقات Burner، لكن العملية مباشرة.
تم بناء البوت فوق حزمة Telethon Python SDK (https://docs.telethon.dev/en/latest/)
بعض الأمور والمشكلات التي تمت مواجهتها في بناء هذا الإثبات المفاهيمي:
يمكن أن تحدث أخطاء FloodWaitErrors عندما ترسل عددًا كبيرًا جدًا من الطلبات إلى واجهة برمجة التطبيقات سواء كان ذلك استعلامًا عن معلومات المستخدمين أو الانضمام إلى عدد كبير جدًا من القنوات بسرعة كبيرة.
TelegramClient(<session_file_name>, <api_user_id>, <api_user_hash>)
هذا الملف هو قاعدة بيانات SQLite يمكنك الاتصال بها. يعمل كذاكرة تخزين مؤقت ويخزن البيانات التاريخية بالإضافة إلى معلومات مصادقة جلستك بحيث لن تضطر إلى إعادة المصادقة مع التحقق الثنائي لتليغرام. لاحظ أنك ستحتاج إلى تسجيل الدخول لأول مرة والمصادقة عند استخدام واجهة برمجة التطبيقات لأول مرة.
أثناء تشغيل البوت وانضمامه إلى القنوات، سترى عميلك يتم تحديثه في الوقت الفعلي ويعرض القنوات الجديدة التي انضممت إليها.

نصيحة: TelegramX هو العميل الأفضل بكثير لهذه الأغراض حيث يدعم تسجيل الدخول المتعدد. قم بالتحميل من هنا:
ملاحظة: التكامل مع Google Sheets اختياري تمامًا. يعمل التطبيق بشكل مثالي مع قاعدة بيانات MySQL فقط.
إذا كنت ترغب في تفعيل تسجيل Google Sheets:
app/credentials/README.mdنظرة عامة سريعة:
app/credentials/google_credentials.jsonهذا اختياري وسيعمل البوت بدونه.
bot.py مرتين، مرة للسماح لها بالانضمام إلى القنوات ومرة أخرى لمراقبتها. أنا على علم بهذا الخطأ الواضح وسأصلحه في المراجعة التالية.هل وجدت هذا المشروع مثيرًا للاهتمام؟ يرجى وضع نجمة عليه إذا كان الأمر كذلك.
تم إنشاؤه في يومين كإثبات مفهوم لصديق في مجال العملات الرقمية. إذا وجدت أي تطبيقات مثيرة للاهتمام أو مربحة، فأنا دائمًا سعيد بالتعاون. يمكنك التواصل معي على:
@paulpierre على Twitter أو hi (at) paulpierre (dot) com
معظم مشاريعي المثيرة للاهتمام خاصة على github، لكن لا تتردد في الاطلاع عليها: http://www.github.com/paulpierre أو الأعمال السابقة على http://www.paulpierre.com
حقوق الطبع والنشر (c) 2020 Paul Pierre يُمنح الإذن بموجب هذا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات التوثيق المرتبطة به (يُشار إليهما بـ "البرنامج")، للتعامل مع البرنامج دون قيود، بما في ذلك على سبيل المثال لا الحصر حقوق استخدام ونسخ وتعديل ودمج ونشر وتوزيع وترخيص و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يتم تزويدهم بالبرنامج بالقيام بذلك، شريطة استيفاء الشروط التالية: يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الهامة من البرنامج. يُقدم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يكون المؤلفون أو أصحاب حقوق الطبع والنشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء كانت ناشئة عن عقد أو ضرر أو غير ذلك، تنشأ عن أو بسبب أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى فيه.