गाइड
CapSolver AI
कोर एसडीके

कोर एसडीके

पूरे पारिस्थितिकी तंत्र का इंजन. capsolver-core किसी पृष्ठ पर कैप्चा का पता लगाने, उनके मापदंडों को पढ़ने, उन्हें CapSolver AI सेवा के माध्यम से हल करने और टोकन को वापस भरने के लिए शुद्ध पायथन का उपयोग करता है। उच्च-स्तरीय capsolver-agent और capsolver-mcp पैकेज दोनों इसके शीर्ष पर बनाए गए हैं।

केवल टोकन मोड। यह एसडीके कैपसॉल्वर एपीआई (reCAPTCHA v2/v3, क्लाउडफ्लेयर टर्नस्टाइल) से टोकन का अनुरोध करके हल करता है। यह छवि ग्रिड पर क्लिक नहीं करता है या पेज पर स्लाइडर्स को नहीं खींचता है।

1. अवलोकन

capsolver-core “कैप्चा को हल करने” को चार स्पष्ट चरणों में तोड़ता है, जो एक ही पाइपलाइन में बंधा हुआ है:

  1. पता लगाएं (detect) - पहचानें कि पृष्ठ पर कौन से कैप्चा प्रकार मौजूद हैं।
  2. पैरामीटर पढ़ें (get_captcha_info) - लाइव पेज से सीधे प्रत्येक कैप्चा (प्रकार, साइट कुंजी, यूआरएल, और इसी तरह) के संरचित पैरामीटर पढ़ें।
  3. हल करें (solve) - पैरामीटर्स को CapSolver की AI सेवा को सौंपें और उपयोग करने योग्य टोकन वापस प्राप्त करें।
  4. वापस भरें (solve_on_page) - टोकन को पृष्ठ DOM में वापस लिखें ताकि साइट सत्यापन को पारित मान ले।

इस पाइपलाइन के आसपास, यह कई इंजीनियरिंग सुविधाएं जोड़ता है:

  • पूरी तरह से एसिंक एपीआई - async / await पर निर्मित, ताकि आप एक साथ बड़ी संख्या में सॉल्व चला सकें।
  • कनेक्शन का पुन: उपयोग और सफाई - एक आंतरिक HTTP कनेक्शन पूल बनाए रखता है और एक एसिंक संदर्भ प्रबंधक के रूप में काम करता है।
  • प्लग करने योग्य हैंडलर रजिस्ट्री - प्रत्येक कैप्चा प्रकार को एक हैंडलर द्वारा नियंत्रित किया जाता है, जिसे आप कस्टमाइज़ या ओवरराइड कर सकते हैं।
  • ग्रैन्युलैरिटी के दो स्तर - पैरामीटर ज्ञात होने पर शुद्ध एपीआई पर जाएं; जब आपके पास केवल पेज हो तो प्लेराइट ब्राउज़र मोड का उपयोग करें।

आपको सीधे core का उपयोग कब करना चाहिए? जब आप स्वयं कोड को नियंत्रित करते हैं और एलएलएम में समाधान को उजागर करने की आवश्यकता नहीं होती है।

2. स्थापना

capsolver-core GitHub पर खुला स्रोत है और अभी तक PyPI पर प्रकाशित नहीं हुआ है, इसलिए इसे git के माध्यम से इंस्टॉल करें:

pip install git+https://github.com/capsolver-ai/capsolver-core.git
 
# With Playwright support (for detect / solve_on_page)
pip install "capsolver-core[playwright] @ git+https://github.com/capsolver-ai/capsolver-core.git"
playwright install chromium

अपनी कुंजी सेट करें:

export CAPSOLVER_API_KEY="your-capsolver-api-key"

नोट: एसडीके [playwright] अतिरिक्त के बिना काम करता है - उस स्थिति में केवल टोकन मोड (solve) उपलब्ध है, और ब्राउज़र-निर्भर विधियां detect / get_captcha_info / solve_on_page अनुपलब्ध हैं क्योंकि Playwright गायब है।

3. एपीआई और दो मोड

3.1 एक ग्राहक बनाएँ

create_capsolver(**options) (या Capsolver(**options) ) एक ग्राहक लौटाता है।

