لقد كان هذا صداعًا في المعركة، إليك القليل من المعلومات الأساسية.
أدير مجتمعًا يتمتع بقدر هائل من الضجيج المبني حوله. لدينا أكثر من مليون شخص يتتبعون مشروعنا، وقد أنشأنا منتدى Discourse لمساعدة المطورين داخل مجتمعنا. في الأساس، إنه منتدى دعم للمطورين للتفاعل مع مشروعنا، ولا نسمح بنشر المحتوى خارج المحتوى المتعلق بالتطوير.
قبل حوالي ثلاثة أيام، ادعى شخصية بارزة على يوتيوب/تويتر بشكل خاطئ أن التسجيل في منتدى الدعم الخاص بنا ونشر مشاركات عليه يجعلك مؤهلاً لتلقي مكافآت/هدايا من فريقنا. هذا غير صحيح تمامًا، وقد أدى إلى 3 أيام من عمليات التسجيل المستمرة تقريبًا، والكثير من المشاركات والمواضيع العشوائية التي تم نشرها في المنتدى.
نتحدث عن ما بين 2500 و 7500 عملية تسجيل في اليوم حاليًا، بشكل أساسي من دول آسيوية وشرق أوسطية (بلدان محددتان تبرزان كمرتكبين رئيسيين).
يبدو أن المستخدمين الذين يسجلون هم مزيج من الروبوتات والمستخدمين الحقيقيين. معظم عناوين IP فريدة (مزيج صحي من IPv4 و IPv6)، ولا يبدو أن هناك شبكات فرعية بارزة لحظرها على جانب IPv4 لإخراج أجزاء منها (لقد حققت بعض النجاح في حظر كتل /24 على IPv6، ولكن يبدو أنه يمكن التحايل عليها بسهولة). عناوين البريد الإلكتروني كلها Gmail، ويبدو أن الكثير منها عناوين بريد إلكتروني يمكن التخلص منها/روبوتات. المؤشر الوحيد على أن هذه حسابات روبوتات هو أن العديد منها يعيد استخدام نفس صورة اللافتة على ملفهم الشخصي، بالإضافة إلى بعض النصوص العامة “أنا طالب” في السيرة الذاتية.
لقد قمت بإخفاء هوية هذه القائمة عن طريق تغيير الأحرف/الأرقام، ولكن لإعطائك أمثلة على أنواع رسائل البريد الإلكتروني المرفقة بهذه التسجيلات:
يقوم هؤلاء المستخدمون بالتسجيل ثم إنشاء مواضيع جديدة غير ذات صلة بمجتمعنا. غالبًا ما لا تكون هذه المواضيع كلمات، يبدو الأمر كما لو أن طفلًا صغيرًا قد حطم لوحة المفاتيح. ليست المواضيع صعبة الكشف والحذف، ولكن ما هو أسوأ هو قيامهم بنشر محتوى عشوائي/منخفض الجودة في مواضيع موجودة مسبقًا. تمت إضافة ما بين 500 و 1500 مشاركة عشوائية/منخفضة الجودة جديدة إلى العديد من مواضيعنا الأكثر شيوعًا.
حتى الآن، قمت بتعطيل التسجيلات بالكامل، ولكني أبحث عن المساعدة بشأن ما يلي:
هل هناك أي طريقة لمسح الأعضاء بشكل جماعي؟ هل يمكنني حذف جميع المستخدمين ذوي المستوى 0 (TL0) الذين سجلوا خلال الـ 72 ساعة الماضية؟
هل هناك طريقة للكشف عن رسائل البريد الإلكتروني العشوائية/التي يمكن التخلص منها ورفض التسجيل منها؟ في هذه المرحلة، سأكون على استعداد لحظر جميع رسائل البريد الإلكتروني التي تنتهي بأرقام من 3 إلى 5 أرقام في الوقت الحالي.
هل تقترح ضبط الصمت التلقائي على قيمة أكبر من 3000 مللي ثانية؟
هل يمكنك تقديم أي نصائح أو حيل أخرى لمساعدتي في مكافحة كميات هائلة من البريد العشوائي؟ أشعر أن هذا كان وظيفة بدوام كامل خلال اليومين أو الثلاثة أيام الماضية. أستخدم Akismet ولكن هل هناك أي إضافات إضافية قد تساعدني؟
أود - على الأقل مؤقتًا - تعيين إنشاء / رد لجميع الفئات إلى TL1 أو ربما حتى TL2، أو استخدام معالج مخصص لجعل المستخدمين الجدد يمرون ببعض العقبات (“أتفهم أنني لن أحصل على مكافآت” مع 10 خيارات، واحد فقط صحيح) لإضافتهم إلى مجموعة يمكنها النشر.
قد ترغب في استخدام حقل مستخدم مخصص بخيار اختيار متعدد مطلوب في صفحة التسجيل الخاصة بك، مع إجابات متعددة، واحدة منها فقط مقبولة. سيؤدي ذلك على الأرجح إلى إبطاء الروبوتات قليلاً، أو على الأقل يمنحك حقلاً يمكن تصفيته بسهولة للمساعدة في حذف عمليات التسجيل المزيفة. (ملاحظة: بعد التفكير في الأمر، أشك في أن هذا سيعمل لأنه لا يوجد شيء يتطلب إجابة محددة. قد تعمل الطريقة المذكورة في رد سابق بشكل أفضل.)
أجد أن الفخاخ من نوع الكابتشا غير فعالة هذه الأيام، يمكن للروبوتات حلها أسرع مني.
يجب أن تكون هناك طريقة لحذف المستخدمين الجدد من المستوى 0 في Rails، ولكن تأكد من إجراء نسخة احتياطية أولاً. إذا قاموا بالنشر، فسيتعين عليك حذف تلك المنشورات أولاً.
قال آخرون إن طلب معرفات المصادقة الثنائية لعمليات التسجيل يقضي تقريبًا على مرسلي البريد العشوائي. لم أضطر إلى اللجوء إلى ذلك بعد.
مع تعطيل التسجيلات ليوم واحد، تمكنا من استعادة أنفاسنا.
@RGJ تعجبني فكرتك حول وضع عقبات يجب تجاوزها للحصول على صلاحيات النشر في مجموعة، وهذا شيء سنستكشفه.
باستخدام مستكشف البيانات، تمكنت من تحديد حوالي 5000 حساب روبوت إضافي كانت تتسلل تحت الرادار حتى الآن.
@MikeNolan لست متأكدًا مما إذا كان لدي وصول إلى وحدة تحكم rails بعد. نحن نستضيف مباشرة مع discourse ولم أكن جزءًا من عملية الشراء / الإعداد، لذا أقوم بتصعيد هذا السؤال لمحاولة تحديد ما هو الوصول المتاح لدينا.
أتخيل أنه يمكنني إجراء عمليات حذف عبر واجهة برمجة التطبيقات (API) أيضًا؟ أرى أنه يمكنني بسهولة إنشاء بيانات اعتماد API لنفسي.
شيء على غرار:
import csv
import requests
import time
api_key = 'api_key'
api_username = 'api_username'
base_url = 'https://mydomain.com'
headers = {
'Api-Key': api_key,
'Api-Username': api_username
}
def delete_user(user_id):
delete_url = f'{base_url}/admin/users/{user_id}.json'
response = requests.delete(delete_url, headers=headers)
if response.status_code == 200:
print(f'Successfully deleted user {user_id}')
else:
print(f'Failed to delete user {user_id}. Status code: {response.status_code}, Response: {response.text}')
with open('user_ids_to_delete.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
user_id = row[0]
try:
delete_user(user_id)
except Exception as e:
print(f'Error occurred while deleting user {user_id}: {e}')
time.sleep(1) # Add a delay to avoid overwhelming the server with requests
قبل عدة سنوات، تعرضت منتدياتنا القديمة (phpbb3) لموجة كبيرة من التسجيلات الوهمية، وكان العديد من رسائل البريد الإلكتروني مشابهة لرسائل Gmail التي ذكرتها، على الرغم من أننا تلقينا أيضًا عددًا كبيرًا من العناوين من .ru، وخاصة yandex.
في وقت ما، كنا نتلقى 1000 منها يوميًا. بحلول الوقت الذي تمكنا فيه من السيطرة على الوضع، كان لدينا أكثر من 80 ألف سجل وهمي.
لقد حللنا المشكلة عن طريق طلب معرف عضوية صالح حالي (كان نظام عضويتنا منفصلاً تمامًا) لم يتم استخدامه بالفعل لإنشاء سجل منتدى. بهذه الطريقة، حتى لو كان لدى شخص ما إمكانية الوصول إلى سجلات عضويتنا (فهي متصلة بالإنترنت)، فلا يمكنه استخدام معرف إلا مرة واحدة. انخفضت التسجيلات الوهمية إلى ما يقرب من الصفر.
لم أستخدم مستكشف البيانات بما يكفي لمعرفة قيوده. لقد كنت مسؤول قاعدة بيانات PostgreSQL لأكثر من 20 عامًا، لذا لم تكن الدخول مباشرة إلى psql مشكلة بالنسبة لي، لكنني قصرت أنشطتي هناك على الاستعلامات للقراءة فقط.
إذا كنت مستخدمًا في منتداي، وقمت بحظرك، يمكنني استخدام إضافة بصمة الإصبع لمعرفة أنك أنشأت حسابًا جديدًا باسم مختلف، حتى أتمكن من حظر هذا الحساب أيضًا. في هذه الحالة، أنا ببساطة أستخدم بصمة الإصبع لحماية مصلحتي الخاصة كمالك للمنتدى. أنا لا أبيع لك أي شيء ولا أغزو خصوصيتك دون داعٍ. إنه يعمل بنفس طريقة تخزين عناوين IP ومقارنتها، باستثناء حقيقة أنه يمكن تغييرها بسهولة باستخدام وكيل أو VPN.
للعودة إلى هذا الموضوع وإنهائه - تم المتابعة وحل هذا الأمر عبر رسالة خاصة.
ولكن لأي شخص في موقف مماثل، يمكنك بالفعل حذف المستخدمين باستخدام واجهة برمجة التطبيقات إذا لم يكن لديك وصول إلى وحدة تحكم rails بسبب استضافتك المُدارة.