إعادة استخدام proxy عبر الـ requests

تعلم كيفية الاحتفاظ بنفس مخرج proxy عبر الطلبات اللاحقة، بحيث تصدر عمليات تصيير JavaScript، ونداءات API، وعمليات الجلب المجزأة إلى صفحات جميعها من نفس عنوان IP.

لماذا يجب إعادة استخدام proxy

عندما تصل إلى هدف لأول مرة، تختار FourA لك proxy يعمل. تتضمن كل response معرف proxy الذي تم استخدامه. قم بتمرير هذا المعرف مرة أخرى في الطلبات اللاحقة و:

  • تهبط الصفحات اللاحقة عبر نفس المخرج، وبالتالي تبقى cookies الخاصة بالجلسة وrate limits متسقة مع الهدف.
  • تبقى عملية الجلب المحددة ببلد داخل قائمة السماح الخاصة بك دون تحديد جديد.
  • يعيد endpoint POST /api/single/ الرخيص التشغيل عبر proxy دفعت بالفعل لاكتشافه، بتكلفة Single بدلا من تكلفة Proxy.

معرف proxy عبارة عن سلسلة base36 مبهمة (شيء مثل A1B2C3). وليس عنوان IP خام أبدا.

أين يوجد المعرف في response

Endpoint الحقل متى يكون موجودا
POST /api/auto/ session.proxy عندما يكون returnSession هو true (الافتراضي)
POST /api/single/ proxy (المستوى الأعلى) فقط عندما يقدم request حقلا proxy
POST /api/proxy/ proxy (المستوى الأعلى) دائما، عند النجاح
POST /api/browser/ proxy (المستوى الأعلى) فقط عندما يقدم request حقلا proxy

للحصول على مخرج جديد دون تثبيت مخرج معين، ابدأ بـ Auto أو Proxy. كلاهما يكتشف مخرجا يعمل ويرجع معرفه لك.

النمط 1: Auto يكتشف، Single يعيد التشغيل

الأفضل عندما يكون لديك هدف لا تعرفه بعد. يقوم Auto باجتياز السلم مرة واحدة، ثم يعيد Single استخدام الجلسة الفائزة لكل صفحة لاحقة.

import requests

API = "https://eu.api.foura.ai"
H = {"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"}

# Step 1: discover a working exit with Auto.
r = requests.post(f"{API}/api/auto/", headers=H, json={
    "url": "https://example.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
}).json()

session = r["session"]
proxy = session["proxy"]
user_agent = session["userAgent"]

# Step 2: paginate with Single, reusing the same exit and User-Agent.
for sku in ("43", "44", "45"):
    p = requests.post(f"{API}/api/single/", headers=H, json={
        "method": "GET",
        "url": f"https://example.com/product/{sku}",
        "proxy": proxy,
        "headers": [["User-Agent", user_agent]],
    }).json()
    print(sku, p["status"])

يكلف طلب Auto ما تنفقه سلسلته. يكلف كل طلب Single لاحق 2 رصيد (Single مع unblocker، وهو الافتراضي).

النمط 2: يكتشف proxy، ويعرض المتصفح من خلال نفس المخرج

استخدم هذا عندما يجب أن يرى الهدف بلد مخرج محدد ويحتاج المحتوى النهائي إلى JavaScript.

# Step 1: pick a country-scoped exit with Proxy.
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": ["FR", "GB"],
    "request": {"method": "GET", "url": "https://example.com/pricing"}
  }'
# Response includes: "proxy": "A1B2C3", "exitCountry": "FR"

# Step 2: render the JS-heavy page through THAT exit.
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://example.com/pricing",
    "proxy": "A1B2C3",
    "timeout_ms": 20000
  }'

لا تقم باستدعاء /api/proxy/ مرة أخرى لتحديث الاختيار. قد يختار الاستدعاء الجديد مخرجاً مختلفاً مما يحبط الغرض من التثبيت. إذا توقف المخرج المثبت عن العمل، فقم بتشغيل استدعاء /api/proxy/ جديد لاختيار مخرج جديد، ثم استمر في استخدامه.

النمط 3: تخطي مخرج محترق

إذا بدأ مخرج كان يعمل سابقاً في إرجاع عمليات حظر أو اختبارات CAPTCHA، فأخبر FourA بتجنبه في الاختيار التالي.

{
  "maxTries": 5,
  "ignoreProxies": ["A1B2C3"],
  "request": { "method": "GET", "url": "https://example.com/data" }
}

يتقبل ignoreProxies قائمة بمعرفات proxy من الاستجابات السابقة. وهو يعمل على /api/proxy/ و /api/auto/. يتم احترام القائمة في كل إعادة محاولة داخلية، لذا فإن استدعاء واحد مع ignoreProxies لا يختار أبدا المخارج المحترقة.

ما هي مدة بقاء الجلسة المثبتة نشطة

يعيش المخرج نفسه طالما أن الـ proxy الأساسي سليم، وعادة ما يستمر من دقائق إلى ساعات. إذا بدأت إعادة التشغيل في إرجاع تحديات، أو عمليات حظر، أو عمليات إعادة توجيه غير متوقعة، فمن المحتمل أن يكون المخرج قد تم تدويره أو أن الهدف قام بتحديث تصريحه.

يوجد خياران عندما يحدث ذلك:

  1. استدعاء /api/auto/ جديد لنفس الـ URL. سيكتشف Auto جلسة عمل جديدة؛ تجاهل المعرفات السابقة.
  2. استدعاء /api/proxy/ جديد مع ignoreProxies: ["<burned-id>"] إذا كنت ترغب في الاستمرار في التثبيت يدويا.

تنتهي صلاحية ملفات تعريف الارتباط (cookies) الخاصة بالجلسة من استجابة Auto أيضا وفقا للجدول الزمني الخاص بالهدف. تربط بعض المواقع التصريح لساعات؛ والبعض الآخر لدقائق. تعامل مع الجلسة كذاكرة تخزين مؤقت (cache)، وليس كـ token دائم.

الأخطاء الشائعة

  • إعادة استخدام معرف proxy عبر الحسابات. معرفات الـ proxy هي معرفات مرتبطة بكل استجابة. إن تمرير معرف من مفتاح API إلى مفتاح آخر لا يضمن توجيهه لنفس المخرج.
  • محاولة فك تشفير المعرف. السلسلة النصية base36 مبهمة. لا تقم بتحليلها، ولا تقم بإزالة الأحرف، ولا تحولها إلى أحرف صغيرة. قم بتمريرها كما هي حرفيا.
  • التثبيت من خلال مخرج مقيد المعدل (rate-limited). إذا كان الهدف يطبق rate limit لكل عنوان IP، فإن توجيه العديد من الطلبات عبر مخرج واحد سيؤدي إلى تشغيل عمليات الحظر بشكل أسرع. لأحمال العمل ذات الحجم الكبير، دع Auto أو Proxy يتناوبان عبر العديد من المخارج وقم بالتثبيت فقط عندما يتطلب الهدف ذلك بصدق.
  • تجاهل exitCountries في المتابعة. إذا قمت بتثبيت مخرج محدد النطاق ثم قمت باستدعاء Proxy مرة أخرى بدون exitCountries، فقد تصل المتابعة من خلال بلد مختلف. احتفظ بالنطاق في كل استدعاء يحتاج إليه.

ذات صلة

آخر تحديث: 1 أغسطس 2026