विकल्पडिफ़ॉल्टविवरण
api_keyकैपसॉल्वर क्लाइंट कुंजी (समाधान के लिए आवश्यक)
servicehttps://api.capsolver.comएपीआई आधार यूआरएल
default_timeout120कुल मतदान बजट, सेकंड में
polling_interval5परिणाम सर्वेक्षणों के बीच का अंतराल, सेकंड में
request_timeout_ms30000एकल HTTP अनुरोध के लिए टाइमआउट
app_idडेवलपर/संबद्ध आईडी
handlersसभी अंतर्निर्मितपंजीकृत कैप्चा हैंडलर को ओवरराइड करें
sourceट्रैफ़िक-स्रोत पहचानकर्ता
versionक्लाइंट संस्करण टैग
on_errorगैर-घातक त्रुटियों के लिए कॉलबैक

Capsolver एक आंतरिक HTTP कनेक्शन पूल रखता है, इसलिए कनेक्शन जारी होने को सुनिश्चित करने के लिए इसे एसिंक संदर्भ प्रबंधक के रूप में उपयोग करना सबसे अच्छा है:

async with create_capsolver(api_key="YOUR_API_KEY") as cap:
    solution = await cap.solve(info)
# or call await cap.aclose() explicitly when you're done

3.2 विधियाँ एक नज़र में

विधिपैरामीटर्सरिटर्नविवरण
solve(info, wait_options?)CaptchaInfo , WaitOptions?Solutionमापदंडों से हल करें
detect(page)नाटककार pagelist[CaptchaType]पेज पर कौन से कैप्चा हैं
get_captcha_info(page)नाटककार pagelist[CaptchaInfo]प्रत्येक विजेट के लिए संरचित पैरामीटर
solve_on_page(page, options?)page , SolveOnPageOptions?list[SolveOnPageResult]पता लगाएं → हल करें → वापस भरें
get_balance()BalanceRespखाता शेष
register(handler)CaptchaHandlerरजिस्ट्री में एक हैंडलर जोड़ें
get_supported_captchas()list[str]समर्थित प्रकारों की सूची बनाएं
get_handler(key)स्ट्र / CaptchaTypeCaptchaHandler | Noneकुंजी द्वारा एक हैंडलर खोजें

3.3 इनपुट हल करें: CaptchaInfo

solve() का मुख्य इनपुट CaptchaInfo है। type , website_url , और website_key आवश्यक हैं (एक खाली website_url या website_key ValueError को बढ़ाता है); बाकी कैप्चा प्रकार के आधार पर वैकल्पिक हैं:

पैरामीटरप्रकारआवश्यकपर लागू होता हैविवरण
typeCaptchaTypeहाँसभीRECAPTCHA_V2 / RECAPTCHA_V3 / CLOUDFLARE
website_urlस्ट्रहाँसभीकैप्चा होस्ट करने वाले पेज का पूरा यूआरएल
website_keyस्ट्रहाँसभीसाइट सार्वजनिक कुंजी (reCAPTCHA की data-sitekey / टर्नस्टाइल की साइटकी)
versionस्ट्रनहींरीकैप्चा"v2" या "v3" ; आमतौर पर स्वतः पता लगाया जाता है
page_actionस्ट्रनहींरीकैप्चा v3v3 क्रिया नाम (उदा. "login" )
min_scoreतैरनानहींरीकैप्चा v3वांछित न्यूनतम स्कोर (0.0-1.0)
invisibleबूलनहींरीकैप्चा v2क्या यह अदृश्य v2 है
enterpriseबूलनहींरीकैप्चाक्या एंटरप्राइज़ संस्करण का उपयोग करना है
sस्ट्रनहींरीकैप्चा एंटरप्राइजएंटरप्राइज़ s टोकन
cdataस्ट्रनहींक्लाउडफ्लेयरटर्नस्टाइल का cdata कस्टम पैरामीटर
proxyस्ट्रनहींसभीप्रॉक्सी, user:pass@host:port या host:port के रूप में
user_agentस्ट्रनहींसभीकस्टम उपयोगकर्ता-एजेंट
container_idस्ट्रनहींब्राउज़र फ़िल-बैकDOM आईडी का उपयोग फिल-बैक के दौरान विजेट कंटेनर का पता लगाने के लिए किया जाता है
callbackस्ट्रनहींब्राउज़र फ़िल-बैकहल करने के बाद ट्रिगर करने के लिए कॉलबैक फ़ंक्शन का नाम
binded_button_idस्ट्रनहींब्राउज़र फ़िल-बैकसंबंधित सबमिट बटन की DOM आईडी
extraहुक्मनहींसभीउन क्षेत्रों के लिए पास-थ्रू जिन्हें अभी तक मॉडल नहीं किया गया है

solve_on_page() के विकल्प SolveOnPageOptions द्वारा नियंत्रित होते हैं:

