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

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

لماذا تعيد استخدام Proxy

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

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

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

أين يظهر المعرف في الاستجابة

Endpoint الحقل متى يظهر
POST /api/auto/ session.proxy عندما تكون قيمة returnSession هي true (الافتراضي)
POST /api/single/ proxy (المستوى الأعلى) فقط عندما يقدم الطلب حقل proxy
POST /api/proxy/ proxy (المستوى الأعلى) دائما، عند النجاح
POST /api/browser/ proxy (المستوى الأعلى) فقط عندما يقدم الطلب حقل 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 على ما يستهلكه مسار الـ ladder الخاص به. ويكلف كل استدعاء Single لاحق 2 من الرصيد (Single مع unblocker، وهو الإعداد الافتراضي).

النمط 2: يكتشف Proxy، ويعرض Browser عبر نفس نقطة الخروج

استخدم هذا النمط عندما يتطلب الهدف رؤية بلد خروج محدد ويحتاج المحتوى النهائي إلى 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: تخطي المخرج المحظور

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

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

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

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

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

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

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

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

عندما يتعذر تثبيت المعرف

يمكن إرجاع ثلاثة أخطاء 400 من قيمة proxy، ولكل منها معنى مختلف:

Error What happened What to do
Invalid proxy format القيمة ليست معرفاً صادراً عن FourA. يقع عنوان الـ proxy الخام هنا. أرسل السلسلة غير الشفافة من الاستجابة حرفياً.
Proxy not found تم فك تشفير المعرف، لكنه لم يعد يشير إلى منفذ خروج نشط. خذ منفذ خروج جديداً من استدعاء Auto أو Proxy جديد.
Managed exit: this proxy id cannot be pinned to a request المعرف هو منفذ خروج مميز، وتم استنفاد حركة مرور الخطة المميزة لهذه الفترة، أو أن خطتك لا تتضمن منافذ خروج مميزة. قم بتشغيل الاستدعاء عبر POST /api/proxy/ وخذ أياً كان منفذ الخروج الذي يختاره، أو أضف حركة مرور مميزة وقم بتثبيته مجدداً.

يرجع الخطأ الثالث من معرف منحه لك استدعاء ناجح، لذا قد تواجهه دون أن ترتكب أي خطأ. تعامل معه بالطريقة التي تتعامل بها مع جلسة منتهية الصلاحية: تراجع إلى استدعاء اكتشاف جديد بدلاً من إعادة محاولة نفس المعرف.

أخطاء شائعة

  • إعادة استخدام معرّف proxy عبر حسابات متعددة. لا تشارك المعرّفات بين الحسابات: فالمعرّف الذي يمكن لحساب تثبيته قد يُرفض لحساب آخر، على سبيل المثال نقطة خروج premium على خطة لا تتضمن حركة مرور premium.
  • محاولة فك تشفير المعرّف. سلسلة base36 النصية غير شفافة (opaque). لا تقم بتحليلها، ولا تحذف منها محارف، ولا تحولها إلى أحرف صغيرة. أعد تمريرها كما هي تماما.
  • التثبيت عبر نقطة خروج مقيدة بمعدل الطلبات (rate-limited). إذا كان الهدف يطبق rate limit لكل عنوان IP، فإن توجيه العديد من الطلبات عبر نقطة خروج واحدة سيؤدي إلى تفعيل الحظر بشكل أسرع. بالنسبة لأحمال العمل ذات الحجم الكبير، دع Auto أو Proxy يتنقلان بين عدة نقاط خروج، وثبّت فقط عندما يتطلب الهدف ذلك فعليا.
  • تثبيت نقطة خروج premium عن غير قصد. المعرّف الناتج عن استدعاء تمت خدمته عبر نقطة خروج premium (exitClass: "premium" على Proxy) يثبت نقطة الخروج premium تلك. كل إعادة إرسال عبرها تُحسب ضمن رصيد حركة مرور premium الخاصة بك، وتتضمن الاستجابة X-FourA-Exit-Class: premium.
  • إرسال exitCountries على خطة بدون استهداف جغرافي. تحديد النطاق الجغرافي حسب الدولة مشمول بدءا من خطة Startup فما فوق. في الخطط التي لا تتضمن ذلك، يتم رفض الاستدعاء الذي يرسل exitCountries مع خطأ 403 و X-FourA-Limit: plan_limit_feature.
  • تجاهل exitCountries في الطلب اللاحق. إذا قمت بتثبيت نقطة خروج محددة النطاق ثم استدعيت Proxy مرة أخرى بدون exitCountries، فقد يتم توجيه الطلب اللاحق عبر دولة مختلفة. احتفظ بالنطاق المحدد في كل استدعاء يحتاج إليه.

ذات صلة

آخر تحديث: 27 سبتمبر 2026