CAPTCHA समाधान के साथ Playwright APIRequestContext का उपयोग करें

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

जब आपको एप्लिकेशन का POST एंडपॉइंट और फ़ॉर्म फ़ील्ड पहले से पता हों, तो request.newContext() का उपयोग करें। यह Chromium लॉन्च किए बिना HTTP क्लाइंट बनाता है। केवल solvethree टोकन सबमिट करने के लिए आपको ब्राउज़र में फ़ील्ड के साथ इंटरैक्ट करने की ज़रूरत नहीं है।

अगर एप्लिकेशन को कुकी, CSRF डेटा या अन्य फ़ॉर्म फ़ील्ड चाहिए, तो वे भी दें। SDK CAPTCHA हल करता है; यह एप्लिकेशन का लॉगिन फ़्लो दोबारा नहीं बनाता।

इस पेज पर

निर्भरताएँ और लक्ष्य अनुरोध तैयार करें

  1. 1.

    डिपेंडेंसी इंस्टॉल करें

    Node.js 22+ का उपयोग करें और playwright पैकेज इंस्टॉल करें। solvethree के संस्करण 0.1.0 के टारबॉल से आधिकारिक JavaScript SDK इंस्टॉल करें: solvethree-sdk-0.1.0.tgz, जो solvethree.com पर /downloads/ में है। इसे @solvethree/sdk के रूप में इम्पोर्ट किया जाता है; यह न मानें कि रजिस्ट्री में रिलीज़ उपलब्ध है।

  2. 2.

    एनवायरनमेंट वेरिएबल सेट करें

    Node.js प्रोसेस को SOLVETHREE_API_KEY, SOLVETHREE_PROXY और TARGET_URL दें। वर्कस्पेस की API कुंजी सर्वर पर ही रखें। TARGET_URL एप्लिकेशन का वास्तविक POST एंडपॉइंट होना चाहिए, न कि केवल CAPTCHA दिखाने वाला पेज। ऐसे HTTP या HTTPS प्रॉक्सी URL का उपयोग करें जिसमें पाथ, क्वेरी या फ़्रैगमेंट न हो।

  3. 3.

    साइट प्रोफ़ाइल और एक्शन की पुष्टि करें

    लक्ष्य होस्टनाम के लिए आपके वर्कस्पेस में उपलब्ध एक सक्रिय प्रोफ़ाइल चाहिए। CAPTCHA हल करने से पहले इसे कंसोल में सेट अप करें; होस्टनाम पास करने से प्रोफ़ाइल नहीं बनती। उदाहरण में login एक्शन का उपयोग किया गया है; अगर लक्ष्य किसी अन्य एक्शन की अपेक्षा करता है, तो इसे बदलें। अनुरोध डिफ़ॉल्ट रूप से reCAPTCHA Enterprise v3 का उपयोग करता है।

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

CAPTCHA हल करें, फिर उसी प्रॉक्सी से सबमिट करें

Playwright APIRequestContext · ब्राउज़र की आवश्यकता नहीं
import { request } from 'playwright';
import { Solvethree } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const target = new URL(process.env.TARGET_URL);
const proxy = new URL(process.env.SOLVETHREE_PROXY);
const result = await client.solve({ site: target.hostname, action: 'login', proxy: process.env.SOLVETHREE_PROXY });
const proxyConfig = { server: `${proxy.protocol}//${proxy.host}`, username: decodeURIComponent(proxy.username), password: decodeURIComponent(proxy.password) };

const targetClient = await request.newContext({
  proxy: proxyConfig, timeout: 30000,
  extraHTTPHeaders: { 'User-Agent': result.solution.userAgent, 'sec-ch-ua': result.solution.secChUa },
  // storageState: 'your-application-session.json', // only if your flow needs it
});
try {
  const response = await targetClient.post(target.href, {
    form: { 'g-recaptcha-response': result.solution.token }, maxRedirects: 0,
  });
  console.log('Application HTTP status:', response.status());
  // Inspect the response and supply the application's actual fields/CSRF/session.
} finally { await targetClient.dispose(); }

client.solve() टास्क को एक बार बनाता है और उसके तैयार होने तक पोल करता है या अपवाद फेंकता है। उदाहरण में CAPTCHA हल करने और सबमिट करने, दोनों के लिए एक ही प्रॉक्सी का उपयोग होता है। Playwright के लिए, यह प्रॉक्सी सर्वर के पते को उसके क्रेडेंशियल से अलग करता है और उपयोगकर्ता नाम व पासवर्ड को डिकोड करता है।

रिक्वेस्ट कॉन्टेक्स्ट solution.userAgent और solution.secChUa को हेडर के रूप में लागू करता है। फ़ॉर्म g-recaptcha-response में solution.token भेजता है, टास्क ID नहीं। प्रॉक्सी और मिली हुई पहचान को साथ रखें; उन्हें असंबंधित ब्राउज़र हेडर से न बदलें और टोकन को किसी दूसरे लक्ष्य पर न भेजें।

