إرسال حل CAPTCHA باستخدام Axios
نفّذ الحل باستخدام حزمة SDK لـ Node.js، ثم استخدم Axios لطلب الموقع المستهدف. مرّر الوكيل الناجح إلى HttpsProxyAgent واضبط proxy: false حتى لا يطبّق Axios إعدادات وكيل متعارضة. يظل تطبيقك مسؤولًا عن توفير حقول النموذج وقيمة CSRF وملفات تعريف ارتباط الجلسة.
في هذه الصفحة
ثبّت حزمة SDK واضبط إعداداتها
استخدم Node.js 22+ وثبّت التبعيات باستخدام npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz. تُوزَّع حزمة SDK الرسمية عبر عنوان URL لأرشيف tarball هذا؛ ولا تستبدل به حزمة مفترضة من سجل npm.
- اضبط
SOLVETHREE_API_KEYعلى مفتاح API لمساحة عملك. شغّل هذا الكود على الخادم واحتفظ بالمفتاح هناك. - اضبط
SOLVETHREE_PROXYعلى عنوان URL للوكيل المستخدم للحل والإرسال معًا. - أنشئ ملف تعريف نشطًا للموقع المستهدف في لوحة التحكم قبل الحل. توفير اسم مضيف وإجراء لا ينشئ هذا الملف. راجع إعداد ملف تعريف الموقع.
- استبدل اسم المضيف والإجراء وعنوان URL لتسجيل الدخول في المثال بقيم تطبيقك. الحقل
siteهو اسم مضيف، وليس عنوان URL كاملًا؛ ويجب أن يطابق الإجراء العملية المستهدفة.
نفّذ الحل، ثم أرسل عبر الوكيل الناجح
تنشئ client.solve() المهمة وتستعلم عنها دوريًا حتى تصبح جاهزة أو تطرح استثناءً. ثم يختار المثال الوكيل الأصلي الناجح باستخدام successfulProxy(input, result) ويستخدمه لطلب Axios.
// npm install axios https-proxy-agent and the official solvethree SDK tarball.
import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { Solvethree, successfulProxy } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const input = { site: 'accounts.example.com', action: 'login', proxy: process.env.SOLVETHREE_PROXY };
const result = await client.solve(input);
const proxy = successfulProxy(input, result);
if (!proxy) throw new Error('No valid successful proxy');
const agent = new HttpsProxyAgent(proxy);
try {
const response = await axios.post('https://accounts.example.com/login',
new URLSearchParams({ 'g-recaptcha-response': result.solution.token }).toString(), {
httpsAgent: agent, proxy: false, maxRedirects: 0, timeout: 30000,
headers: { 'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': result.solution.userAgent, 'sec-ch-ua': result.solution.secChUa },
validateStatus: () => true,
});
console.log('Application HTTP status:', response.status);
// Add the application's real form fields, CSRF value and session cookies.
} finally { agent.destroy(); }يوجّه httpsAgent طلب HTTPS إلى الموقع المستهدف عبر الوكيل المحدد. ويعطّل proxy: false إعدادات الوكيل المنفصلة في Axios، تاركًا التحكم لوكيل الاتصال. يضبط هذا طلب الموقع المستهدف، وليس اتصال حزمة SDK بواجهة API الخاصة بـ solvethree. يُدمَّر وكيل الاتصال عند اكتمال الطلب أو فشله.
احتفظ بقيمتَي userAgent وsecChUa المُعادتين مع ذلك الوكيل. لا تستبدلهما بترويسات متصفح غير مرتبطة عند إرسال الرمز.
افحص استجابة التطبيق
تبلغ مهلة استدعاء Axios 30 ثانية، ولا يتبع عمليات إعادة التوجيه. ولأن validateStatus يقبل جميع حالات HTTP، افحص response.status ومتن الاستجابة بنفسك؛ فلن تؤدي استجابة خطأ HTTP إلى طرح استثناء لمجرد حالتها.
تعني جاهزية المهمة أنه تم توليد حل، لا أن الجهة المستهدفة قبلته. تحقّق من شرط النجاح الفعلي للتطبيق بدلًا من اعتبار حالة HTTP المسجّلة دليلًا على نجاح تسجيل الدخول.
المصادر ومرجع API
شغّل مهمتك الأولى.
ابدأ برصيد قدره $5 في مساحة العمل.