विकल्पप्रकारडिफ़ॉल्टविवरण
autofillबूलTrueक्या को हल करने के बाद स्वचालित रूप से टोकन को पृष्ठ DOM में भरना है
throw_on_errorबूलFalseएकल कैप्चा विफलता पर, क्या अपवाद उठाना है या इसे error फ़ील्ड में रिकॉर्ड करना है
timeoutतैरनाक्लाइंट डिफ़ॉल्टइस कॉल के लिए कुल मतदान बजट, सेकंड में
polling_intervalतैरनाक्लाइंट डिफ़ॉल्टइस कॉल के लिए मतदान अंतराल, सेकंड में

solve() (WaitOptions) के लिए wait_options में केवल दो वैकल्पिक फ़ील्ड हैं, timeout और polling_interval, जिनका उपयोग एकल समाधान के लिए क्लाइंट के वैश्विक डिफ़ॉल्ट को ओवरराइड करने के लिए किया जाता है।

3.4 रिटर्न प्रकार

प्रकारफ़ील्डविवरण
Solutiontokenहल किया गया टोकन - वह क्रेडेंशियल जो आप लक्ष्य साइट पर सबमिट करते हैं
captcha_typeकैप्चा प्रकार जिसे हल किया गया था
expire_timeटोकन की समाप्ति सेकंड में (केवल तभी मौजूद होती है जब सेवा इसे लौटाती है)
user_agentयूए का उपयोग हल करने के लिए किया जाता है (केवल तभी मौजूद होता है जब सेवा इसे लौटाती है)
rawकच्चा TokenSolution (इसमें g_recaptcha_response आदि शामिल हैं)
SolveOnPageResultinfoउस कैप्चा के लिए CaptchaInfo
solutionSolution ; असफलता पर None
filledक्या टोकन वापस पृष्ठ में भर दिया गया था
errorअसफलता का कारण; सफलता पर None
BalanceRespbalanceखाता शेष (फ्लोट)
packagesयोजनाओं/सदस्यता पैकेजों की सूची

detect() list[CaptchaType] लौटाता है, और get_captcha_info() list[CaptchaInfo] लौटाता है।

3.5 प्रत्येक मोड इन एपीआई का उपयोग कैसे करता है

दोनों मोड के बीच एकमात्र अंतर यह है कि ** पैरामीटर कहां से आते हैं** - यही कारण है कि वे अलग-अलग एपीआई कहते हैं:

टोकन मोड (आप साइट कुंजी पहले से ही जानते हैं) - केवल solve() का उपयोग करता है। आप स्वयं CaptchaInfo का निर्माण करते हैं और एक टोकन वापस प्राप्त करते हैं:

info = CaptchaInfo(type=CaptchaType.RECAPTCHA_V2, website_url=..., website_key=...)
solution = await cap.solve(info)

ब्राउज़र मोड (नाटककार के साथ पेज चलाना) - detect() / get_captcha_info() / solve_on_page() का उपयोग करता है। ऑल-इन-वन solve_on_page() में पता लगाना, समाधान करना और वापस भरना शामिल है; या आप प्रत्येक चरण को स्वयं नियंत्रित करने के लिए चरणों को अलग-अलग चला सकते हैं:

results = await cap.solve_on_page(page)              # all in one call
# or step by step:
types = await cap.detect(page)
infos = await cap.get_captcha_info(page)
solution = await cap.solve(infos[0])

4. प्रत्येक एपीआई को कॉल करना: अनुरोध और प्रतिक्रियाएँ

यह अनुभाग व्यक्तिगत रूप से प्रत्येक विधि से चलता है - वास्तविक कॉल, पास करने के लिए पैरामीटर, एक नमूना प्रतिक्रिया, और प्रतिक्रिया फ़ील्ड का स्पष्टीकरण।

4.1 solve — हल करें (टोकन मोड)

उदाहरण कॉल और प्रतिक्रिया:

import asyncio
from capsolver_core import create_capsolver, CaptchaType, CaptchaInfo
 
async def main():
    cap = create_capsolver(api_key="YOUR_API_KEY")
 
    info = CaptchaInfo(
        type=CaptchaType.RECAPTCHA_V2,        # required: CAPTCHA type
        website_url="https://example.com",    # required: page URL
        website_key="6Lc...",                 # required: site public key (data-sitekey)
        # v3 also takes page_action / min_score; Enterprise takes enterprise/s; Cloudflare takes cdata
    )
    solution = await cap.solve(info)
    print(solution.token)
 
asyncio.run(main())

