अदृश्य PopularCaptcha हल करना: यह कैसे अलग है और क्या भेजें
अदृश्य PopularCaptcha देखने में बिल्कुल कैप्चा जैसा नहीं लगता। वहां "मैं इंसान हूं" वाला कोई बॉक्स नहीं होता। साइट अपने JavaScript से PopularCaptcha को कॉल करती है, आमतौर पर तब जब विज़िटर submit दबाता है, और चुनौती तभी दिखाती है जब उसे विज़िटर पर शक हो। ऑटोमेशन स्क्रिप्ट के लिए इस विजेट को पहचानना कठिन है, लेकिन हल करने का काम फिर भी एक ही रिक्वेस्ट है।
Scarnox आज PopularCaptcha हल करता है, अदृश्य वैरिएंट सहित। आप एक फ्लैग सेट करते हैं, is_invisible, और वही रिक्वेस्ट भेजते हैं जो दृश्य विजेट के लिए भेजते। बाकी कैप्चा टाइप जल्द आ रहे हैं।
पहचानें कि यह अदृश्य है
- विजेट में
data-size="invisible"है। - साइट अपने ही कोड में विजेट का
execute()फ़ंक्शन कॉल करती है। - पेज में sitekey है, पर कहीं कोई दिखने वाला चेकबॉक्स नहीं है।
फैसला sitekey की कॉन्फ़िगरेशन करती है, पेज की दिखावट नहीं। अगर पक्का न हो, तो sitekey खोजें और पेज के JavaScript में विजेट के विकल्प जांचें।
क्या भेजें
वही endpoint और वही टास्क टाइप इस्तेमाल करें, और is_invisible को true पर सेट करके जोड़ें:
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/login",
"is_invisible": true
}
इसे Authorization: Bearer हेडर में अपनी key के साथ भेजें, जैसा हर दूसरे उदाहरण में है। कॉल तब तक रुकती है जब तक टोकन तैयार न हो, इसमें polling नहीं है। लगभग 185 सेकंड का टाइमआउट रखें।
टोकन वापस देना
अदृश्य इंटीग्रेशन लगभग हमेशा फॉर्म फ़ील्ड के बजाय callback इस्तेमाल करते हैं। साइट विजेट को data-callback एट्रिब्यूट में या render() को दिए विकल्पों में एक फ़ंक्शन का नाम देती है। उस फ़ंक्शन को टोकन के साथ कॉल करें, और साइट का अपना कोड ऐसे चलेगा जैसे विज़िटर ने चुनौती पार कर ली हो:
await page.evaluate((t) => {
document.querySelectorAll('[name="h-captcha-response"]').forEach((el) => { el.value = t; });
const cb = document.querySelector("[data-sitekey]")?.dataset.callback;
if (cb && typeof window[cb] === "function") window[cb](t);
}, token);
छिपे फ़ील्ड में भी मान लिखना नुकसानदेह नहीं है, और यह उन साइटों को भी कवर करता है जो submit पर वह फ़ील्ड पढ़ती हैं।
समय यहां ज़्यादा मायने रखता है
अदृश्य विजेट में साइट तय करती है कि चुनौती कब चले, और आमतौर पर वह पल विज़िटर के submit करने का होता है। इसलिए सॉल्व उसी पल करें, पहले नहीं। सबसे आसान पैटर्न है अपनी स्क्रिप्ट में बटन दबाने से ठीक पहले सॉल्व शुरू करना, फिर callback कॉल करना और submit करना।
टोकन लगभग दो मिनट में समाप्त हो जाते हैं। पेज लोड के दौरान लिया गया और एक मिनट बाद इस्तेमाल किया गया टोकन शायद अस्वीकार हो जाएगा।
आम गलती
अदृश्य sitekey को सामान्य दृश्य टास्क की तरह भेजने से ऐसा टोकन बन सकता है जिसे साइट मना कर दे। अगर API टोकन लौटाता है पर साइट उसे अस्वीकार करती है, तो इन्हें इस क्रम में जांचें:
- क्या
is_invisibletrueपर सेट है? - क्या साइट callback कॉल करती है, और क्या वह form submit होने से पहले करती है?
- क्या
site_urlवही पेज है जहां अदृश्य विजेट चलता है? - अगर साइट फिर भी टोकन अस्वीकार करती है, तो समस्या उस IP से जुड़ी हो सकती है जिसने उसे सॉल्व किया। प्रॉक्सी बनाम प्रॉक्सीलेस सॉल्विंग से तुलना करें।
अदृश्य फ्लो का सुरक्षित परीक्षण
अदृश्य विजेट हाथ से टेस्ट करना कठिन है, क्योंकि चुनौती केवल submit पर चलती है और ज़्यादातर समय बिना कुछ दिखाए पास हो जाती है। इस क्रम में टेस्ट करें:
- मुफ्त ट्रायल गाइड के smoke test का उपयोग करके पुष्टि करें कि
is_invisibletrueहोने पर सॉल्व टोकन लौटाता है। - उस टोकन के साथ ब्राउज़र कंसोल में साइट का callback खुद चलाएं, और देखें कि form आगे बढ़ता है या नहीं।
- अपनी स्क्रिप्ट से form submit करें, और अगला पेज जांचें।
- अगर संभव हो तो दूसरे नेटवर्क से दोबारा चलाएं, ताकि पक्का हो कि टोकन उस IP से बंधा नहीं है जिसने उसे सॉल्व किया।
यह टेस्ट केवल ऐसे form पर करें जो आपका है, या ऐसी staging कॉपी पर जिसे टेस्ट करने की आपको अनुमति है। किसी ऐसे लाइव खाते पर कभी अदृश्य फ्लो न चलाएं जो आपके नियंत्रण में नहीं है।
एक अदृश्य submit में घटनाओं का क्रम
एक काम करने वाला इंटीग्रेशन इस क्रम का पालन करता है:
- विज़िटर, या आपकी स्क्रिप्ट, form भरती है।
- आपकी स्क्रिप्ट पेज से sitekey और पेज URL पढ़ती है।
- आपकी स्क्रिप्ट
is_invisibletrueके साथ solve endpoint को कॉल करती है और टोकन का इंतज़ार करती है। - आपकी स्क्रिप्ट टोकन को response फ़ील्ड में लिखती है और साइट का callback कॉल करती है।
- साइट का अपना कोड टोकन जोड़कर form submit करता है।
अगर चरण 3 चरण 5 से काफी पहले होता है, तो form submit होने से पहले टोकन समाप्त हो सकता है। इस अंतराल को जितना हो सके छोटा रखें।
जब साइट अदृश्य टोकन अस्वीकार करे
अस्वीकृति हमेशा टोकन की समस्या नहीं होती। सॉल्व रिक्वेस्ट बदलने से पहले इन्हें जांचें:
- callback form submit होने से पहले चला, बाद में नहीं।
- form उस फ़ील्ड से टोकन पढ़ता है जिसमें आपकी स्क्रिप्ट ने लिखा। कुछ साइटें अदृश्य विजेट के लिए अलग फ़ील्ड इस्तेमाल करती हैं।
- जो रिक्वेस्ट टोकन लेकर जाती है, वह उसी सत्र से आई जिसने पेज लोड किया था। दूसरे सत्र की कुकीज़ मेल नहीं खातीं।
- सॉल्व और submit के बीच पेज रीलोड नहीं हुआ, जिससे टोकन खारिज हो जाता।
इन जांचों के बाद ही प्रॉक्सी वाले सवाल पर जाएं। ज़्यादातर अस्वीकृतियां callback या सत्र की वजह से होती हैं, IP की वजह से नहीं।
अगले कदम
- Python में PopularCaptcha कैसे हल करें
- Playwright और Puppeteer में PopularCaptcha हल करना
- उत्पादन में टिकने वाले retries और एरर हैंडलिंग
- मुफ्त कैप्चा सॉल्वर ट्रायल
मुफ्त ट्रायल क्रेडिट के साथ शुरू करें, कार्ड की ज़रूरत नहीं: खाता बनाएं और अपने किसी पेज पर अदृश्य sitekey टेस्ट करें।