المواقع المحمية

تستخدم مواقع الويب الحديثة تقنيات متقدمة لاكتشاف الـ bot. يشرح هذا الدليل كيف يتيح لك FourA جلب الصفحة من المواقع التي تتحقق من هوية مرسل الطلب، وكيفية رفع معدل النجاح لديك.

كيف يعمل اكتشاف الـ Bot

تستخدم مواقع الويب عدة طبقات من الحماية:

  • سمعة الـ IP: يتم حظر مراكز البيانات وعناوين الـ proxy المعروفة
  • بصمة الاتصال الشبكي: لكل عميل HTTP توقيع مصافحة فريد يمكن للمواقع اكتشافه
  • بصمة المتصفح: يتحقق JavaScript من مؤشرات المتصفح الـ headless
  • التحليل السلوكي: أنماط الطلبات، التوقيت، ومسار التصفح
  • صفحات التحقق: مهمة بصرية يجب على الزائر إكمالها

يحدد الـ response اسم النظام الذي أجرى الفحص؛ تسرد صفحة Site checks هذه الأنظمة.

المسار الأسرع: Auto

إذا كنت لا تعرف مستوى الحماية بعد، فاستدعِ /api/auto/ مع سلسلة validate.data.accept فرعية لا توجد إلا في الصفحة الحقيقية. يتدرج Auto عبر مسار يراعي التكلفة (proxy مدوّر، ثم متصفح عبر proxy؛ ومع forceProxy: false، يبدأ أولا بفحص مباشر منخفض التكلفة ومعالجة مباشرة عبر المتصفح) ويتوقف عند أول خطوة تعيد response تقبله قواعدك. في الطلبات المتكررة لنفس الـ host، تتم إعادة استخدام session نشطة بدلا من ذلك، مما يجعل الطلب الثاني منخفض التكلفة.

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"]}}
  }'

يتعرف Auto على صفحات التحدي الشائعة ويواصل التقدم عند مواجهة إحداها. تلتقط سلسلة validate.data.accept الخاصة بك الحالات المتبقية: صفحة تحقق غير معروفة له، أو جدار تسجيل دخول، أو صفحة لا تحتوي على المحتوى الذي تحتاجه. راجع دليل Smart Fetch‏ للاطلاع على الشرح التوجيهي الكامل.

كيف يساعد FourA في كل طبقة

طلبات واقعية على مستوى بروتوكول الشبكة

يُصدر الـ endpoint الفردي (POST /api/single/) خصائص مصافحة تطابق متصفحًا حقيقيًا. تستجيب المواقع له بنفس الطريقة التي تستجيب بها لمتصفح، دون الأعباء التشغيلية لتشغيل متصفح فعلي.

قم بتفعيل unblocker لحقن headers متصفح واقعية أيضًا (User-Agent، وSec-Ch-Ua، و*Sec-Fetch-، وAccept-Encoding). يكون unblocker مفعلًا افتراضيًا؛ قم بتعيين false فقط لإرسال بصمة عميل بسيطة.

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

Real Browser Rendering

يشغل endpoint المتصفح (POST /api/browser/) مثيل متصفح Chrome كاملا. حيث يقوم بتشغيل JavaScript الخاص بالصفحة تماما كما يفعل متصفح الزائر. يكمل unblocker على Browser عمليات التحقق التي تطلبها الصفحة قبل تحميلها (مثل Turnstile وبوابات الحماية المماثلة)؛ اتركه مفعلا إلا إذا كنت تريد استلام صفحة التحدي كما وردت.

Proxy Rotation

يقوم endpoint الخاص بـ proxy وهو (POST /api/proxy/) بالتدوير التلقائي عبر proxies سكنية ومراكز بيانات. إذا تم حظر عنوان IP واحد، فإن المحاولة التالية تستخدم عنوانا مختلفا. استخدم ignoreProxies في طلب لاحق لتخطي نقاط الخروج التي تم استهلاكها بالفعل؛ واستخدم maxTries (القيمة الافتراضية 5، والحد الأقصى 90) للتحكم في عدد المحاولات.

Country-Scoped Exits

