
Rajinder Singh
Deep Learning Researcher

capsolver-agent के साथ LangChain extra के साथ स्थापित करें और get_langchain_tools() के साथ तैयार उपकरण लोड करें।ToolNode के भीतर चलाएं।gRecaptchaResponse है API स्तर पर।LangGraph एजेंट में reCAPTCHA को हल करने का सबसे रखरखाव योग्य तरीका चुनौती बहाली को एक प्रकार के उपकरण नोड के रूप में लेना है, मॉडल प्रॉम्प्ट में नेटवर्क लॉजिक एम्बेड करने के बजाय। CapSolver के Agent SDK LangChain-संगत उपकरण प्रदान करता है, जबकि LangGraph स्पष्ट राज्य, रूटिंग, त्रुटि संभाल और जारी रखने की क्षमता प्रदान करता है। मॉडल निर्णय ले सकता है कि एक समर्थित चुनौती अगले अनुमोदित चरण को रोक सकती है, लेकिन निश्चित उपकरण पृष्ठ के पैरामीटर की पुष्टि करता है, समाधानकर्ता को कॉल करता है और एक संरचित परिणाम वापस करता है। इस वास्तुविकता एपीआई कुंजियां संदेशों से बाहर रखती है, पुन: प्रयास दृश्यमान बनाती है, और असंबंधित लक्ष्यों के जमा होने से रोकती है। इस शिक्षण में एक न्यूनतम ग्राफ बनाया जाता है, उपकरण कॉल के रूटिंग कैसे दिखाया जाता है, reCAPTCHA v2 पैरामीटर कैसे समझाए जाते हैं, और ब्राउजर ऑटोमेशन, QA, RPA और अनुमोदित सार्वजनिक-डेटा वर्कफ्लो के लिए उत्पादन सुरक्षाएं जोड़ी जाती हैं।
LangGraph राज्य-संबंधी कार्यप्रणालियों के लिए डिज़ाइन किया गया है जहां नोड बाउंडेड कार्य करते हैं और किनारे अगला क्या होगा नियंत्रित करते हैं। CapSolver एक विशेष उपकरण नोड में नैसर्गिक रूप से फिट बैठता है:
उपयोगकर्ता-निर्देशित कार्य
↓
तर्क नोड एक समर्थित चुनौती की पहचान करता है
↓
उपकरण नोड CapSolver उपकरण चलाता है
↓
संरचित समाधान या मानकीकृत त्रुटि
↓
ब्राउजर जारी रखता है, पुन: प्रयास करता है या मानव समीक्षा के लिए अनुरोध करता है
मॉडल को निर्णय लेना चाहिए जब बहाली की आवश्यकता होती है। यह निर्णय लेना चाहिए कि गोपनीयता कहां संग्रहीत है, कौन से होस्ट अनुमोदित हैं, या कितने पुन: प्रयास अनुमत हैं। इन निर्णयों को निश्चित एप्लिकेशन कोड में रखना चाहिए।
CapSolver AI ब्लॉग में एजेंट एकीकरण पैटर्न शामिल हैं, और CapSolver AI और ऑटोमेशन FAQ बताता है कि एक बहाली परत एक मौजूदा एजेंट स्टैक के साथ कैसे पूरक होती है।
उपयोगकर्ता-प्रदान किए गए CapSolver एजेंट दस्तावेज़ में बताया गया है कि capsolver-agent के capsolver-core पर निर्भरता है। सबसे पहले कोर को स्थापित करें, फिर अपने LangChain एकीकरण के साथ एजेंट पैकेज स्थापित करें।
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install "capsolver-agent[langchain] @ git+https://github.com/capsolver-ai/capsolver-agent.git"
pip install langchain-openai langgraph
रनटाइम वातावरण के माध्यम से गोपनीयता को सेट करें:
export CAPSOLVER_API_KEY="CAP-xxxxxxxxxxxxxxxx"
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
आधिकारिक CapSolver एजेंट भंडार इस आयात मार्ग का वर्णन करता है:
from capsolver_agent.langchain_tools import get_langchain_tools
tools = get_langchain_tools(api_key="YOUR_API_KEY")
वापस किए गए ऑब्जेक्ट LangChain-संगत BaseTool उदाहरण हैं। आधिकारिक LangChain टूल्स गाइड बताता है कि टूल्स मॉडल के लिए परिभाषित इनपुट और आउटपुट प्रस्तुत करते हैं, जबकि प्रकार की जानकारी और विवरण मॉडल को सही कार्रवाई चुनने में मदद करते हैं।
एक मानक प्रॉक्सी-रहित reCAPTCHA v2 कार्य के लिए, आवश्यक इनपुट पृष्ठ URL और साइट कुंजी हैं। CapSolver के आधिकारिक reCAPTCHA v2 दस्तावेज़ में ReCaptchaV2TaskProxyLess बिल्ट-इन प्रॉक्सी पथ के लिए सूचीबद्ध है और पृष्ठ reCAPTCHA एंटरप्राइज का उपयोग करता है जब एंटरप्राइज कार्य प्रकार अलग होते हैं।
| क्षेत्र | आवश्यकता | दिशा-निर्देश |
|---|---|---|
captcha_type |
एजेंट उपकरण द्वारा आवश्यक | SDK के दस्तावेज़ के अनुसार reCAPTCHA v2 पहचानकर्ता का उपयोग करें |
website_url |
आवश्यक | अनुमोदित पृष्ठ के पूर्ण URL भेजें |
website_key |
आवश्यक | पृष्ठ द्वारा लोड किए गए ठीक साइट कुंजी का उपयोग करें |
| एंटरप्राइज भेजना | शर्ती | लक्ष्य के दस्तावेज़ के अनुसार विनिर्देश की आवश्यकता होने पर केवल शामिल करें |
| अदृश्य फ्लैग या क्रिया | शर्ती | अनुमोदित पृष्ठ पर पाए गए मानों को बरकरार रखें |
REST-कार्य स्तर पर, समाधान टोकन के रूप में solution.gRecaptchaResponse वापस किया जाता है। एजेंट SDK नामक संरचित शब्दावली में कोर परिणाम को घेरता है ताकि ग्राफ असाधारण पाठ के बिना सफलता या असफलता पर रूटिंग कर सके।
पैरामीटर खोज के लिए, CapSolver ब्राउजर एक्सटेंशन गाइड और reCAPTCHA v2 कार्यान्वयन गाइड देखें।
नीचे दिए गए उदाहरण में आधिकारिक CapSolver टूल्स लोड किए गए हैं, उन्हें चैट मॉडल से बांधा गया है, और उन्हें ToolNode में रखा गया है। ग्राफ प्रत्येक उपकरण प्रतिक्रिया के बाद तर्क नोड पर वापस आता है।
import os
from typing import Literal
from capsolver_agent.langchain_tools import get_langchain_tools
from langchain_openai import ChatOpenAI
from langgraph.graph import START, StateGraph
from langgraph.graph.message import MessagesState
from langgraph.prebuilt import ToolNode, tools_condition
capsolver_tools = get_langchain_tools(
api_key=os.environ["CAPSOLVER_API_KEY"]
)
model = ChatOpenAI(
model="gpt-4o-mini",
temperature=0,
).bind_tools(capsolver_tools)
def agent_node(state: MessagesState):
response = model.invoke(state["messages"])
return {"messages": [response]}
def safe_tool_error(error: Exception) -> str:
return (
"चुनौती उपकरण विफल रहा। बिना स्वचालित रूप से पुन: प्रयास करें। "
"वर्कफ्लो को ऑपरेटर समीक्षा के लिए वापस करें।"
)
builder = StateGraph(MessagesState)
builder.add_node("agent", agent_node)
builder.add_node(
"tools",
ToolNode(
capsolver_tools,
handle_tool_errors=safe_tool_error,
),
)
builder.add_edge(START, "agent")
builder.add_conditional_edges("agent", tools_condition)
builder.add_edge("tools", "agent")
graph = builder.compile()
LangGraph ToolNode संदर्भ बताता है कि ToolNode BaseTool उदाहरण स्वीकार करता है, उपकरण कॉल चलाता है, और कॉन्फ़िगरेबल त्रुटि संभाल समर्थन करता है। इसे एक बहाली शाखा के लिए उपयुक्त बनाता है जिसकी दृश्यता और पूर्वानुमान आवश्यक है।
मॉडल को सही उपकरण कॉल करने के लिए पर्याप्त संदर्भ की आवश्यकता होती है, लेकिन यह असीमित अधिकार नहीं प्राप्त करना चाहिए। मैसेज को वैध एप्लिकेशन डेटा से बनाएं:
request = {
"website_url": "https://staging.example.com/approved-form",
"website_key": "6LcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
}
messages = [
(
"system",
"आप केवल अनुमोदित वर्कफ्लो पर काम करते हैं। यदि एक समर्थित reCAPTCHA "
"अगले चरण को रोकता है, तो एप्लिकेशन द्वारा प्रदान किए गए ठीक URL और साइट कुंजी के साथ एक बार CapSolver solve_captcha उपकरण कॉल करें। "
"कभी-कभी लक्ष्य बनाएं या पहचानकर्ता मांगें। यदि समाधान विफल रहता है, तो रुक जाएं और ऑपरेटर समीक्षा मांगें।",
),
(
"user",
"अनुमोदित स्टेजिंग कार्य जारी रखें। ब्राउजर ने एक "
f"reCAPTCHA v2 के साथ {request['website_url']} पर रिपोर्ट किया, जिसका साइट कुंजी {request['website_key']} है।",
),
]
result = graph.invoke(
{"messages": messages},
config={"recursion_limit": 6},
)
एक रिकर्सन सीमा अनियंत्रित ग्राफ लूप को रोकती है। उत्पादन में, प्रतिबंधित होस्टनाम को एम्बेड करने से पहले अनुमति दें और समाधान टोकन को ट्रेस में संग्रहीत न करें।
CapSolver टूल्स वही हल करते हैं जिसके लिए उन्हें कहा जाता है; आपकी एप्लिकेशन को निर्णय लेना चाहिए कि कौन से कार्य अनुमोदित हैं। पृष्ठ URL की वैधता मॉडल के बाहर बनाएं:
from urllib.parse import urlparse
ALLOWED_HOSTS = {
"staging.example.com",
"qa.example.com",
}
def validate_target(url: str) -> str:
parsed = urlparse(url)
if parsed.scheme != "https":
raise ValueError("केवल HTTPS लक्ष्य अनुमत हैं")
if parsed.hostname not in ALLOWED_HOSTS:
raise PermissionError("लक्ष्य होस्ट अनुमोदित नहीं है")
return url
जब बहुत सारे ग्राहक एक ही प्लेटफॉर्म का उपयोग करते हैं, तो टेंट-विशिष्ट अनुमति सूची या हस्ताक्षरित वर्कफ्लो मैनिफेस्ट का उपयोग करें। नैसर्गिक-भाषा निर्देशों के माध्यम से इस नीति को बदलने की अनुमति न दें।
एक उपयोगी बहाली ग्राफ में केवल "हल" और "क्रैश" के बजाय तीन परिणाम होते हैं। उपकरण आउटपुट को एक वर्कफ्लो निर्णय में मानकीकृत करें:
from typing import TypedDict
class RecoveryDecision(TypedDict):
status: Literal["continue", "retry", "review"]
reason: str
def classify_recovery(result: dict, attempt: int) -> RecoveryDecision:
if result.get("success"):
return {"status": "continue", "reason": "समाधान वापस किया गया"}
error = str(result.get("error", "अज्ञात त्रुटि"))
if attempt == 0 and "timeout" in error.lower():
return {"status": "retry", "reason": "एक सीमित पुन: प्रयास अनुमत है"}
return {"status": "review", "reason": error}
जब ब्राउजर सीधे टोकन का उपभोग कर सकता है, तो मॉडल संदेशों में क्रमिक टोकन को उजागर न करें। आदर्श सीमा है: उपकरण परिणाम → विश्वसनीय ब्राउजर नियंत्रक → जमा परिणाम → ग्राफ के लिए लाल बैंड राज्य वापस।
CapSolver त्रुटि और समस्या निवारण FAQ सामान्य निदान मार्ग प्रदान करता है, जबकि CapSolver प्रतिक्रिया API गाइड परिणाम नियंत्रण कैसे करें।
| मोड | जब बेस्ट | ग्राफ प्राप्त करता है | मुख्य ऑपरेशन चिंता |
|---|---|---|---|
| टोकन मोड | URL और साइट कुंजी ज्ञात हैं | संरचित टोकन परिणाम | सही पैरामीटर और समय पर उपभोग |
| ब्राउजर मोड | विज्ञापन पैरामीटर डायनामिक हैं | हल पृष्ठ/सत्र स्थिति | समान पृष्ठ सत्र सततता |
| मानव समीक्षा | दोहराए गए या समर्थित विफलता | लाल बैंड त्रुटि और स्क्रीनशॉट संदर्भ | असीमित पुन: प्रयास रोकना |
टोकन मोड ज्ञात reCAPTCHA पैरामीटर के लिए आमतौर पर सरल होता है। ब्राउजर मोड तब उपयोगी होता है जब एक अनुमोदित Playwright फ्लो को detect() और solve_on_page() की आवश्यकता होती है। CapSolver एजेंट दस्तावेज़ solve_captcha को मूल टोकन हल करने के साथ मैप करता है और solve_on_page को ब्राउजर बहाली के साथ मैप करता है।
ग्राफ संक्रमण और ऑपरेशन मीट्रिक रिकॉर्ड करें, लेकिन संवेदनशील मान नहीं। उपयोगी क्षेत्र शामिल हैं:
safe_event = {
"workflow_id": "wf_01J...",
"node": "tools",
"tool": "solve_captcha",
"target_host": "staging.example.com",
"challenge_type": "recaptcha_v2",
"attempt": 1,
"duration_ms": 6420,
"outcome": "success",
}
कभी-कभी CapSolver API कुंजी, पूर्ण समाधान टोकन, सत्यापित कुकीज़ या फॉर्म डेटा को लॉग न करें। बाहरी ऑब्जर्वेबिलिटी प्रणालियों में इवेंट भेजने से पहले ट्रेस लाल बैंड करें।
बोनस कोड: CapSolver डैशबोर्ड पर WEBS कोड का उपयोग करें ताकि प्रत्येक भरोसे पर 5% का अतिरिक्त बोनस मिले।
एक उत्पादन LangGraph reCAPTCHA हल करने वाला एक होस्टनाम अनुमति सूची, निश्चित कार्य नीति, छोटे टोकन जीवनकाल नियंत्रण, सीमित पुन: प्रयास, ट्रेस लाल बैंड, स्पष्ट बंद शर्तें और ऑपरेटर-समीक्षा नोड के साथ होना चाहिए। अनसुने ऑटोमेशन से जुड़ने से पहले इसे अनुमोदित स्टेजिंग पृष्ठ के साथ परीक्षण करें।
CapSolver CAPTCHA-हल करने वाला FAQ कार्य व्यवहार को कवर करता है, और CapSolver Python छापने का गाइड ब्राउजर ऑटोमेशन अभ्यास प्रदान करता है।
केवल आपके द्वारा मालिक, परीक्षण या स्पष्ट अनुमति के साथ ऑटोमेशन के लिए प्रणालियों पर इस वर्कफ्लो का उपयोग करें। चुनौती हल करना एक्सेस अधिकार नहीं देता। साइट की शर्तें, दर सीमा, गोपनीयता के कर्तव्य और उद्देश्य सीमा का सम्मान करें। ग्राफ फॉर्म जमा करने, खाता डेटा बदलने या किसी भी उच्च-प्रभाव कार्रवाई करने से पहले मानव पुष्टि की आवश्यकता होती है।
एक LangGraph reCAPTCHA हल करने वाला सबसे विश्वसनीय तब होता है जब हल करना एक स्पष्ट उपकरण नोड होता है जिसकी सख्त रूटिंग होती है। CapSolver के तैयार LangChain टूल्स लोड करें, उन्हें मॉडल से बांधें, उन्हें ToolNode के माध्यम से चलाएं, और अनुमोदन, गोपनीयता, पुन: प्रयास और टोकन उपभोग को निश्चित एप्लिकेशन कोड में रखें। इससे एजेंट को बहाली क्षमता मिलती है बिना असीमित नियंत्रण के।
CapSolver से शुरू करें, अनुमोदित स्टेजिंग वर्कफ्लो के साथ ग्राफ की जांच करें, और स्केलिंग से पहले ट्रेस लाल बैंड और मानव समीक्षा जोड़ें।
from capsolver_agent.langchain_tools import get_langchain_tools का उपयोग करें, फिर get_langchain_tools(api_key=...) को कॉल करें ताकि LangChain-संगत टूल्स प्राप्त करें जिन्हें ToolNode में पारित किया जा सके।
पृष्ठ URL और reCAPTCHA साइट कुंजी आवश्यक हैं। एंटरप्राइज, अदृश्य, क्रिया, या सत्र क्षेत्र केवल तभी शामिल करें जब अनुमोदित पृष्ठ वास्तव में उनका उपयोग करता है।
समाधान टोकन को विश्वसनीय टूल लेयर से ब्राउजर कंट्रोलर तक सीधे भेजना बेहतर है। संभव होने पर तर्क ग्राफ के लिए केवल लाल बैंड सफलता या असफलता घटना वापस करें।
आमतौर पर एक सीमित पुन: प्रयास अस्थायी समय सीमा के लिए पर्याप्त होता है। दोहराए गए अस्वीकृति को मानव समीक्षा के लिए रूट करें क्योंकि URL, कुंजी, सत्र या पृष्ठ कॉन्फ़िगरेशन गलत हो सकते हैं।
हां। जब वर्कफ्लो को एक ही Playwright सत्र में डिटेक्शन और पृष्ठ-स्तर की बहाली की आवश्यकता होती है, तो नियंत्रित टूल के माध्यम से ब्राउजर-क्षम CapSolver कोर विधियों का उपयोग करें।
किमी कोड फेचयूआरएल आउटपुट में गलत सफलता की पहचान करें, एक अधिकृत CAPTCHA पुनर्प्राप्ति को MCP के माध्यम से दर्ज करें, और एजेंट आगे बढ़ने से पहले सामग्री की पुष्टि करें।

सीखें कैसे हल करें Cloudflare Turnstile के साथ AutoGen एजेंट्स में CapSolver, टाइप की गई टूल पंजीकरण, टोकन प्रबंधन, पुनः प्रयास और सुरक्षित वर्कफ़्लो डिज़ाइन के साथ।
