अपनी CAPTCHA API कुंजी ब्राउज़र JavaScript से बाहर रखें

solvethree द्वारापढ़ने में 4 मिनट

solvethree वर्कस्पेस API की को अपने सर्वर पर रखें। फ़ॉर्म और एप्लिकेशन सेशन ब्राउज़र संभालता है; टास्क बनाना और प्राप्त करना आपका प्रमाणीकृत बैकएंड संभालता है। ब्राउज़र से लीक हुई की की जगह ऐसा अप्रतिबंधित बैकएंड रूट न दें जिसका इस्तेमाल कोई भी आपके वर्कस्पेस बैलेंस को खर्च करने के लिए कर सके।

इस पेज पर

वर्कस्पेस की रखने के लिए NEXT_PUBLIC गलत जगह है

वर्कस्पेस की, Authorization: Bearer के ज़रिए solvethree को भेजे गए अनुरोधों को प्रमाणित करती है। इसे ब्राउज़र JavaScript में रखने से, जिसमें NEXT_PUBLIC_SOLVETHREE_API_KEY जैसे बंडल किए गए सार्वजनिक एनवायरनमेंट वैरिएबल के ज़रिए रखना भी शामिल है, वह क्रेडेंशियल ब्राउज़र के सामने उजागर हो जाता है। वैल्यू को अस्पष्ट बनाने या केवल सीधे fetch करते समय जोड़ने से वह निजी नहीं हो जाती।

SOLVETHREE_API_KEY को केवल सर्वर के लिए उपलब्ध कॉन्फ़िगरेशन में रखें और केवल विश्वसनीय सर्वर कोड से इस्तेमाल करें। ब्राउज़र को आपके एप्लिकेशन रूट को कॉल करना चाहिए, आपकी वर्कस्पेस की के साथ solvethree टास्क API को कभी नहीं।

टास्क इनपुट केवल सर्वर पर चलने वाले हेल्पर में रखें

केवल सर्वर के लिए हेल्पर · वर्कस्पेस क्रेडेंशियल यहाँ रखें
// 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 समाधान प्रक्रिया पूरी होने का इंतज़ार किए बिना टास्क बनाने का अनुरोध करता है। लौटाई गई टास्क ID सहेजें और सर्वर कोड से getTask के ज़रिए टास्क प्राप्त करें। हेल्पर का 20 सेकंड वाला एबॉर्ट सिग्नल उस अनुरोध की समय-सीमा तय करता है; यह इस बात का वादा नहीं है कि समाधान प्रक्रिया 20 सेकंड में पूरी हो जाएगी।

लॉगिन ऑपरेशन उपलब्ध कराएँ, मनमाना सॉल्वर नहीं

हेल्पर अपने आप में प्रमाणीकृत रूट नहीं है। ब्राउज़र अनुरोध स्वीकार करने से पहले इसके आसपास ये जाँचें लागू करें:

ब्राउज़र से बैकएंड अनुरोध का अनुबंध
ब्राउज़र से बैकएंड अनुरोध का अनुबंध
ऑपरेशनब्राउज़र क्या भेजता हैबैकएंड क्या करता है
लॉगिन के लिए समाधान प्रक्रिया शुरू करेंएप्लिकेशन सेशन और इस लॉगिन प्रयास का requestId।कॉलर को प्रमाणित करता है, प्रयास को वैलिडेट करता है, टास्क बनाने की सीमाएँ जाँचता है और तय हेल्पर को कॉल करता है। टास्क ID को उस कॉलर और प्रयास से जोड़कर सहेजता है; केवल टास्क ID और UI के लिए ज़रूरी स्टेटस लौटाता है।
प्रगति देखेंएप्लिकेशन सेशन और उस प्रयास के लिए लौटाई गई टास्क ID।टास्क प्राप्त करने से पहले जाँचता है कि वह कॉलर का ही है। प्रगति, नियंत्रित विफलता रिस्पॉन्स या अधिकृत सबमिट करने वाले क्लाइंट के लिए ज़रूरी तैयार परिणाम लौटाता है।