مرر exitCountries في /api/proxy/ لتقييد الاختيار على proxies التي تطابق دولتها الظاهرة للهدف قائمة السماح المحددة بدقة. تكون القيم عبارة عن رموز من حرفين (["CZ", "GB"])، وتتم إزالة المسافات الزائدة منها وتحويلها إلى أحرف كبيرة وإزالة التكرار. لا ترجع FourA أبدا إلى دولة غير مطلوبة كبديل احتياطي؛ وإذا لم يتوفر أي تطابق في المجمع الحالي، يُرجع الرد code: "no_eligible_proxy" مع النطاق الموحد في details.exitCountries لتتمكن من إعادة المحاولة لاحقا دون تخفيف متطلباتك. تحديد الدولة مشمول بدءا من خطة Startup وما فوقها. في أي خطة لا تتضمن ذلك، يتم رفض الطلب الذي يرسل exitCountries مع 403 و X-FourA-Limit: plan_limit_feature.

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 عند طلب تحديد النطاق (scoping). تحقق من انتمائه إلى قائمة المسموح بهم (allowlist) قبل الوثوق في الحمولة، ثم أعد استخدام معرف proxy المرتجع في أي استدعاء لاحق لـ Browser حتى يتم تصيير JavaScript عبر نفس نقطة الخروج.

FourA يوضح لك ما الذي أوقفك

لا يتعين عليك تخمين النظام الذي حظر الـ request. عندما يشن الهدف فحص بوت (bot check)، تذكر الاستجابة اسمه بوضوح.

  • يُرجع 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>"
  }
}

يترتب على ذلك قاعدتان:

  1. solved: false تعني أن الـ body قد يكون صفحة التحدي وليس الصفحة المطلوبة. لا تعرض FourA صفحة التحدي كمحتوى أبدا، لذا تحقق من الـ flag قبل إجراء الـ parsing.
  2. الحل يمنحك الـ clearance. عند وجود defense.cookie، أعد إرسالها كـ header من نوع Cookie على نفس منفذ الخروج مع نفس الـ User-Agent، وستتخطى الـ requests اللاحقة الفحص بالكامل.

تتعرف FourA على أنظمة الفحص الشائعة، بما في ذلك الفحوصات الخاصة بـ eBay وReddit وAmazon وGoogle Search. التعرف أوسع من التجاوز (clearing): النظام الذي يمكننا تحديده ولكن لا يمكننا تجاوزه يتم الإبلاغ عنه ولا يرفع تكلفة الـ request أبدا. عندما تكون الصفحة المستلمة هي صفحة الفحص الخاصة بذلك النظام، حتى مع رمز HTTP 200، لا يتم احتساب تكلفة الـ request ويحدد الـ header من نوع X-FourA-Check-Page اسمه. راجع فحوصات المواقع للاطلاع على كل حقل، والفرق الحالي بين الاكتشاف والتجاوز، ومثال على إعادة الإرسال.

الاستراتيجية حسب مستوى الحماية

حماية غير معروفة

استخدم auto. فهو يبدأ بالفحص منخفض التكلفة أولا ولا يصعّد الإجراءات إلا بالقدر الذي يفرضه الهدف، وبالتالي تدفع تكلفة الاستكشاف مرة واحدة لكل host.

حماية منخفضة (معظم المواقع)

استخدم الـ 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}'

متوسط: صفحة اختبار تحدي (challenge page) أو جدار حماية أساسي

استخدم browser 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}'

فائق: فحوصات السلوك وبصمة الجهاز (fingerprint)

استخدم 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
    }
  }'

بالنسبة لصفحات التحدي المتسلسلة ("Just a moment"، نقطة تحقق أمني) حيث تحتاج إلى الصفحة المعروضة بعد تجاوز التحدي، راجع MCP Recipes. توضح وصفة "Protected page: proxy first, browser when JavaScript is needed" آلية التسليم الدقيقة من proxy إلى المتصفح.

