استخدام وكيل المستخدم وتلميحات العميل المُعادة
استخدم هوية المتصفح المُعادة في الطلب الذي يرسل الحل إلى الموقع المستهدف. اضبط كلتا الترويستين من الحل وأرسل ذلك الطلب عبر الوكيل الذي نجح أثناء الحل.
في هذه الصفحة
استبدل ترويسات المتصفح الحالية
| ترويسة HTTP | القيمة من الحل الجاهز |
|---|---|
| User-Agent | solution.userAgent |
| sec-ch-ua | solution.secChUa |
لا تحتفظ بقيمة عشوائية لوكيل المستخدم من أداة استخلاص البيانات أو من جلسة HTTP حالية. فهذا يستبدل هوية المتصفح المُعادة مع الحل بهوية لا صلة لها بها. يؤدي تحديث sec-ch-ua وحدها إلى أن تصف الترويستان متصفحين مختلفين.
استبدل القيم القديمة بدلاً من إلحاق ترويسات مكررة. تحقق من الإعدادات الافتراضية للجلسة أو البرمجيات الوسيطة لبناء الطلبات التي قد تستبدل هذه القيم قبل إرسال الطلب.
استخدم الوكيل الذي نجح
ابدأ بنتيجة ready؛ فلا تحتوي pending وsolving على حل قابل للاستخدام. تنتظر الدالة solve في SDK نتيجة جاهزة أو تطرح خطأ.
للمهمة المرسلة باستخدام proxy واحد، أعد استخدام ذلك الوكيل لطلب الوجهة. إذا قدمت proxyCandidates، فحدد الوكيل الناجح باستخدام successful_proxy(original_task, ready_result) في Python أو successfulProxy(originalTask, readyResult) في JavaScript. لا تستخدم المرشح الأول ببساطة.
تقرأ الأمثلة أدناه وكيل الطلب الصادر من الحقل proxy في request. للمهمة المعتمدة على المرشحين، ضع القيمة التي حددتها الدالة المساعدة هناك قبل إرسال الطلب. راجع اختيار الوكيل المرشح لمعرفة هذا الإعداد.
إرسال طلب الوجهة في Python أو Node.js
ترسل هذه الأمثلة رمز reCAPTCHA v3 Enterprise. في Python، يمثل solution قاموس الحل في النتيجة الجاهزة. في Node.js، يمثل result المهمة الجاهزة. يضبط كلا المثالين الترويسات المُعادة صراحةً ويوجّه الطلب عبر الوكيل المحدد.
# Continue after client.solve(). Install requests separately: pip install requests.
import requests
# This example endpoint accepts the standard reCAPTCHA form field.
# Use your application's real URL, form fields, CSRF token and session.
response = requests.post(
"https://accounts.example.com/login",
data={"g-recaptcha-response": solution["token"]},
headers={
"User-Agent": solution["userAgent"],
"sec-ch-ua": solution["secChUa"],
},
proxies={"http": request["proxy"], "https": request["proxy"]},
timeout=30,
allow_redirects=False,
)
# Inspect the application's response to determine whether it accepted the request.
print("Application HTTP status:", response.status_code)// Continue after client.solve(). Install undici separately: npm install undici@7.
import { fetch, ProxyAgent } from 'undici';
const dispatcher = new ProxyAgent(request.proxy);
try {
// Replace the URL and form fields with your application's contract.
const response = await fetch('https://accounts.example.com/login', {
method: 'POST',
dispatcher,
redirect: 'manual',
headers: {
'user-agent': result.solution.userAgent,
'sec-ch-ua': result.solution.secChUa,
},
body: new URLSearchParams({
'g-recaptcha-response': result.solution.token,
}),
signal: AbortSignal.timeout(30_000),
});
console.log('Application HTTP status:', response.status);
await response.arrayBuffer();
} finally {
await dispatcher.close();
}استبدل عنوان URL لتسجيل الدخول في المثال بعنوان URL المقصود للوجهة، واستخدم حقول النموذج الفعلية لذلك التطبيق ورمز CSRF والجلسة. تفترض الأمثلة أن التطبيق يقبل الرمز في g-recaptcha-response؛ ويجب وضع ترويسات المتصفح المُعادة في ترويسات HTTP، لا في متن النموذج.
إذا رفض الموقع المستهدف الطلب، فافحص ما أرسله عميل HTTP فعليًا: قيمة الرمز وكلتا ترويستَي المتصفح والوكيل وعنوان URL للوجهة. تعني المهمة بحالة ready أنه تم إنشاء حل، لا أن الموقع المستهدف قبل ما أرسلته. تُعد حالة HTTP للتطبيق المطبوعة نقطة بداية؛ تحقق من استجابة التطبيق لمعرفة نتيجة النجاح أو الفشل الفعلية.
المصادر ومرجع API
شغّل مهمتك الأولى.
ابدأ برصيد قدره $5 في مساحة العمل.