أبقِ مفتاح CAPTCHA API خارج JavaScript في المتصفح

بقلم solvethreeمدة القراءة: 4 دقيقة

احتفظ بمفتاح API لمساحة عمل solvethree على خادمك. يتولى المتصفح النموذج وجلسة التطبيق؛ وتتولى واجهتك الخلفية التي تتطلب المصادقة إنشاء المهام واسترجاعها. لا تستبدل مفتاحًا تسرّب من المتصفح بمسار خلفي غير مقيّد يمكن لأي شخص استخدامه لإنفاق رصيد مساحة عملك.

في هذه الصفحة

NEXT_PUBLIC ليس المكان المناسب لمفتاح مساحة العمل

يصادق مفتاح مساحة العمل على الطلبات المرسلة إلى solvethree باستخدام Authorization: Bearer. ووضعه في JavaScript المتصفح، بما في ذلك عبر متغير بيئة عام مضمن في الحزمة مثل NEXT_PUBLIC_SOLVETHREE_API_KEY، يكشف بيانات الاعتماد هذه للمتصفح. ولا يؤدي تمويه القيمة أو إضافتها فقط عند إجراء طلب fetch مباشر إلى جعلها سرية.

احتفظ بـ SOLVETHREE_API_KEY في إعدادات خاصة بالخادم، واستخدمه فقط من شيفرة خادم موثوقة. يجب أن يستدعي المتصفح مسار تطبيقك، وألا يستدعي مطلقًا API مهام solvethree باستخدام مفتاح مساحة عملك.

احتفظ بمدخلات المهمة في دالة مساعدة خاصة بالخادم

دالة مساعدة للخادم فقط · احتفظ ببيانات اعتماد مساحة العمل هنا
// Import only from trusted server code. Your application authenticates the caller.
import { Solvethree } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
export async function createCaptchaForLogin(requestId) {
  return client.createTask({
    site: process.env.CAPTCHA_SITE,
    action: 'login',
    proxy: process.env.SOLVETHREE_PROXY,
    requestId,
  }, { waitMs: 0, signal: AbortSignal.timeout(20000) });
}
// The browser calls your authenticated application route, not the solver API.
// Save the returned task ID; retrieve that ID from server code with getTask.
// Submit a ready token using the proxy/browser identity attached to that solve.
// Merely moving the key server-side does not configure the browser's proxy.

اضبط SOLVETHREE_API_KEY وCAPTCHA_SITE وSOLVETHREE_PROXY على الخادم. يمثّل CAPTCHA_SITE اسم المضيف المستهدف، وليس عنوان URL كاملًا. تثبّت الدالة المساعدة الإجراء على login وتوفّر وكيلًا واحدًا؛ ولا يختار المتصفح أيًا من هذه المدخلات.

أعدّ ملف تعريف نشطًا لاسم المضيف هذا في مساحة العمل قبل استدعاء الدالة المساعدة. إرسال site وaction لا ينشئ ملف تعريف. راجع إعداد ملف تعريف الموقع.

يطلب waitMs: 0 إنشاء المهمة دون انتظار اكتمال الحل. احفظ معرّف المهمة المُعاد واسترجعها من شيفرة الخادم باستخدام getTask. تحدّ إشارة الإلغاء بعد 20 ثانية في الدالة المساعدة من مدة ذلك الطلب؛ وهي ليست ضمانًا بأن الحل سيكتمل خلال 20 ثانية.

أتِح عملية تسجيل دخول، لا خدمة حل عامة

الدالة المساعدة ليست بحد ذاتها مسارًا يتطلب المصادقة. أضف عمليات التحقق التالية حولها قبل قبول طلبات المتصفح:

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

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

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

استعد المهمة الحالية قبل إنشاء أخرى

  • احتفظ بقيمة requestId واحدة لمحاولة تسجيل الدخول المنطقية. تحقّق من مطابقتها للتنسيق الموثّق: من 1 إلى 64 حرفًا من حروف ASCII أو الأرقام أو الشرطات السفلية أو الشرطات. اربطها بمحاولة المستدعي؛ فهي ليست بيانات اعتماد للمصادقة.
  • إذا انتهت مهلة الإنشاء، فاحتفظ بقيمة requestId تلك ومدخلات المهمة الأصلية. يؤدي تكرار الطلب نفسه بالمعرّف نفسه إلى استعادة المهمة الحالية. أما تغيير المدخلات مع إعادة استخدام المعرّف فيؤدي إلى تعارض.
  • عالج استجابات HTTP غير الناجحة قبل تفسير حمولة النجاح. بالنسبة إلى المهمة المسترجعة، تعني pending وsolving مواصلة الاستقصاء؛ وتعني ready أن حلًا متاح.

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

حدّد العميل الذي سيرسل الرمز

قبل إعادة رمز جاهز إلى المتصفح، حدّد أين سيُنفّذ الطلب إلى الجهة المستهدفة. يجب أن يستخدم العميل المُرسِل الهوية المُعادة في userAgent وsecChUa والوكيل الذي نجح في ذلك الحل. نقل مفتاح مساحة العمل إلى واجهة خلفية لا يضبط وكيل المتصفح.

إذا لم يستطع المتصفح الإرسال بهذه الإعدادات، فإن تسليمه الرمز وحده لا يشكّل تكاملًا كاملًا. استخدم عميل إرسال يمكنك ضبطه باتساق، دون خلطه بهوية جلسة أخرى أو وكيلها أو عنوان URL المستهدف الخاص بها. تعني جاهزية المهمة أن solvethree ولّد حلًا، لا أن الجهة المستهدفة قبلت الطلب اللاحق.

شغّل مهمتك الأولى.

ابدأ برصيد قدره $5 في مساحة العمل.

إنشاء مساحة عمل
أبقِ مفتاح CAPTCHA API خارج JavaScript في المتصفح · solvethree