CaptchaNo
[ इंटीग्रेशन ]

इसके लिए captcha solver:
Puppeteer

Job को फ़ेल होने देने के बजाय run के अंदर ही challenge को हल करें। एक काम करता Node.js उदाहरण, और वे तीन बातें जो तय करती हैं कि आपका token स्वीकार होगा या नहीं।

Puppeteer · Node.js
import puppeteer from "puppeteer";

const CAPTCHANO_KEY = "cn-YOUR_API_KEY";

async function solve(task) {
  const headers = {
    Authorization: `Bearer ${CAPTCHANO_KEY}`,
    "Content-Type": "application/json",
  };
  const res = await fetch("https://api.captchano.com/v1/solve?wait=60", {
    method: "POST",
    headers,
    body: JSON.stringify(task),
  });
  let data = await res.json();
  // A solve can outlast the 60 s wait: poll the task until it finishes.
  while (data.status === "queued" || data.status === "solving") {
    await new Promise((r) => setTimeout(r, 5000));
    const poll = await fetch(`https://api.captchano.com/v1/task/${data.id}`, { headers });
    data = await poll.json();
  }
  if (data.status !== "ready") throw new Error(JSON.stringify(data.error ?? data));
  return data.solution; // { token, userAgent }
}

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://example.com/signup");

const sitekey = await page.$eval("[data-sitekey]", (el) => el.getAttribute("data-sitekey"));
const { token, userAgent } = await solve({ type: "turnstile", sitekey, url: page.url() });

// Turnstile binds the token to a user agent: replay the one it was minted with.
if (userAgent) await page.setUserAgent(userAgent);
await page.evaluate((t) => {
  document.querySelector('[name="cf-turnstile-response"]').value = t;
}, token);
await page.click('button[type="submit"]');

Token स्वीकार होगा या नहीं, यह किन बातों पर निर्भर है

  1. अपना proxy साथ भेजें। Token उसी exit IP के पीछे बनना चाहिए जो उसे submit करता है। Session-graded सिस्टम के लिए यह अनिवार्य है, केवल ऑप्टिमाइज़ेशन नहीं।
  2. User agent मिलाएँ। Turnstile और कई anti-bot सिस्टम token को एक user agent से बाँध देते हैं। हम इस्तेमाल किया गया user agent लौटाते हैं ताकि आप उसे बिल्कुल वैसा ही दोहरा सकें।
  3. देर से request करें। Token लगभग 120 सेकंड में expire हो जाते हैं। जब आप submit करने के लिए तैयार हों, तभी token माँगें।

Blocking या polling

उदाहरण में ?wait=60 का इस्तेमाल है, इसलिए call पूरा solve लौटाता है और आपका Puppeteer स्टेप सीधा-सादा रहता है। अगर आप कनेक्शन खुला नहीं रखना चाहते, तो यह parameter हटा दें, लौटाया गया id रख लें, और हर पाँच सेकंड में GET /v1/task/{id} poll करें। जिस token का आपने भुगतान किया है वह दस मिनट तक प्राप्त किया जा सकता है, इसलिए कनेक्शन टूटने पर भी आपका solve बेकार नहीं जाता।

लागत

हर सफल reCAPTCHA v2 solve के लिए $0.00598, असफल solve पर कभी चार्ज नहीं। हर challenge टाइप के लिए कीमतें देखें, या पूरे request फ़ॉर्मेट के लिए API reference देखें।

[ यह कैसे फ़िट होता है ]

Puppeteer में solve कैसे फ़िट होता है

Puppeteer Node.js से Chromium चलाता है। Solve, page.goto और submit क्लिक के बीच सिर्फ़ एक fetch है, और page.evaluate token को वहाँ रखता है जहाँ पेज उसकी उम्मीद करता है।

  1. 01
    अपने proxy के साथ launch करें

    Chromium को --proxy-server के साथ शुरू करें और वह user agent सेट करें जो आप solve को बताएँगे।

  2. 02
    Sitekey पढ़ें

    page.$eval('[data-sitekey]', el => el.dataset.sitekey) और callback का नाम, अगर मौजूद हो।

  3. 03
    Solve करें

    ?wait=60 के साथ API को fetch करें; response में token और इस्तेमाल किया गया user agent आता है।

  4. 04
    Inject करें और submit करें

    Token लिखने और callback चलाने के लिए page.evaluate करें, फिर submit पर क्लिक करें।

Token को पेज में कैसे डालें

page.evaluate पेज context में response फ़ील्ड सेट करता है और callback को call करता है।

[ आम गलतियाँ ]

इंटीग्रेशन आमतौर पर कहाँ गलत होते हैं

Proxy ऑथेंटिकेशन

Chromium --proxy-server में दिए credentials को नज़रअंदाज़ करता है। Browser के लिए page.authenticate का इस्तेमाल करें और solve को पूरा proxy URL दें।

Iframe वाले widgets

Widget एक iframe में होता है, लेकिन response फ़ील्ड main frame में होता है। Main frame में inject करें।

Retry पर पुराना token

Token सिर्फ़ एक बार इस्तेमाल हो सकते हैं। अगर submit फ़ेल हो, तो पहले token को दोबारा इस्तेमाल करने के बजाय फिर से solve करें।

[ FAQ ]

Puppeteer captcha: अक्सर पूछे सवाल

क्या मुझे puppeteer-extra या किसी captcha plugin की ज़रूरत है?

नहीं। API को एक fetch और एक page.evaluate call काफ़ी है, और solve कब हो और उसकी लागत क्या हो, इस पर पूरा नियंत्रण आपके पास रहता है।

क्या यह headless mode में काम करता है?

हाँ। Token हमारा इंफ्रास्ट्रक्चर बनाता है, आपका browser नहीं, इसलिए headless हो या headed, solve पर कोई फ़र्क नहीं पड़ता। साइटें headless browsers को ज़्यादा शक की नज़र से देख सकती हैं, इसलिए असली जैसा user agent देना फिर भी मदद करता है।

क्या मैं इसे Node वाले Playwright के साथ इस्तेमाल कर सकता हूँ?

हाँ। कोड लगभग एक जैसा है; Puppeteer के बराबर वाले फ़ंक्शन की जगह Playwright के page.evaluate और page.locator आ जाते हैं।

Puppeteer में Cloudflare Turnstile कैसे solve करें?

Turnstile widget से sitekey पढ़ें, पेज URL के साथ type turnstile भेजें, फिर cf-turnstile-response input सेट करें और, अगर पेज कोई callback बताता है, तो उसे call करें।

[ आगे पढ़ें ]

उपयोगी गाइड

बनाने के लिए तैयार?

3 दिन के free trial से शुरू करें, फिर ट्रैफ़िक बढ़ने के साथ हर सफल solve के हिसाब से भुगतान करें। Trial के लिए कार्ड की ज़रूरत नहीं।

हमारे plans देखें
क्या आप एक AI agent हैं? सेटअप के विकल्प देखें →