MAISON CODE .
/ Security · Cloudflare · Bots · Infrastructure · Redis · Architecture

التخفيف من آثار الروبوتات: الحرب على الموزعين

روبوتات الأحذية الرياضية تأكل مخزونك. دليل تقني للتغلب على أدوات السكالبينج الآلية باستخدام Cloudflare Turnstile وHoneypots وRedis Rate Limiting.

AB
Alex B.
التخفيف من آثار الروبوتات: الحرب على الموزعين

إذا أطلقت منتجًا رائجًا على Shopify (على سبيل المثال، عرض محدود للأحذية الرياضية) بدون حماية، فسوف تبيعه خلال ثانية واحدة. هذا يبدو وكأنه “مشكلة جيدة”. ليس كذلك. لأن 98% من المخزون ذهب إلى بائع واحد في شيكاغو يقوم بتشغيل برنامج Python النصي. عملاؤك المخلصون - الأشخاص الذين يرتدون العلامة التجارية بالفعل - لم يحصلوا على أي شيء. إنهم غاضبون. يغردون. يغادرون.

برنامج Bot Mitigation ليس تذكرة لتكنولوجيا المعلومات. إنها حماية العلامة التجارية. في Maison Code Paris، نقوم بتصميم أنظمة “الإطلاق العادل” التي تضمن فوز البشر.

لماذا تتحدث Maison Code عن هذا

في Maison Code Paris، نعمل كضمير معمari لعملائنا. غالبًا ما نرث حزمًا “حديثة” تم بناؤها دون فهم أساسي للحجم.

نناقش هذا الموضوع لأنه يمثل نقطة تحول حاسمة في النضج الهندسي. التنفيذ الصحيح يميز MVP الهش عن منصة مؤسسية مرنة يمكنها التعامل مع حركة مرور الجمعة السوداء.

لماذا تناقش Maison Code حماية الروبوتات

لقد حاربنا الروبوتات الأكثر تطورًا في العالم. لقد رأينا روبوتات يمكنها حل reCAPTCHA V3. لقد رأينا الروبوتات التي تستخدم الوكلاء المحليين لتبدو وكأنها مستخدمي iPhone في 50 ولاية. نحن نعلم أن “تثبيت مكون إضافي” لا يكفي. أنت بحاجة إلى الدفاع متعدد الطبقات. نحن نشارك استراتيجيتنا حتى تتمكن من الاستعداد للحرب.

1. نموذج التهديد: كيف تعمل الروبوتات

لإيقاف الروبوت، يجب أن تفكر مثل مطور الروبوت. معظم برامج الروبوت لا “تتصفح” موقعك.

  1. الشاشة: تقوم باستقصاء نقطة نهاية products.json كل 50 مللي ثانية.
  2. Cart: تتجاوز واجهة المستخدم بالكامل وPOST /cart/add.js مباشرة.
  3. الخروج: يستخدمون “روابط التحميل المسبق” لملء الشحن/الفوترة تلقائيًا.
  4. الوكلاء: يقومون بتوجيه حركة المرور عبر 10,000 عنوان IP سكني (أجهزة إنترنت الأشياء المختطفة).
  5. Captcha: يستخدمون مزارع API (2Captcha) حيث يقوم البشر في مزارع النقر بحل رموز التحقق مقابل 0.001 دولار.

2. الطبقة 1: التحدي الخفي (الباب الدوار Cloudflare)

يقوم Google reCAPTCHA القديم (انقر فوق إشارات المرور) بتدمير معدلات التحويل. نحن نستخدم Cloudflare Turnstile. إنه “غير مرئي”. يقوم بتشغيل تحدي JavaScript Proof-of-Work في خلفية المتصفح. إذا كان الزائر عبارة عن برنامج نصي بدون رأس (محرك الدمى/السيلينيوم)، فإنه يفشل في الاختبار.

التنفيذ في الريمكس (الهيدروجين)

نقوم بدمج Turnstile في تدفق تقديم “النموذج”.

// app/components/Turnstile.tsx
استيراد { useEffect, useRef } من 'react';

وظيفة التصدير الباب الدوار({ siteKey, action }) {
  const ref = useRef(null);
  
  استخدام التأثير (() => {
    إذا (نافذة. الباب الدوار) {
      window.turnstile.render(ref.current, {
        مفتاح الموقع: مفتاح الموقع،
        الإجراء: الإجراء، // على سبيل المثال، "بدء الدفع"
        رد الاتصال: وظيفة (رمز مميز) {
           // أدخل الرمز المميز في الإدخال المخفي
           document.getElementById('cf-token').value = token;
        }
      });
    }
  }, []);

  إرجاع <div ref={ref} />;
}