ब्राउज़र से दी गई टास्क बॉडी आगे न भेजें। दूसरा होस्टनाम, ऐक्शन, प्रॉक्सी या टास्क प्रकार चुनने के प्रयास अस्वीकार करें। हर कॉलर या एप्लिकेशन सेशन के लिए टास्क बनाने की सीमा लागू करें: प्रमाणीकृत कॉलर भी नए टास्क शुरू करके क्रेडिट खत्म कर सकता है। अगर रूट कुकी प्रमाणीकरण इस्तेमाल करता है, तो टास्क बनाने वाले अनुरोधों को क्रॉस-साइट रिक्वेस्ट फ़ॉर्जरी से सुरक्षित करें।

टास्क ID प्राधिकरण नहीं है। प्रगति के हर अनुरोध पर स्वामित्व जाँचें और ब्राउज़र रिस्पॉन्स में वर्कस्पेस क्रेडेंशियल या सर्वर प्रॉक्सी क्रेडेंशियल न लौटाएँ।

दूसरा टास्क बनाने से पहले मौजूदा टास्क पुनः प्राप्त करें

  • एक ही तार्किक लॉगिन प्रयास के लिए एक requestId बनाए रखें। इसके दस्तावेज़ में दिए फ़ॉर्मैट की जाँच करें: 1–64 ASCII अक्षर, अंक, अंडरस्कोर या हाइफ़न। इसे कॉलर के प्रयास से जोड़ें; यह प्रमाणीकरण क्रेडेंशियल नहीं है।
  • अगर टास्क बनाने का अनुरोध टाइमआउट हो जाए, तो वही requestId और मूल टास्क इनपुट बनाए रखें। उसी ID के साथ वही अनुरोध दोहराने पर मौजूदा टास्क पुनः प्राप्त होता है। उसी ID का दोबारा इस्तेमाल करते हुए इनपुट बदलने से टकराव होता है।
  • सफलता पेलोड का अर्थ निकालने से पहले असफल HTTP रिस्पॉन्स संभालें। प्राप्त किए गए टास्क के लिए pending और solving का मतलब है कि पोलिंग जारी रखें; ready का मतलब है कि समाधान उपलब्ध है।

टास्क ID मिलने के बाद हर ब्राउज़र रिफ्रेश या प्रगति अनुरोध पर नई समाधान प्रक्रिया शुरू करने के बजाय उसी टास्क को प्राप्त करें। विफलता का कारण जानने के लिए API त्रुटि प्रबंधन देखें।

तय करें कि कौन-सा क्लाइंट टोकन सबमिट करेगा

ब्राउज़र को तैयार टोकन लौटाने से पहले तय करें कि लक्ष्य अनुरोध कहाँ चलेगा। सबमिट करने वाले क्लाइंट को लौटाई गई userAgent और secChUa पहचान तथा उस समाधान प्रक्रिया की सफल प्रॉक्सी इस्तेमाल करनी होगी। वर्कस्पेस की को बैकएंड पर ले जाने से ब्राउज़र की प्रॉक्सी कॉन्फ़िगर नहीं होती।

अगर ब्राउज़र उन सेटिंग्स के साथ सबमिट नहीं कर सकता, तो उसे केवल टोकन देना पूरा इंटीग्रेशन नहीं है। ऐसा सबमिट करने वाला क्लाइंट इस्तेमाल करें जिसे आप एकसमान तरीके से कॉन्फ़िगर कर सकें, और उसमें किसी दूसरे सेशन की पहचान, प्रॉक्सी या लक्ष्य URL न मिलाएँ। टास्क तैयार होने का मतलब है कि solvethree ने समाधान जनरेट किया है—यह नहीं कि लक्ष्य ने बाद का अनुरोध स्वीकार कर लिया है।

अपना पहला टास्क चलाएँ।

$5 वर्कस्पेस क्रेडिट के साथ शुरुआत करें।

वर्कस्पेस बनाएँ
अपनी CAPTCHA API कुंजी ब्राउज़र JavaScript से बाहर रखें · solvethree