Scarnox · Blog

Captcha solver API: यह कैसे काम करता है और इसे कैसे call करें

Captcha solver API एक web service है जिसे आप HTTP पर call करते हैं। आप उसे captcha का विवरण भेजते हैं, यानी task type, page की sitekey और page URL, और वह एक token लौटाती है जिसे target site उस challenge के पास होने के प्रमाण के रूप में स्वीकार करती है। Scarnox का endpoint इसी तरह काम करता है, और यह synchronous है, यानी एक request में आपको जवाब मिल जाता है।

यह guide request, response, error के ढाँचे और उन विवरणों को कवर करती है जो तय करते हैं कि integration production में टिकेगा या नहीं। अगर पहले एक चलने वाली script चाहिए, तो Python में PopularCaptcha कैसे solve करें से शुरू करें।

API क्या करता है और क्या नहीं करता

आपका code page पर captcha ढूँढता है, उसकी sitekey पढ़ता है और solver को भेजता है। Solver एक token लौटाता है। आपका code वह token उस form field में लिखता है जिसकी site उम्मीद करती है, और form submit करता है।

Solver आपका page लोड नहीं करता, कुछ क्लिक नहीं करता और आपका form submit नहीं करता। वह केवल token बनाता है। इस सीमा को ध्यान में रखने से बाकी integration समझना आसान होता है: आपका session, cookies और request का समय सब आपके code में ही रहते हैं।

आज एकमात्र live task type PopularCaptcha, proxyless है, यानी PopularCaptchaTaskProxyless। बाकी captcha types योजना में हैं। captcha के प्रकार की guide बताती है कि कौन-सा कौन-सा है।

Endpoint

इस पते पर POST request भेजें:

POST https://api.scarnox.com/api/tasks/create
Authorization: Bearer scarnox_YOURAPIKEY
Content-Type: application/json

Body task का वर्णन करती है:

{
  "captcha_type": "PopularCaptchaTaskProxyless",
  "site_key": "10000000-ffff-ffff-ffff-000000000001",
  "site_url": "https://example.com/signup"
}

तीन आवश्यक fields ये हैं:

तीन वैकल्पिक fields भी हैं। proxy http://user:pass@host:port फ़ॉर्मेट में लेता है और proxy task types के साथ इस्तेमाल होता है। rqdata और is_invisible खास widget variants के लिए हैं। सभी task types और field विवरण API reference में हैं।

Synchronous का मतलब है polling नहीं

Call तब तक रुकती है जब तक token तैयार न हो। आपको polling नहीं करनी, और इस flow में "नतीजा लाओ" वाली दूसरी request नहीं है। अपने HTTP client का timeout लगभग 185 सेकंड सेट करें, ताकि धीमा solve network failure जैसा न दिखे।

requests library के साथ Python में यह ऐसा दिखता है:

import requests

r = requests.post(
    "https://api.scarnox.com/api/tasks/create",
    headers={"Authorization": "Bearer scarnox_YOURAPIKEY"},
    json={
        "captcha_type": "PopularCaptchaTaskProxyless",
        "site_key": "10000000-ffff-ffff-ffff-000000000001",
        "site_url": "https://example.com/signup",
    },
    timeout=185,
)
data = r.json()

Key को script में लिखने के बजाय environment variable से पढ़ें। जो भी source code पढ़ सकता है, उसे आपका balance इस्तेमाल करने में सक्षम नहीं होना चाहिए।

Response पढ़ना

सफल solve एक errorId के रूप में 0, solution के भीतर token, और एक cost field लौटाता है:

{"errorId": 0, "solution": {"token": "..."}, "cost": ...}

विफल solve एक errorId लौटाता है जो 0 के अलावा कुछ है, साथ में एक machine-readable errorCode और एक इंसान द्वारा पढ़ने लायक errorDescription:

{"errorId": 1, "errorCode": "...", "errorDescription": "..."}

हर call पर body में errorId जाँचें। यह मान न लें कि HTTP request पूरी होने का मतलब है कि आपके पास token है। सबसे अहम नियम यह है: आपसे शुल्क केवल तब लिया जाता है जब errorId 0 हो। विफल solves मुफ़्त हैं। मौजूदा दरों के लिए pricing page देखें।

Token की उम्र

PopularCaptcha tokens लगभग दो मिनट में expire हो जाते हैं। Token मिलते ही उसे submit करें। Token को बाद के इस्तेमाल के लिए cache न करें, और form submit से पहले पहले से solve न करें। अगर token मिलने और form post के बीच आपके code में कई steps हैं, तो solve को आखिरी पल तक टालें।

Token को form में डालना

ज़्यादातर sites PopularCaptcha का response h-captcha-response नाम के form field से पढ़ती हैं। कई g-recaptcha-response को भी उसी value के साथ स्वीकार करती हैं, इसलिए दोनों भेजना एक आम सुरक्षित चुनाव है:

requests.post("https://example.com/signup", data={
    "email": "you@example.com",
    "h-captcha-response": token,
    "g-recaptcha-response": token,
})

अगर form token स्वीकार नहीं करता, तो कारण आम तौर पर वह sitekey या page URL होता है जो उस page से मेल नहीं खाता जिस पर widget असल में था। Solver को दोष देने से पहले values दोबारा जाँच लें।

Error handling

Production integration के लिए कुछ आदतें ज़रूरी हैं:

हर खास तरीके के लिए retries और error handling guide में विस्तार से है।

शुरू करना

खाता बनाएँ और मुफ़्त ट्रायल क्रेडिट से शुरू करें, कार्ड की ज़रूरत नहीं। फिर ऊपर वाली request अपने किसी test page पर चलाएँ, और किसी असली चीज़ से जोड़ने से पहले जाँचें कि form token स्वीकार करता है।

अगले कदम