أفضل الممارسات

  1. ابدأ بالخيار auto للأهداف غير المعروفة. مرر قاعدة validate، ودع التدرج يختار المستوى الأقل تكلفة، ثم اقرأ meta.rung في الـ response لمعرفة المحرك الذي نجح. بمجرد معرفته، استدعِ ذلك المحرك مباشرة للطلبات المتكررة.

  2. أعد استخدام الجلسة الناجحة. بعد استدعاء auto، يمكن إعادة تشغيل session المرجع (proxy ID + cookies + userAgent) عبر /api/single/ أو /api/browser/ للصفحات اللاحقة على نفس المضيف، وذلك بتكلفة ذلك الـ endpoint الخاصة: رصيدان (2) على Single مع unblocker، و5 على Browser (10 لصفحة تفاعلية).

  3. احترم حدود المعدل (rate limits). حتى مع تدوير الـ proxy، فإن إرسال مئات الـ requests في الثانية إلى موقع واحد سيؤدي إلى تفعيل الاكتشاف السلوكي. باعد بين طلباتك بفارق ثانية إلى ثانيتين (1-2) على الأقل.

  4. أبقِ unblocker مفعلا. في Single وProxy، يرسل unblocker: true (الافتراضي) بصمة متصفح وترويسات واقعية. وفي Browser يقوم بتفعيل أداة حل التحديات. قم بتعطيله فقط عندما تحتاج تحديدا إلى بصمة عميل عادية أو صفحة تحدٍ خام.

  5. راقب معدلات النجاح. تحقق من مقاييس لوحة التحكم لتتبع معدل النجاح بمرور الوقت. يشير الانخفاض المفاجئ عادة إلى أن الموقع المستهدف قد قام بتحديث نظام الحماية لديه.

  6. تخطَّ نقاط الخروج المحظورة. إذا أرجع استدعاء /api/proxy/ أو /api/auto/ معرف proxy بدأ بالفشل لاحقا، فمرره في ignoreProxies في الاستدعاء التالي ليختار FourA نقطة خروج مختلفة.

  7. اقرأ defense قبل إعادة المحاولة. يوضح لك اسم المزود ما إذا كان من المجدي تجربة ملف متصفح مختلف، أو ما إذا كنت بحاجة إلى عرض كامل (render)، أو ما إذا كان الفحص لا يمكن تجاوزه دون خدمة حل متخصصة.

  8. غيّر المتصفح الذي تقدمه. تقبل بعض الأهداف متصفحا وترفض آخر. قم بتعيين browser أو os أو version في Single وProxy، واقرأ GET /api/profiles للاطلاع على الدليل الحالي. التفاصيل متوفرة في مرجع endpoint.

الحدود

تتطلب بعض السيناريوهات معالجة إضافية خارج الـ API:

  • المحتوى المحمي بتسجيل الدخول: لا يدير FourA عمليات تسجيل الدخول طويلة الأمد نيابة عنك. يقبل endpoint المتصفح cookies لكل طلب؛ قم بتمرير cookies الخاصة بجلستك بنفسك.
  • مهام التحقق التفاعلية: يتعرف FourA على المهام المرئية ويبلغ عنها في defense.present، لكنه لا يكملها. تتم معالجة Turnstile بواسطة Browser.
  • المحتوى المقتصر على دول معينة: استخدم exitCountries في /api/proxy/ لتثبيت الاختيار على البلدان المسموح بها. المواقع التي تفرض قيودا إضافية حسب ISP أو ASN (بعض مواقع المراهنات المرخصة محليا، وبعض الخدمات الحكومية) قد تظل تحظر نقاط الخروج السكنية العامة؛ يقوم الـ request بإرجاع no_eligible_proxy عندما لا يحتوي الـ pool الحالي على مخرج مطابق.
  • المواقع ذات القيود القانونية: تأكد دائما من توافق عملية جمع البيانات الخاصة بك مع شروط خدمة الموقع المستهدف والقوانين المعمول بها.

الخطوات التالية

  • Smart Fetch (Auto): نظرة متعمقة على /api/auto/
  • Choosing the Right Endpoint: دليل اتخاذ القرار لاختيار endpoints
  • Common Issues: معالجة أخطاء 403 وصفحات التحقق
  • API Endpoints: مرجع المعلمات الكامل متضمنا exitCountries
  • Site checks: حقل defense، وقائمة الأنظمة، وإعادة استخدام الترخيص
  • MCP Recipes: قوالب سير العمل بما في ذلك سلسلة proxy-first-then-browser
آخر تحديث: 27 سبتمبر 2026