التحقق من جانب الخادم

لا تثق بالعميل أبدًا. يمكن للروبوت إرسال رمز مزيف. يجب عليك التحقق من ذلك باستخدام واجهة برمجة تطبيقات Cloudflare.

// app/routes/api.checkout.ts
تصدير إجراء وظيفة غير متزامنة ({طلب }) {
  const formData = انتظار request.formData();
  رمز const =formData.get('cf-turnstile-response');
  const ip = request.headers.get('CF-Connecting-IP');

  نتيجة ثابتة = انتظار الجلب('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
      الطريقة: "POST"،
      الجسم: URLSearchParams الجديد ({
          السر:process.env.TURNSTILE_SECRET،
          رد: رمز،
          نصيحة عن بعد: الملكية الفكرية
      })
  });

  نتيجة ثابتة = انتظار النتيجة.json();
  إذا (!outcome.success) {
      رمي استجابة جديدة ("تم اكتشاف الروبوت"، { الحالة: 403 })؛
  }
}

3. الطبقة الثانية: مصيدة الجذب (بسيطة ولكنها فعالة)

الروبوتات غالبا ما تكون غبية. يجدون كل حقل <input> ويملأونه. نضيف “وعاء العسل”. حقل مخفي لا يستطيع الإنسان رؤيته (CSS مخفي). إذا تلقى الخادم قيمة في هذا الحقل، فإننا نحظر عنوان IP على الفور.

<div style={{ العتامة: 0، الموضع: 'مطلق'، الأعلى: 0، اليسار: 0، الارتفاع: 0، العرض: 0، zIndex: -1 }}>
    <label htmlFor="website_url">موقع الويب</label>
    <input type="text" name="website_url" tabIndex={-1} الإكمال التلقائي = "off" />
</div>

ملاحظة: لا تستخدم display: none. تتجاهل الروبوتات الذكية عناصر “العرض: لا شيء”. استخدم “التعتيم: 0” أو انقله خارج الشاشة (“يسار: -9999 بكسل”).

4. الطبقة 3: تحديد المعدل (مجموعة رموز Redis)

لا يمكن للإنسان إضافة عنصر إلى سلة التسوق 50 مرة في ثانية واحدة. نحن نطبق تحديدًا صارمًا للمعدلات على طبقة التطبيق (Vercel Middleware). نحن نستخدم Redis (Upstash) لتتبع أعداد الطلبات.

الخوارزمية: نافذة منزلقة.

  • المفتاح: “حد المعدل: IP:192.168.1.1”.
  • الحد: 5 طلبات / 10 ثواني.
// الوسيطة.ts
استيراد {Redis} من '@upstash/redis'؛
استيراد { Ratelimit } من '@upstash/ratelimit'؛

حد معدل ثابت = حد معدل جديد({
  ريديس: Redis.fromEnv()،
  المحدد: Ratelimit.slidingWindow(5, '10 s')،
});

تصدير الوسيطة الافتراضية لوظيفة المزامنة (طلب) {
  const ip = request.ip || '127.0.0.1';
  const { Success } = انتظار Ratelimit.limit(ip);
  
  إذا (! النجاح) {
      return new Response("طلبات كثيرة جدًا"، { الحالة: 429 });
  }
}

التكلفة: يضيف هذا وقت استجابة يصل إلى 20 مللي ثانية تقريبًا. نحن نطبقه فقط على مسارات الطفرة (POST)، وليس مسارات قراءة (GET).

5. الطبقة 4: غرفة الانتظار الافتراضية (قائمة الانتظار)

