التعامل مع حماية مكافحة الروبوتات
تستخدم المواقع الحديثة أنظمة متقدمة لاكتشاف الروبوتات. يوضح هذا الدليل كيف يتعامل FourA مع أنظمة مكافحة الروبوتات وكيفية زيادة معدل نجاحك.
كيف يعمل اكتشاف الروبوتات
تستخدم المواقع طبقات حماية متعددة:
- سمعة IP: يتم حظر مراكز البيانات وعناوين proxy المعروفة
- بصمة الشبكة: يمتلك كل عميل HTTP توقيع مصافحة فريد يمكن للمواقع اكتشافه
- بصمة المتصفح: يتحقق JavaScript من مؤشرات المتصفح من نوع headless
- التحليل السلوكي: أنماط request والتوقيت وتدفق التنقل
- CAPTCHAs: تحديات مرئية كخط دفاع أخير
يشمل موفرو خدمات مكافحة الروبوتات الشائعون Cloudflare و DataDome و PerimeterX و Akamai Bot Manager.
المسار الأسرع: Auto
إذا كنت لا تعرف مستوى الحماية بعد، قم باستدعاء /api/auto/ مع سلسلة فرعية validate.data.accept تحملها الصفحة الحقيقية فقط. يتنقل Auto عبر تسلسل يراعي التكلفة (فحص رخيص، proxy متناوب، تصيير متصفح، متصفح عبر proxy) ويتوقف عند الخطوة الأولى التي تعيد response تقبله قواعدك. عند تكرار الاستدعاءات لنفس المضيف، يتم إعادة تشغيل جلسة نشطة بدلا من ذلك، مما يجعل الطلب الثاني رخيصا.
curl -X POST https://eu.api.foura.ai/api/auto/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://protected-site.com/product/42",
"validate": {"data": {"accept": ["Add to cart"]}}
}'
بدون validate.data.accept، لا يمكن للوضع التلقائي التمييز بين استجابة 200 حقيقية وصفحة تحدي بينية تُرجع بالحالة 200، وقد يُرجع التحدي كاستجابة ناجحة. راجع دليل Smart Fetch للحصول على الشرح التفصيلي.
كيف تساعد FourA في كل طبقة
طلبات واقعية على مستوى الشبكة
تُصدر نقطة النهاية الفردية (POST /api/single/) خصائص مصافحة تتطابق مع متصفح حقيقي. يجتاز هذا معظم فحوصات مستوى الشبكة الشائعة دون العبء الإضافي لتشغيل متصفح كامل.
قم بتمكين unblocker لحقن ترويسات متصفح واقعية أيضا (User-Agent، Sec-Ch-Ua، Sec-Fetch-*، Accept-Encoding). يتم تفعيل unblocker بشكل افتراضي، قم بتعيين false فقط لإرسال توقيع عميل عادي.
{
"method": "GET",
"url": "https://protected-site.com/data",
"unblocker": true
}
العرض الفعلي للمتصفح
يقوم الـ endpoint الخاص بالمتصفح (POST /api/browser/) بتشغيل نسخة متصفح Chrome كاملة. بالإضافة إلى تصحيحات مكافحة الكشف، فإنه يجتاز معظم فحوصات البصمة المستندة إلى JavaScript. يؤدي unblocker في المتصفح إلى تشغيل حل الدفاع التلقائي (تجاوز Turnstile والبوابات المشابهة)؛ اتركه قيد التشغيل ما لم تكن تريد استعادة صفحة التحدي الأولية.
تدوير الـ proxy
يقوم الـ endpoint الخاص بالـ proxy (POST /api/proxy/) بالتدوير تلقائيا عبر proxies سكنية ومراكز بيانات. إذا تم حظر عنوان IP واحد، فإن المحاولة التالية تستخدم عنوانا مختلفا. استخدم ignoreProxies في استدعاء متابعة لتخطي المخارج التي استنفدتها بالفعل؛ واستخدم maxTries (الافتراضي 5، الحد الأقصى 90) للتحكم في مدى قوة عمله.
مخارج محددة النطاق حسب البلد
قم بتمرير exitCountries في /api/proxy/ لتقييد الاختيار على proxies التي يتطابق بلدها الظاهر للهدف مع قائمة سماح صارمة. القيم عبارة عن رموز مكونة من حرفين (["CZ", "GB"])، يتم قصها وتحويلها إلى أحرف كبيرة وإزالة التكرارات منها. لا تتراجع FourA أبدا إلى بلد غير مطلوب؛ إذا لم يكن هناك تطابق في المجموعة الحالية، فإن الـ response يعيد code: "no_eligible_proxy" مع النطاق الموحد في details.exitCountries حتى تتمكن من إعادة المحاولة لاحقا دون تخفيف المتطلبات.
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 5,
"exitCountries": ["CZ", "GB"],
"request": {"method": "GET", "url": "https://target.example/pricing"}
}'
يتضمن الرد exitCountry عند طلب تحديد النطاق. تحقق من انتمائه إلى قائمة السماح الخاصة بك قبل الوثوق بالبيانات، ثم أعد استخدام معرف proxy المُرجع في أي استدعاء Browser لاحق حتى يتم تصيير JavaScript من خلال نفس المخرج.
FourA يخبرك بما أوقفك
لا داعي لتخمين النظام الذي حظر request. عندما ينفذ الهدف فحص الروبوت، فإن الرد يحدد اسمه.
- يقوم
POST /api/single/وPOST /api/proxy/بإرجاع كائنdefense: يمثلdefense.vendorالنظام، ويوضحdefense.solvedما إذا كان قد تم اجتياز الفحص، ويسردdefense.presentكل ما تم التعرف عليه في هذا الرد. - يقوم
POST /api/browser/بإرجاعdefenseSolvedبالإضافة إلىdefenses.presentوdefenses.cleared.
{
"status": 200,
"data": "<!doctype html>...",
"defense": {
"vendor": "sgcaptcha",
"solved": true,
"present": ["sgcaptcha"],
"cookie": "_I_=<clearance>"
}
}
تتبع ذلك قاعدتان:
- يعني
solved: falseأن المحتوى قد يكون التحدي، وليس الصفحة. لا تعرض FourA أبدًا تحديًا غير محلول على أنه محتوى، لذا تحقق من العلامة قبل التحليل. - الحل يمنحك التصريح. عندما يكون
defense.cookieموجودًا، أرسله مرة أخرى كـCookieheader على نفس المخرج بنفس الـ User-Agent وستتخطى الطلبات اللاحقة الفحص تمامًا.
تتعرف FourA على Cloudflare و SiteGround و DataDome و PerimeterX و Akamai و Incapsula و AWS WAF و hCaptcha و reCAPTCHA وتحدي eBay الخاص. التعرف أوسع من التجاوز: يتم الإبلاغ عن النظام الذي يمكننا تسميته ولكن لا يمكننا تجاوزه، ولا يغير أبدًا من تكلفة الـ request. انظر Anti-Bot Defenses لمعرفة كل حقل، والتقسيم الحالي بين التجاوز والاكتشاف، ومثال على إعادة التشغيل.
الاستراتيجية حسب مستوى الحماية
حماية غير معروفة
استخدم auto. يقوم بالفحص بتكلفة منخفضة أولاً ولا يصعد إلا بالقدر الذي يفرضه الهدف، لذلك تدفع مقابل الاكتشاف مرة واحدة لكل مضيف.
حماية منخفضة (معظم المواقع)
استخدم endpoint الفردي مع unblocker. المطابقة على مستوى الشبكة كافية.
curl -X POST https://eu.api.foura.ai/api/single/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'
حماية متوسطة (Cloudflare، WAF أساسي)
استخدم endpoint الخاص بالمتصفح لتجاوز تحديات JavaScript:
curl -X POST https://eu.api.foura.ai/api/browser/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://protected-site.com/data", "timeout_ms": 15000}'
حماية عالية (DataDome, PerimeterX)
استخدم الـ proxy endpoint مع محاولات إعادة متعددة:
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 10,
"request": {
"method": "GET",
"url": "https://heavily-protected.com/prices",
"unblocker": true
}
}'
بالنسبة لتحديات WAF المتسلسلة (مثل Cloudflare "Just a moment"، أو Vercel Security Checkpoint، أو Akamai Bot Manager) حيث تحتاج إلى الصفحة المعروضة بعد اجتياز التحدي، راجع MCP Recipes. توضح وصفة "Protected page: proxy first, browser when JavaScript is needed" عملية التسليم الدقيقة من الوكيل (proxy) ثم إلى المتصفح (browser).
أفضل الممارسات
ابدأ باستخدام auto للأهداف غير المعروفة. مرر قاعدة
validate، واترك النظام يختار الخيار الأقل تكلفة، ثم اقرأmeta.rungفي الاستجابة (response) لمعرفة المحرك الذي نجح. بمجرد معرفتك، اتصل بهذا المحرك مباشرة للزيارات المتكررة.أعد استخدام الجلسة الفائزة. بعد استدعاء auto، يمكن إعادة تشغيل
sessionالمُرجعة (معرف proxy + ملفات cookies + userAgent) من خلال/api/single/أو/api/browser/لصفحات المتابعة على نفس المضيف، بسعر Single.احترم حدود المعدل (rate limits). حتى مع تدوير الوكيل (proxy rotation)، فإن إرسال مئات الطلبات (requests) في الثانية إلى موقع واحد سيؤدي إلى تفعيل الاكتشاف السلوكي. باعد بين طلباتك بمدة تتراوح من 1 إلى 2 ثانية على الأقل.
أبقِ
unblockerمفعلاً. بالنسبة لطلبات Single، و Proxy، و Browser، يقومunblocker: true(الافتراضي) بحقن ترويسات (headers) متصفح واقعية تلقائيًا. قم بإيقاف تشغيله فقط عندما تحتاج تحديدًا إلى توقيع عميل عادي أو صفحة تحدي خام.راقب معدلات النجاح. تحقق من مقاييس Dashboard لتتبع معدل نجاحك بمرور الوقت. عادةً ما يعني الانخفاض المفاجئ أن الموقع المستهدف قام بتحديث حمايته.
تخطى المخارج المحترقة. إذا أرجع استدعاء
/api/proxy/أو/api/auto/معرف وكيل (proxy ID) بدأ يفشل لاحقًا، فمرره فيignoreProxiesفي الاستدعاء التالي لكي تختار FourA مخرجًا مختلفًا.اقرأ
defenseقبل إعادة المحاولة. يخبرك اسم المورد ما إذا كان ملف تعريف متصفح مختلف يستحق المحاولة، أو ما إذا كنت بحاجة إلى عرض كامل، أو ما إذا كان الفحص من النوع الذي لا يمكن لأحد اجتيازه بدون خدمة حل.غيّر المتصفح الذي تقدمه. تقبل بعض الأهداف متصفحًا وترفض آخر. اضبط
browser، أوos، أوversionفي Single و Proxy، واقرأGET /api/profilesلمعرفة الكتالوج الحالي. التفاصيل في endpoint reference.
ما لا يمكن لـ FourA تجاوزه
تتطلب بعض السيناريوهات معالجة إضافية خارج API:
- المحتوى المحمي بتسجيل الدخول: لا تدير FourA عمليات تسجيل الدخول طويلة الأمد نيابة عنك. تقبل نقطة النهاية (endpoint) للمتصفح
cookiesلكل طلب؛ قم بتمرير ملفات تعريف الارتباط (cookies) الخاصة بجلستك بنفسك. - اختبارات CAPTCHA التفاعلية: تتطلب reCAPTCHA و hCaptcha خدمة حل. تتعرف FourA عليهما وتبلغ عنهما في
defense.present، لكنها لا تقوم بمسحهما. يتم التعامل مع Turnstile بواسطة المتصفح. - المحتوى المقيد جغرافيا: استخدم
exitCountriesعلى/api/proxy/لتثبيت التحديد على البلدان المسموح بها. المواقع التي تفرض قيودا إضافية بواسطة ISP أو ASN (مثل بعض وكلاء المراهنات المرخصين في بلدان معينة أو خدمات حكومية معينة) قد تستمر في حظر المخارج السكنية العامة؛ يُرجع الطلبno_eligible_proxyعندما لا تحتوي المجموعة الحالية على مخرج مطابق. - المواقع ذات القيود القانونية: تأكد دائما من توافق جمع البيانات الخاص بك مع شروط خدمة الموقع المستهدف والقوانين المعمول بها.
الخطوات التالية
- Smart Fetch (Auto): نظرة متعمقة على
/api/auto/ - Choosing the Right Endpoint: دليل اتخاذ القرار لنقاط النهاية
- Common Issues: إصلاح أخطاء 403 وحظر captcha
- API Endpoints: مرجع المعلمات الكامل بما في ذلك
exitCountries - Anti-Bot Defenses: الحقل
defenseوقائمة الموردين وإعادة تشغيل التخليص (clearance replay) - MCP Recipes: قوالب مسار العمل بما في ذلك سلسلة proxy-first-then-browser