फ़ॉर्म में एप्लिकेशन के वास्तविक फ़ील्ड जोड़ें, जिनमें ज़रूरत के अनुसार क्रेडेंशियल या CSRF डेटा भी शामिल हों। अगर आपके पास आवश्यक एप्लिकेशन सेशन पहले से है, तो वैकल्पिक storageState सेटिंग सक्षम करें और उसे उस सेशन की सहेजी गई स्थिति पर सेट करें।

APIRequestContext अपना अलग कुकी जार रखता है, इसलिए एक ही कॉन्टेक्स्ट से किए गए अनुरोध उसे मिलने वाली कुकी को बनाए रखते हैं। यह किसी असंबंधित ब्राउज़र कॉन्टेक्स्ट के साथ अपने-आप कुकी साझा नहीं करता। जब पहले किए जाने वाले सेशन अनुरोधों और अंतिम POST को कुकी साझा करनी हों, तो उन्हें एक ही कॉन्टेक्स्ट में रखें। सबमिशन पूरा होने पर finally ब्लॉक कॉन्टेक्स्ट को डिस्पोज़ करता है।

दोबारा CAPTCHA हल करने से पहले एप्लिकेशन का रिस्पॉन्स जाँचें

उदाहरण एप्लिकेशन का HTTP स्टेटस लॉग करता है; इससे यह साबित नहीं होता कि लॉगिन सफल हुआ। maxRedirects को शून्य पर सेट करने से रीडायरेक्ट का अनुसरण करने के बजाय शुरुआती रिस्पॉन्स दिखाई देता है। उसकी बॉडी, हेडर और कुकी को एप्लिकेशन के अपेक्षित सफल रिस्पॉन्स से मिलाकर जाँचें। केवल रीडायरेक्ट या HTTP 200 से यह पता नहीं चलता कि कार्रवाई सफल हुई या नहीं।

टास्क तैयार है, लेकिन एप्लिकेशन POST को अस्वीकार कर देता है।

पहले भेजे जा रहे अनुरोध की जाँच करें: टोकन फ़ील्ड, होस्टनाम और एक्शन, प्रॉक्सी, मिली हुई पहचान, आवश्यक फ़ॉर्म फ़ील्ड, CSRF मान और सेशन कुकी।

यह आज़माएँ: दोबारा CAPTCHA हल कराने के लिए भुगतान करने से पहले अनुरोध में गायब या बेमेल डेटा ठीक करें। तैयार टास्क उपयोग करने योग्य समाधान देता है, आगे उसे स्वीकार किए जाने की गारंटी नहीं।

CAPTCHA हल करने की प्रक्रिया के अंत में टास्क विफल हो जाता है।

errorCode और error पढ़ें; हर विफलता को क्रेडिट की समस्या न मानें।

यह आज़माएँ: उस टास्क की पोलिंग रोकें और बताए गए कारण को दूर करें। CAPTCHA हल करने के विफल प्रयासों का शुल्क वापस कर दिया जाता है। त्रुटियों का अर्थ समझने के लिए API त्रुटियों को संभालना देखें।

टास्क बनाते समय टाइमआउट हो जाता है या कनेक्शन टूट जाता है।

पता करें कि आपके पास टास्क ID है या आपने requestId का उपयोग किया था। कनेक्शन टाइमआउट होने से यह साबित नहीं होता कि टास्क बनाना विफल रहा।

यह आज़माएँ: अगर आपके पास मौजूदा टास्क की ID है, तो उसे प्राप्त करें। टास्क बनाने के ऐसे अनुरोधों के लिए जिन्हें दोबारा भेजकर पुनर्प्राप्त किया जा सके, requestId दें और बिल्कुल उन्हीं इनपुट के साथ उसका दोबारा उपयोग करें; इससे मौजूदा टास्क मिलता है। तुरंत CAPTCHA हल करने का एक और अलग प्रयास शुरू न करें।

एप्लिकेशन का अनुरोध HTTP त्रुटि लौटाता है।

लक्ष्य के रिस्पॉन्स की जाँच solvethree टास्क के परिणाम से अलग करें।

यह आज़माएँ: रिस्पॉन्स की बॉडी को सफल पेलोड मानने से पहले असफल रिस्पॉन्स को संभालें। टोकन को कारण मान लेने के बजाय एप्लिकेशन का अनुरोध या बताई गई सर्वर त्रुटि ठीक करें।

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

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

वर्कस्पेस बनाएँ
CAPTCHA समाधान के साथ Playwright APIRequestContext का उपयोग करें · solvethree