في بعض الأحيان، تكون حركة المرور حقيقية (100 ألف معجب حقيقي). هذا هجوم DDoS بالحب. سوف تتعطل قاعدة البيانات الخاصة بك. لحل هذه المشكلة، قمنا بتطبيق نظام قائمة الانتظار (مثل Queue-it، ولكنه مخصص).

  1. نقطة الاختناق: كل حركة المرور تصل إلى الحافة.
  2. التحقق من السعة: “هل عدد المستخدمين النشطين أقل من 1000؟”
  3. إعادة التوجيه: إذا كان ممتلئًا، قم بإعادة التوجيه إلى صفحة HTML الثابتة /غرفة الانتظار.
  4. استطلاع: استطلاعات رأي العملاء /api/status.
  5. القبول: عند فتح السعة، قم بإصدار ملف تعريف ارتباط JWT موقع (‘queue_pass`).

وهذا يضمن أن مكالمات Shopify API الخاصة بك لن تتجاوز أبدًا حد الخانق.

6. سباق التسلح: التحليل السلوكي

تحاكي الروبوتات المتقدمة (الخفية) بصمات المتصفح بشكل مثالي. ننتقل إلى القياسات الحيوية السلوكية. نحن نتتبع:

  • مسار الفأرة: يتحرك البشر بفعالية في المنحنيات. تتحرك الروبوتات في خطوط مستقيمة أو تنتقل فوريًا.
  • توقيت الضغط على المفاتيح: لدى البشر فجوات متغيرة بين ضغطات المفاتيح. تكتب الروبوتات بفواصل زمنية تبلغ 50 مللي ثانية بالضبط.
  • مقياس التسارع: تهتز الأجهزة المحمولة قليلاً. الخوادم لا.

نرسل هذا القياس عن بعد إلى محرك الاحتيال (Sift / Forter).

7. اقتصاديات التعبئة

لماذا الناس بوت؟ ربح. يُباع زوج من جوردن ترافيس سكوتس بسعر 150 دولارًا. يُعاد بيعها بمبلغ 1,200 دولار. الربح: 1,050 دولارًا لكل زوج. إذا قام الروبوت بتأمين 50 زوجًا، فهذا يعني ربحًا قدره 50 ألف دولار في ساعة واحدة. ولهذا السبب ينفقون 5000 دولار على تراخيص الروبوتات (CyberAIO) و1000 دولار على الوكلاء. مهمتنا: جعل تكلفة الفوز > 1,200 دولار. نقوم بذلك عن طريق تقديم “العشوائية” (السحوبات) و”الاحتكاك” (التحقق من عمر الحساب). “فقط الحسابات التي تم إنشاؤها منذ أكثر من 3 أشهر يمكنها شراء هذا الانخفاض.” يؤدي هذا إلى إنهاء استراتيجية “تدوير 1000 حساب اليوم”.

8. التشفير من جانب العميل (حماية الحمولة)

تحب الروبوتات إجراء هندسة عكسية لواجهة برمجة التطبيقات (API) الخاصة بك. إنهم يراقبون علامة تبويب الشبكة. يرون POST /cart {id: 123 }. إنهم يكررونها في بايثون. الدفاع: تشفير الحمولة.

  1. وحدة WASM: نقوم بتجميع وظيفة تشفير C++ إلى WebAssembly.
  2. التشفير: يقوم المتصفح بتشفير حمولة سلة التسوق enc_abcd123....
  3. فك التشفير: يستخدم الخادم المفتاح الخاص لفك التشفير. لا يمكن للروبوتات تشغيل WASM بسهولة (يتطلب بيئة متصفح كاملة). لا يمكنهم إجراء هندسة عكسية لكود C++ (وهو ثنائي). وهذا يرفع المستوى بشكل ملحوظ.

9. الإجراء القانوني (التوقف والكف)

في بعض الأحيان، تفشل التكنولوجيا. إذا كان موفر برامج روبوت معين (على سبيل المثال، “Dragon AIO”) يستهدفك على وجه التحديد، فاطلب المساعدة القانونية. رفعت شركة نايكي دعوى قضائية ضد شركة StockX. رفع مدير التذاكر دعوى قضائية ضد السماسرة. قم بتحديث شروط الخدمة: “يعد استخدام برنامج التشغيل الآلي بمثابة خرق للعقد.” يتيح لك ذلك إلغاء الطلبات بشكل قانوني دون استرداد رسوم الشحن. اجعلها مؤلمة. بوترز هي الشركات. إذا قمت بزيادة مخاطرهم القانونية، فإنهم ينتقلون إلى هدف أكثر سهولة.

10. الاستنتاج

تخفيف الروبوتات هو حرب اقتصادية. لا يمكنك إيقاف 100% من الروبوتات. هدفك هو زيادة تكلفة الهجوم أعلى من الربح المحتمل. إذا كان شراء ترخيص الروبوت يكلف 500 دولار، والوكلاء يكلفون 50 دولارًا، والربح من إعادة بيع حذائك هو 200 دولار فقط… فسوف يختفي صانعو الزجاجات.


حماية انخفاض الضجيج؟

هل ستطلقون نسخة محدودة قريباً؟

[نشر حماية الروبوت](/جهة اتصال). قم بتوظيف مهندسينا.