नमूना प्रतिक्रिया (Solution):

Solution(
  token="03AFcWeA6f...",                  # the credential to submit to the target site
  captcha_type=CaptchaType.RECAPTCHA_V2,
  expire_time=120,
  user_agent="Mozilla/5.0 ...",
  raw=TokenSolution(...),
)

प्रतिक्रिया फ़ील्ड:

  • token - हल किया गया टोकन; इसे reCAPTCHA के लिए g-recaptcha-response या टर्नस्टाइल के लिए cf-turnstile-response के रूप में सबमिट करें।
  • captcha_type - कैप्चा प्रकार जिसे हल किया गया था।
  • expire_time - सेकंड में टोकन समाप्ति; केवल तभी प्रस्तुत करें जब सेवा इसे वापस कर दे, अन्यथा None
  • user_agent - हल करने के लिए यूए का उपयोग किया जाता है; केवल तभी प्रस्तुत करें जब सेवा इसे वापस कर दे, अन्यथा None
  • raw - कच्चा TokenSolution, जिसमें g_recaptcha_response / token / user_agent / expire_time होता है।

4.2 solve_on_page - संपूर्ण पृष्ठ पता लगाना + हल करना + पुनः भरना (ब्राउज़र मोड)

कॉल और पैरामीटर: इनपुट एक नाटककार page है, एक वैकल्पिक SolveOnPageOptions के साथ।

import asyncio
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright
 
async def main():
    cap = create_capsolver(api_key="YOUR_API_KEY")
 
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://example.com/login")
 
        results = await cap.solve_on_page(page)   # or pass options=SolveOnPageOptions(...)
        for r in results:
            print(r.info.type, r.solution.token if r.solution else None, r.filled, r.error)
 
asyncio.run(main())

नमूना प्रतिक्रिया (list[SolveOnPageResult]):

[
  SolveOnPageResult(
      info=CaptchaInfo(type=CaptchaType.RECAPTCHA_V2, website_url=..., website_key=...),
      solution=Solution(token="03AF...", captcha_type=CaptchaType.RECAPTCHA_V2),
      filled=True,
      error=None,
  ),
]

प्रतिक्रिया फ़ील्ड (प्रति आइटम):

  • info - उस कैप्चा (प्रकार और पैरामीटर) के लिए CaptchaInfo
  • solution - Solution ; विफलता पर None.
  • filled - क्या टोकन सफलतापूर्वक पृष्ठ में वापस भर दिया गया था।
  • error - विफलता कारण स्ट्रिंग; None सफलता पर।

4.3 detect - पता लगाएं कि पृष्ठ पर कौन से कैप्चा हैं

कॉल और पैरामीटर: इनपुट एक नाटककार page है।

types = await cap.detect(page)

नमूना प्रतिक्रिया/फ़ील्ड (list[CaptchaType]):

[<CaptchaType.RECAPTCHA_V2: 'reCaptchaV2'>]

पृष्ठ पर पाए गए कैप्चा-प्रकार के एनम की एक सूची लौटाता है; खाली सूची का मतलब है कि कोई नहीं मिला।

4.4 get_captcha_info — संरचित पैरामीटर पढ़ें

कॉल और पैरामीटर: इनपुट एक नाटककार page है।

infos = await cap.get_captcha_info(page)
for info in infos:
    print(info.type, info.website_url, info.website_key)
solution = await cap.solve(infos[0])     # once read, can be solved directly

नमूना प्रतिक्रिया/फ़ील्ड (list[CaptchaInfo]):

# [CaptchaInfo(type=CaptchaType.RECAPTCHA_V2,
#              website_url="https://example.com",
#              website_key="6Lc...")]

4.5 get_balance — शेष राशि जांचें

कॉल और पैरामीटर: कोई इनपुट नहीं।

balance = await cap.get_balance()
print(balance.balance, balance.packages)

नमूना प्रतिक्रिया/फ़ील्ड (BalanceResp):

BalanceResp(balance=12.34, packages=[])
  • balance - खाता शेष (फ्लोट)।
  • packages - योजनाओं/सदस्यता पैकेजों की सूची; यदि कोई नहीं है तो एक खाली सूची।

4.6 get_supported_captchas / get_handler — रजिस्ट्री पहुंच

कॉल और प्रतिक्रिया:

cap.get_supported_captchas()      # → ['reCaptchaV2', 'reCaptchaV3', 'cloudflare']
  • get_supported_captchas() - वर्तमान में समर्थित प्रकार स्ट्रिंग्स की एक सूची लौटाता है।