إعادة استخدام 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 الأساسي يعمل بشكل سليم، وعادة ما يستمر ذلك لدقائق أو ساعات. إذا بدأت إعادة التشغيل في إرجاع تحديات أو عمليات حظر أو عمليات إعادة توجيه غير متوقعة، فمن المحتمل أنه تم تدوير منفذ الخروج أو قام الهدف بتحديث تصريح الوصول الخاص به.
خياران عند حدوث ذلك:
- استدعاء
/api/auto/جديد لنفس الـ URL. سيكتشف Auto جلسة عمل جديدة؛ تجاهل المعرفات السابقة. - استدعاء
/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، فقد يتم توجيه الطلب اللاحق عبر دولة مختلفة. احتفظ بالنطاق المحدد في كل استدعاء يحتاج إليه.
ذات صلة
- API Endpoints: مرجع المعلمات والاستجابات الكامل
- Smart Fetch (Auto): كيف يبني وضع Auto الجلسة التي تعيد تشغيلها
- المواقع المحمية: متى يفيد التثبيت ومتى يكون التدوير أفضل
- مشكلات شائعة: خطأ
no_eligible_proxyوأخطاء proxy الأخرى - أسباب استنفاذ محاولات طلب Proxy: قراءة
attemptReportعندما يفشل استدعاء Proxy