
Rajinder Singh
Deep Learning Researcher

FunctionTool के साथ एक संकीर्ण एसिंक्रोनस CapSolver फ़ंक्शन को लपेटें; मॉडल को API कुंजी, प्रॉक्सी आंकड़े, कुकीज या क्रोमियम ऑब्जेक्ट्स न दिखाएं।websiteURL, websiteKey और pageAction को पढ़ें। कभी-कभी एजेंट द्वारा इन्हें बनाए न जाएं।ReCaptchaV3TaskProxyLess का उपयोग करें या जब अनुमोदित प्रॉक्सी की आवश्यकता होती है तो ReCaptchaV3Task का उपयोग करें।एक विश्वसनीय LlamaIndex reCAPTCHA v3 समाधान एक टाइप किया गया पुनर्जीवन उपकरण है, न कि खुले अंत तक ब्राउजिंग क्षमता। LlamaIndex एजेंट को तब तक अनुमोदित कार्य ब्लॉक करने का निर्णय लेना चाहिए जब तक कि विश्वसनीय कोड लक्ष्य की पुष्टि न करे, वर्तमान पृष्ठ से ठीक साइट कुंजी और कार्य को पढ़े, CapSolver को कॉल करे, टोकन जमा करे और अपेक्षित स्थिति की पुष्टि करे। इस विभाजन का महत्व है क्योंकि reCAPTCHA v3 एक अंतर्क्रियात्मक चेकबॉक्स के बिना चलता है और कार्य-विशिष्ट अनुरोध का मूल्यांकन करता है। गलत URL या pageAction के लिए बनाए गए टोकन भी एपीआई कॉल सफल होने पर अस्वीकृत कर दिए जा सकते हैं। इस गाइड में आधिकारिक CapSolver कार्य क्षेत्र, एसिंक्रोनस LlamaIndex FunctionTool, सर्वर-साइड नीति नियंत्रण, सत्र-मोड निपटान, संरचित परिणाम, सीमित पुनर्प्रयास, ब्राउज़र सत्यापन और उत्पादन निरीक्षण के बारे में बताया गया है।
LlamaIndex के आधिकारिक टूल दस्तावेज़ बताते हैं कि FunctionTool सिंक्रोनस या एसिंक्रोनस पायथन फ़ंक्शन को लपेटता है और फ़ंक्शन स्कीमा का अनुमान लगा सकता है। यह भी नोट करता है कि टूल नाम, विवरण और आर्गुमेंट विवरण मॉडल द्वारा टूल के चयन और कॉल करने में महत्वपूर्ण भूमिका निभाते हैं।
एक LlamaIndex reCAPTCHA v3 समाधान के लिए, टूल को संकीर्ण रखें:
LlamaIndex एजेंट
↓ एक टाइप किए गए टूल का चयन करता है
FunctionTool वॉल्यूम
↓ विश्वसनीय संदर्भों की पुष्टि करता है
CapSolver निष्पादक
↓ छोटे जीवनकाल के समाधान वापस करता है
ब्राउज़र सेवा
↓ जमा और पुष्टि करता है
LlamaIndex वर्कफ़्लो जारी रहता है
CapSolver AI एजेंट दस्तावेज़ एक ही कार्य विभाजन का वर्णन करता है: मॉडल निर्णय लेता है, एडेप्टर स्कीमा प्रस्तुत करता है, और कोर अनुमोदित चुनौती कार्य करता है।
CapSolver के reCAPTCHA v3 दस्तावेज़ चार कार्य प्रकार परिभाषित करता है:
| कार्य प्रकार | प्रॉक्सी मोड | एंटरप्राइज |
|---|---|---|
ReCaptchaV3TaskProxyLess |
CapSolver सर्वर प्रॉक्सी | नहीं |
ReCaptchaV3Task |
आपका अनुमोदित प्रॉक्सी | नहीं |
ReCaptchaV3EnterpriseTaskProxyLess |
CapSolver सर्वर प्रॉक्सी | हाँ |
ReCaptchaV3EnterpriseTask |
आपका अनुमोदित प्रॉक्सी | हाँ |
मूल क्षेत्र हैं:
| क्षेत्र | आवश्यकता | विश्वसनीय स्रोत |
|---|---|---|
websiteURL |
आवश्यक | वर्तमान अनुमोदित पृष्ठ URL |
websiteKey |
आवश्यक | लाइव पृष्ठ कॉन्फ़िगरेशन |
pageAction |
आमतौर पर v3 के लिए आवश्यक | पृष्ठ के grecaptcha.execute कार्य |
proxy |
गैर-प्रॉक्सीलेस कार्य के लिए आवश्यक | सर्वर-साइड अनुमोदित प्रॉक्सी प्रोफ़ाइल |
enterprisePayload |
शर्ती | लाइव एंटरप्राइज कॉन्फ़िगरेशन |
isSession |
शर्ती | लक्ष्य-विशिष्ट अनुमोदित वर्कफ़्लो |
गूगल के reCAPTCHA v3 गाइड एकीकरण के हिस्से के रूप में कार्य नामों का वर्णन करता है। पृष्ठ पर देखे गए कार्य के नाम को बरकरार रखें।
CapSolver reCAPTCHA ब्लॉग में अतिरिक्त समस्या निवारण और कार्यान्वयन गाइड हैं।
सर्वर-साइड स्थिति के संदर्भ दें, अरबाजी मान न दें।
from dataclasses import dataclass
from urllib.parse import urlparse
@dataclass(frozen=True)
class CaptchaContext:
context_id: str
website_url: str
website_key: str
page_action: str
enterprise: bool = False
proxy_profile: str | None = None
session_mode: bool = False
TRUSTED_CONTEXTS: dict[str, CaptchaContext] = {}
ALLOWED_HOSTS = {"staging.example.com", "portal.example.org"}
def get_trusted_context(context_id: str) -> CaptchaContext:
context = TRUSTED_CONTEXTS.get(context_id)
if context is None:
raise ValueError("अज्ञात CAPTCHA संदर्भ")
host = urlparse(context.website_url).hostname
if host not in ALLOWED_HOSTS:
raise PermissionError("लक्ष्य अनुमोदित होस्ट के बाहर है")
if not context.website_key or not context.page_action:
raise ValueError("विश्वसनीय संदर्भ में आवश्यक v3 पैरामीटर कमी है")
return context
मॉडल को केवल context_id मिलता है। ब्राउज़र सेवा वर्तमान पृष्ठ, साइट कुंजी, कार्य और प्रॉक्सी बाइंडिंग के मालिक हैं।
उपयोगकर्ता-प्रदान किए गए CapSolver एजेंट दस्तावेज़ में कोर पैकेज के पहले एजेंट पैकेज के लिए स्थापित करने का निर्देश दिया गया है:
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
pip install llama-index-core
रनटाइम वातावरण में API कुंजी सेट करें:
export CAPSOLVER_API_KEY="आपकी-capsolver-api-key"
कुंजी को प्रॉम्प्ट, नोटबुक, स्थिति डेटासेट या ट्रेस में न दें। CapSolver AI और ऑटोमेशन FAQ एकीकरण मॉडल के बारे में बताता है।
capsolver-agent मॉडल-एडेप्टर-कोर सीमा के लिए create_executor() प्रदान करता है।
import os
from capsolver_agent.schema import create_executor
executor = create_executor(
api_key=os.environ["CAPSOLVER_API_KEY"],
default_timeout=120,
)
एक्सीक्यूटर solve_captcha को CapSolver कोर में डिस्पैच करता है और संरचित परिणाम वापस करता है। इसे विश्वसनीय एप्लिकेशन कोड में रखें।
फ़ंक्शन विश्वसनीय संदर्भ को समाधान करता है, आधिकारिक कार्य प्रकार का चयन करता है और एक्सीक्यूटर को कॉल करता है।
from typing import Annotated
async def solve_recaptcha_v3(
context_id: Annotated[
str,
"विश्वसनीय, वर्तमान ब्राउज़र CAPTCHA संदर्भ के लिए अपार्थिक पहचानकर्ता"
],
) -> dict:
"""अनुमोदित ब्राउज़र संदर्भ के लिए reCAPTCHA v3 हल करें।
जब वर्तमान वर्कफ़्लो एक समर्थित reCAPTCHA v3 चेकपॉइंट रिपोर्ट करता है, तभी इसका उपयोग करें। कभी-कभी लक्ष्य URL, साइट कुंजी या कार्य को अनुमान न लगाएं या संशोधित न करें।
"""
context = get_trusted_context(context_id)
captcha_type = (
"reCaptchaV3Enterprise"
if context.enterprise
else "reCaptchaV3"
)
args = {
"captcha_type": captcha_type,
"website_url": context.website_url,
"website_key": context.website_key,
"page_action": context.page_action,
}
if context.proxy_profile:
args["proxy"] = resolve_proxy(context.proxy_profile)
result = await executor.execute("solve_captcha", args)
if not result.get("success"):
return {
"success": False,
"context_id": context_id,
"error": normalize_error(result.get("error")),
}
solution = result.get("solution") or {}
token = solution.get("token")
if not token:
return {
"success": False,
"context_id": context_id,
"error": "समाधान में टोकन नहीं है",
}
receipt = await submit_solution_and_verify(
context_id=context_id,
token=token,
session_cookie=extract_session_cookie(solution),
)
return {
"success": receipt["verified"],
"context_id": context_id,
"verified": receipt["verified"],
"next_state": receipt["next_state"],
}
resolve_proxy, normalize_error और submit_solution_and_verify एप्लिकेशन-स्वामित्व नीति एडेप्टर हैं। इन्हें मॉडल द्वारा दृश्य नहीं होना चाहिए।
from llama_index.core.tools import FunctionTool
tool = FunctionTool.from_defaults(
async_fn=solve_recaptcha_v3,
name="solve_recaptcha_v3",
description=(
"अनुमोदित वर्तमान ब्राउज़र संदर्भ के लिए reCAPTCHA v3 हल करें। "
"इनपुट केवल ब्राउज़र सेवा द्वारा प्रदान किया गया अपार्थिक context_id होना चाहिए। "
"असमर्थित पृष्ठों या अनुमोदित होस्ट के लिए कभी न कॉल करें।"
),
)
विकास के दौरान स्कीमा की जांच करें:
schema = tool.metadata.get_parameters_dict()
print(schema)
यह LlamaIndex के दस्तावेज़ी FunctionTool पैटर्न का अनुसरण करता है जबकि मॉडल के अनुरोध सतह केवल एक अपार्थिक पहचानकर्ता तक सीमित रहता है।
from llama_index.core.agent.workflow import FunctionAgent
agent = FunctionAgent(
llm=llm,
tools=[tool],
system_prompt=(
"केवल अनुमोदित ब्राउज़र वर्कफ़्लो के साथ काम करें। जब ब्राउज़र सेवा एक समर्थित reCAPTCHA v3 चेकपॉइंट रिपोर्ट करती है, तो "
"प्रदान किए गए context_id के साथ solve_recaptcha_v3 कॉल करें। एक बार कॉल करें। "
"केवल जब verified=true हो, तभी आगे बढ़ें; अन्यथा समीक्षा मांगें।"
),
)
एक विश्वसनीय ब्राउज़र अवलोकन के साथ वर्कफ़्लो चलाएं:
response = await agent.run(
"अनुमोदित स्टेजिंग वर्कफ़्लो एक reCAPTCHA v3 चेकपॉइंट पर प्रतीक्षा कर रहा है। context_id ctx_7f19 का उपयोग करें और केवल जब verified हो तभी आगे बढ़ें।"
)
एजेंट को कभी-कभी API कुंजी, क्रॉस-प्रॉक्सी, टोकन या कुकी नहीं दिखाई देता है।
pageAction को लाइव पृष्ठ से पढ़ेंएक विश्वसनीय LlamaIndex reCAPTCHA v3 समाधान को हर लक्ष्य पर एक सामान्य कार्य जैसे login का उपयोग न करें। ब्राउज़र सेवा को लक्ष्य के वर्तमान एकीकरण को पढ़ना चाहिए।
async def collect_v3_context(page, context_id: str) -> CaptchaContext:
website_url = page.url
host = urlparse(website_url).hostname
if host not in ALLOWED_HOSTS:
raise PermissionError("अनुमोदित लक्ष्य नहीं")
values = await page.evaluate("""
() => {
const scripts = Array.from(document.scripts)
.map(s => s.textContent || '')
.join('\n');
const siteKey =
document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey')
|| null;
const actionMatch = scripts.match(
/grecaptcha(?:\.enterprise)?\.execute\([^,]+,\s*\{\s*action:\s*['\"]([^'\"]+)/
);
return {
siteKey,
pageAction: actionMatch ? actionMatch[1] : null,
enterprise: scripts.includes('grecaptcha.enterprise')
};
}
""")
if not values["siteKey"] or not values["pageAction"]:
raise RuntimeError("आवश्यक v3 पैरामीटर पढ़ने में असमर्थ")
return CaptchaContext(
context_id=context_id,
website_url=website_url,
website_key=values["siteKey"],
page_action=values["pageAction"],
enterprise=values["enterprise"],
)
जटिल एकीकरण के लिए, अनुमोदित विकास और परीक्षण के दौरान पृष्ठ आंकड़ों को देखने के लिए CapSolver एक्सटेंशन गाइड का उपयोग करें।
CapSolver के आधिकारिक v3 दस्तावेज़ में उल्लेख किया गया है कि कुछ लक्ष्य isSession सक्षम होने पर recaptcha-ca-t वापस कर सकते हैं। इसे संवेदनशील, छोटे जीवनकाल के सत्र सामग्री के रूप में लें।
SESSION_KEYS = {
"recaptcha-ca-t",
"recaptcha_ca_t",
}
def extract_session_cookie(solution: dict) -> str | None:
raw = solution.get("raw") or {}
for key in SESSION_KEYS:
value = solution.get(key) or raw.get(key)
if value:
return value
return None
केवल जब लक्ष्य एकीकरण की आवश्यकता होती है और वर्कफ़्लो अनुमोदित होता है, तभी सत्र मोड सक्षम करें। इस मान को प्रक्रिया मेमोरी या अल्पकालिक एन्क्रिप्टेड संग्रह में संग्रहीत करें; LlamaIndex संदर्भ में कभी-कभी न रखें।
गूगल के सर्वर-साइड पुष्टि दस्तावेज़ बताता है कि साइट टोकन के पीछे बैकएंड पर पुष्टि करता है। आपके स्वचालन को टोकन को उसी अनुमोदित एप्लिकेशन प्रवाह में जमा करना चाहिए, फिर परिणामी पृष्ठ स्थिति की पुष्टि करना चाहिए।
async def submit_solution_and_verify(
context_id: str,
token: str,
session_cookie: str | None,
) -> dict:
browser_state = BROWSER_CONTEXTS[context_id]
page = browser_state.page
if session_cookie:
await browser_state.context.add_cookies([{
"name": "recaptcha-ca-t",
"value": session_cookie,
"domain": urlparse(page.url).hostname,
"path": "/",
"secure": True,
}])
await page.evaluate(
"""({ token }) => {
let input = document.querySelector(
'textarea[name="g-recaptcha-response"]'
);
if (!input) {
input = document.createElement('textarea');
input.name = 'g-recaptcha-response';
input.style.display = 'none';
document.body.appendChild(input);
}
input.value = token;
input.dispatchEvent(new Event('change', { bubbles: true }));
}""",
{"token": token},
)
await trigger_trusted_callback(page, browser_state.callback_name)
try:
await page.locator(browser_state.success_selector).wait_for(
state="visible",
timeout=15000,
)
return {"verified": True, "next_state": "continue"}
except Exception:
return {"verified": False, "next_state": "operator_review"}
कॉलबैक खोज लक्ष्य-विशिष्ट है। इसे विश्वसनीय ब्राउज़र संदर्भ में एकत्र करें, मॉडल को जावास्क्रिप्ट बनाने के लिए न बोलें।
CapSolver reCAPTCHA उत्तर API गाइड सामान्य उत्तर निपटान पैटर्न के बारे में बताता है।
from enum import Enum
class RecoveryState(str, Enum):
DETECTED = "detected"
SOLVING = "solving"
VERIFIED = "verified"
REVIEW_REQUIRED = "review_required"
ATTEMPTS: dict[str, int] = {}
async def guarded_solve(context_id: str) -> dict:
attempts = ATTEMPTS.get(context_id, 0)
if attempts >= 1:
return {
"success": False,
"context_id": context_id,
"next_state": RecoveryState.REVIEW_REQUIRED,
"error": "पुनर्जीवन बजट समाप्त हो गया",
}
ATTEMPTS[context_id] = attempts + 1
return await solve_recaptcha_v3(context_id)
एक बार फिर से कॉल आमतौर पर अप्रासंगिक पैरामीटर, गलत कार्य, अमान्य ब्राउज़र स्थिति या असमर्थ मार्ग के संकेत होते हैं। लूप रोकें और डायग्नोस्टिक एकत्र करें।
सुरक्षा डेटा के बजाय ऑपरेशनल मेटाडेटा लॉग करें।
from datetime import datetime, timezone
def recovery_event(context: CaptchaContext, result: dict) -> dict:
return {
"event": "recaptcha_v3_recovery",
"context_id": context.context_id,
"host": urlparse(context.website_url).hostname,
"page_action": context.page_action,
"enterprise": context.enterprise,
"session_mode": context.session_mode,
"success": result.get("success", False),
"next_state": str(result.get("next_state")),
"observed_at": datetime.now(timezone.utc).isoformat(),
}
websiteKey के लॉग न करें अगर आपकी नीति इसे कॉन्फ़िगरेशन मानती है, और कभी-भी समाधान टोकन, सेशन कुकीज, API कीज, क्रूड प्रॉक्सी या पूर्ण निजी पृष्ठ HTML लॉग न करें।
CapSolver त्रुटि FAQ त्रुटि श्रेणियों को मानकीकृत करने में मदद कर सकता है।
बोनस कोड: CapSolver डैशबोर्ड पर एक अतिरिक्त 5% बोनस प्राप्त करने के लिए कोड WEBS का उपयोग करें।
| एकीकरण पैटर्न | मॉडल इनपुट | गोपनीय उत्पादन जोखिम | सबसे अच्छा उपयोग |
|---|---|---|---|
| मॉडल सभी कार्य क्षेत्र प्रदान करता है | URL, की, क्रिया, प्रॉक्सी | उच्च | उत्पादन में बचें |
| वैधृत क्षेत्रों के साथ टाइप किया गया FunctionTool | स्पष्ट क्षेत्र | मध्यम | नियंत्रित प्रोटोटाइप |
| अपरिचित संदर्भ ID और सर्वर वैधता | केवल संदर्भ | कम | उत्पादन LlamaIndex वर्कफ़्लो |
ब्राउज़र-केवल कोर solve_on_page |
कोई मॉडल पैरामीटर नहीं | निम्नतम | निश्चित Playwright बरामदी |
अपरिचित-संदर्भ पैटर्न LlamaIndex एजेंट को बरामदी के लिए पर्याप्त नियंत्रण प्रदान करता है बिना संवेदनशील या लक्ष्य-विशिष्ट पैरामीटर बदले।
websiteKey और pageAction पढ़ें।CapSolver उत्पाद पृष्ठ समर्थित समाधान श्रेणियों की सूची प्रदान करता है, जबकि CapSolver AI ब्लॉग एजेंट एकीकरण पैटर्न के बारे में विस्तृत जानकारी प्रदान करता है।
केवल ऐसे एप्लिकेशन पर इस वर्कफ़्लो का उपयोग करें जिनके आप मालिक, परीक्षक या स्पष्ट अनुमति द्वारा स्वचालित करने के लिए हैं। तकनीकी क्षमता एक्सेस अधिकार प्रदान नहीं करती है। लक्ष्य शर्तों, दर सीमाओं, गोपनीयता आवश्यकताओं और प्रमाणीकरण सीमाओं का सम्मान करें। अनुमति के बिना निजी खातों, सीमित रिकॉर्ड या तीसरे पक्ष वर्कफ़्लो को एक्सेस करने के लिए एजेंट टूल का उपयोग न करें। उच्च प्रभाव वाले कार्य जैसे जमा, भुगतान, बुकिंग और खाता बदलाव के पीछे अलग नीति और पुष्टि चरण रखें।
एक उत्पादन LlamaIndex reCAPTCHA v3 सॉल्वर एक संकीर्ण, टाइप किए गए बरामदी कार्य के साथ होना चाहिए। ब्राउज़र सेवा एक विश्वसनीय संदर्भ ID प्रदान करती है, सर्वर-साइड कोड ठीक URL, साइट की, क्रिया, एंटरप्राइज मोड और प्रॉक्सी नीति को संरक्षित रखता है, CapSolver एक अल्पकालिक समाधान वापस करता है, और ब्राउज़र एजेंट आगे बढ़ने से पहले अपेक्षित स्थिति की पुष्टि करता है।
CapSolver पर अनुमोदित LlamaIndex एकीकरण शुरू करें, एक नियंत्रित स्टेजिंग वर्कफ़्लो पर इसका परीक्षण करें, और उत्पादन से पहले पैरामीटर-आधारित और पुनरावृत्ति दृढ़ता के साथ अस्पष्टता को दूर करें।
नहीं। reCAPTCHA v3 अंक-आधारित है और आमतौर पर पृष्ठ के पीछे चलता है। वर्कफ़्लो को लक्ष्य के साइट की, URL और क्रिया को संरक्षित रखना आवश्यक है।
pageAction क्यों महत्वपूर्ण है?क्रिया आकलन कर रहे ऑपरेशन की पहचान करती है, जैसे लॉगिन या सबमिट। जीवंत एकीकरण से ठीक क्रिया का उपयोग करें, जबकि एक सामान्य मान के बजाय।
सर्वर-साइड जमा करें और केवल वेरिफाइड स्थिति वापस करें। टोकन एक अल्पकालिक रनटाइम डेटा है और मॉडल संदर्भ या लॉग में नहीं जाना चाहिए।
केवल तब जब अनुमोदित लक्ष्य द्वारा वापसी सेशन मान की आवश्यकता हो। इस मान को अल्पकालिक एन्क्रिप्टेड रनटाइम स्टोरेज में रखें।
निर्धारित प्रयास बजट के बाद रोकें, एक रेडैक्टेड डायग्नोस्टिक घटना दर्ज करें, उचित होने पर विश्वसनीय पृष्ठ के पैरामीटर को फिर से लोड करें और वर्कफ़्लो को ऑपरेटर समीक्षा में रूट करें।
2026 के लिए क्लोकब्राउज़र समीक्षा विशेषताओं, मूल्य निर्धारण, लाइसेंसिंग, डेप्लॉयमेंट विकल्प, लाभ, सीमाएं, विकल्प और आदर्श उपयोग मामलों को कवर करती है।

CrewAI reCAPTCHA v3 सॉल्वर बनाएं CapSolver, टाइप किए गए टूल्स, भरोसेमंद पृष्ठ कार्य, सर्वर-साइड टोकन प्रस्तुति, स्कोर नीति, एवं पृष्ठ पुष्टिकरण के साथ।
