
الكشف الآلي وتتبّع التفاعلات المزيّفة على GitHub — CI يومي، بدون أي بنية تحتية
الكشف الآلي وتتبّع التفاعل المزوّر على GitHub
مشروع من JS Labs —
جزء من مبادرة AI Slop Intelligence.
يعمل يوميًا. يقيّم كل حساب مشبوه. يكتشف حملات البوتات المنسقة.
يفتح القضايا مباشرة على المستودعات المخترقة ليتمكن المشرفون من اتخاذ الإجراء.
ادعم هذا المشروع
BTC 3QjWqhQbHdHgWeYHTpmorP8Pe1wgDjJy54
ETH 0x5851e6145F4773d1585b8686095FB16E368a4dA1
ZEC t1KSR5YkNPbjqRSCoLKo5AddFWdm9Kzxh1B
نجوم GitHub هي إشارة ثقة. وهي الطريقة التي يقرر بها المطورون ما يقيّمونه، وما يعتمدون عليه، وما يوصون به. وهذه الإشارة تُفسَد بشكل منهجي.
خلال طفرة الذكاء الاصطناعي في 2024-2026، ظهرت صناعة كاملة من مزارع البوتات لتصنيع المصداقية لمستودعات منخفضة الجودة وغالبًا خبيثة. مشروع يحصد 800 نجمة خلال 48 ساعة يبدو شرعيًا لمطوّر يمسح نتائج البحث. هذا هو بيت القصيد. الهدف من التفاعل المزوّر ليس النجوم نفسها؛ بل الدليل الاجتماعي الذي تنتجه تلك النجوم، والقرارات اللاحقة التي يؤثر عليها ذلك الدليل الاجتماعي.
النمط قابل للتمييز. حسابات أُنشئت في الأسبوع نفسه، بلا سيرة ذاتية، بلا متابعين، بلا مستودعات أصلية، تمنح النجوم لنفس المستودعات الخمسة عشر خلال نافذة زمنية من ساعتين. ليست حملة واحدة، بل عشرات تعمل في الوقت نفسه، كل يوم، عبر آلاف الحسابات. تُظهر البيانات مستودعات يكون فيها 185 من أصل 185 من المتفاعلين بوتات. نسبة تزيّف 100%. مواضع كاملة في قوائم Trending مبنية على لا شيء.
phantomstars أُنشئ لأن هذه المشكلة قابلة للمعالجة. نسبة الإشارة إلى الضوضاء في واجهة GitHub العامة (API) لا تزال، في الوقت الحالي، مرتفعة بما يكفي لتترك الحملات المنسقة بصمات واضحة. يقرأ هذا المشروع تلك البصمات، وينشر البيانات الخام، ويُخطر مشرفي المستودعات المتأثرة مباشرة.
هذا جزء من العمل الأوسع لمبادرة AI Slop Intelligence في JS Labs، وهو بحث مستمر في آليات وتأثيرات قابلة للقياس للمحتوى منخفض الجودة المولّد بالذكاء الاصطناعي الذي يغمر النظم البيئية للمطورين. التفاعل المزوّر ليس قضية هامشية؛ إنه آلية التوزيع التي تُقدّم المحتوى الرديء أمام المستخدمين الحقيقيين.
phantomstars يشغّل مهمة يومية في GitHub Actions تقوم بما يلي:
r/osinttools و r/coolgithubprojects عن طريق استخراج روابط مستودعات GitHub من آخر يومينلا خوادم. لا قواعد بيانات. لا فاتورة للبنية التحتية.
نعم. عندما تتجاوز نسبة التزيّف لمستودع 40% أو يتم اكتشاف حملة منسقة، يفتح phantomstars قضية مباشرة على ذلك المستودع. تحتوي القضية على جدول المشبوهين الكامل، وعضوية الحملة، والدرجات المركّبة، وتواريخ إنشاء الحسابات: كل ما يحتاجه المشرف للتحقيق والإبلاغ إلى GitHub.
إذا كانت القضايا معطّلة على المستودع المستهدف، يتم تخطي الإشعار بصمت ويُسجَّل في سجل الفحص.
نعم.
owner/repo وشغّل فحصًا مستهدفًا.لماذا هذا التقسيم:
نعم. إذا ظهر حسابك في data/suspects.jsonl وترى أن التصنيف غير صحيح، افتح قضية إيجابية كاذبة باستخدام القالب المقدم. تُراجع البلاغات يدويًا قبل أي إضافة إلى قائمة السماح. تُخزَّن قائمة السماح في data/allowlist.txt؛ الحسابات المدرجة هناك تُستبعَد من جميع الفحوصات المستقبلية ومن سجل المشبوهين.
معرف الحملة (مثل c-a3f9b2e1) هو بصمة سداسية عشرية حتمية من 8 أحرف مشتقة من تجزئة SHA-256 للمجموعة المرتبة من أسماء دخول الأعضاء في تلك الحملة. نفس مجموعة الحسابات ستنتج نفس معرف الحملة عبر عمليات فحص مستقلة، مما يتيح التتبع الطولي عبر الزمن. وهو ليس اسم مستودع، ولا اسم مستخدم، ولا أي معرف خارجي.
الاستقرار: المعرف ثابت ما دامت مجموعة أعضاء الحملة لم تتغير. إذا أُضيفت بوتات أو عُلّقت بين الفحوصات، يتغير المعرف لأن العضوية تغيرت. هذا متوقع ويعكس التغير الواقعي في تكوين مزارع البوتات.
نعم. يتم جلب تاريخ إنشاء كل حساب من واجهة GitHub GraphQL API (حقل createdAt) وتخزينه في كل سجل مشبوه كـ account_created_at. وهو أيضًا المدخل الأساسي لدرجة عمر الحساب، أقوى إشارة منفردة للحسابات المزوّرة. الحسابات التي أُنشئت خلال يومين من التفاعل تحصل على 1.0 استنادًا إلى العمر وحده.
تحمل الدرجات الفردية معدلات إيجابية كاذبة ملحوظة. مطوّر جديد بملف شخصي ضئيل يحصل بشكل شرعي على 0.75+. يراعي المشروع ذلك باشتراط أدلة على مستوى الحملة قبل فتح القضايا؛ حساب مشبوه واحد لا يكفي. مجموعة منسقة من 40+ حسابًا، أُنشئت جميعها في الأسبوع نفسه، وكلها بدرجة 0.75+، وتتفاعل جميعها خلال 90 دقيقة، هي أمر مختلف تمامًا. هنا تصبح الثقة قابلة للتنفيذ.
البيانات احتمالية دائمًا. تذكر نصوص القضايا ذلك صراحةً. الهدف هو منح المشرفين الإشارة والأدلة الخام لتكوين حكمهم الخاص.