
Rajinder Singh
Deep Learning Researcher

pageAction और स्कोर नीति को सर्वर-साइड रजिस्टर से हल करें, मॉडल-जनित पाठ से नहीं।क्रूएआई में रीकैपचा वी३ को हल करने का सबसे सुरक्षित तरीका यह है कि कैपसॉल्वर को एक टाइप किए गए, नीति-नियंत्रित उपकरण के माध्यम से प्रस्तुत करें। क्रूएआई को तय करना चाहिए कि कार्य को सत्यापित करने की आवश्यकता है, लेकिन भरोसेमंद एप्लिकेशन कोड को अनुमत लक्ष्य, साइट कुंजी, पृष्ठ कार्य, प्रॉक्सी मोड और स्कोर नीति को हल करना चाहिए। कैपसॉल्वर के रीकैपचा वी३ दस्तावेजीकरण में समर्थित कार्य प्रकार और पैरामीटर की सूची है, जबकि उपयोगकर्ता-प्रदान किए गए एजेंट एसडीके निर्मित उपकरण कॉल को capsolver-core में मैप करता है। उपकरण को टोकन को सर्वर-साइड जमा करना चाहिए, परिणामी पृष्ठ अवस्था की पुष्टि करना चाहिए, और क्रू को छोटा परिणाम जैसे verified, review_required या stopped लौटाना चाहिए। इस डिज़ाइन के कारण यूआरएल ड्रिफ्ट, कार्य अनुमान, गुप्त रहस्य उजागर, दोहराए गए समाधान और गलत सफलता संकेत रोके जा सकते हैं।
रीकैपचा वी३ अंक-आधारित होता है और आमतौर पर दृश्य चेकबॉक्स के बिना चलता है। लक्ष्य एप्लिकेशन कार्य को उत्पन्न करता है, टोकन प्राप्त करता है और उस टोकन का सर्वर पर मूल्यांकन करता है। इसलिए, क्रूएआई वर्कफ़्लो तब विफल हो सकता है जब यह कभी दृश्य चुनौती नहीं देखता है।
आम कारण ऑपरेशनल होते हैं, न कि बातचीत के:
pageAction पृष्ठ के रनटाइम कार्य के साथ मेल नहीं खाता है;कैपसॉल्वर रीकैपचा ब्लॉग में समर्थनकारी कार्यान्वयन गाइड हैं, जबकि AI और ऑटोमेशन एफक्यूएए सुरक्षित एजेंट सीमाओं को परिभाषित करने में मदद करता है।
एक बहु-एजेंट क्रू सबसे अच्छा तब काम करता है जब जिम्मेदारी स्पष्ट हो।
| भूमिका | अनुमत जिम्मेदारी | नियंत्रित नहीं करना चाहिए |
|---|---|---|
| नेविगेटर | अनुमोदित एप्लिकेशन अवस्था का अवलोकन करें | एपीआई कुंजी, प्रॉक्सी प्रमाण पत्र, क्रमवार टोकन |
| सत्यापन योजक | अनुमोदित चरण की आवश्यकता है या नहीं, यह निर्णय लें | अरैखिक यूआरएल या साइट कुंजी |
| कैपसॉल्वर उपकरण | नीति हल करें, एक कार्य बनाएं, टोकन जमा करें | असीमित पुनर्प्रयास या असंबंधित ब्राउजिंग |
| अवस्था सत्यापक | अपेक्षित मार्ग और सामान्य चिह्नक द्वारा पुष्टि करें | व्यावसायिक अनुमोदन निर्णय |
| समीक्षक | विफलता पर रेडैक्टेड साक्ष्य की जांच करें | गुप्त सत्र सामग्री |
मॉडल एक पंजीकृत लक्ष्य आईडी चुन सकता है। यह लक्ष्य यूआरएल या चुनौती पैरामीटर नहीं बनाना चाहिए।
क्रूएआई के कस्टम-टूल दस्तावेजीकरण BaseTool के साथ Pydantic args_schema का समर्थन करता है, @tool डेकोरेटर, टाइप किए गए परिणाम और आईओ-बाउंड ऑपरेशन के लिए असिंक्रनस टूल्स का समर्थन करता है।
उपयोगकर्ता-प्रदान किए गए कैपसॉल्वर एजेंट दस्तावेजीकरण बताता है कि capsolver-agent capsolver-core को घेरता है: create_executor() एक एक्सीक्यूटर बनाता है, और executor.execute("solve_captcha", args) टाइप किए गए अनुरोध को कोर इंजन में डिस्पैच करता है।
दस्तावेजीकृत पैकेज स्थापित करें:
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
pip install crewai
export CAPSOLVER_API_KEY="CAP-..."
कुंजियां रनटाइम सीक्रेट स्टोर में रखें। इन्हें क्रू प्रॉम्प्ट, कार्य विवरण या उपकरण परिणाम में न रखें।
from dataclasses import dataclass
@dataclass(frozen=True)
class RecaptchaV3Policy:
target_id: str
website_url: str
website_key: str
page_action: str
minimum_score: float
enterprise: bool
proxy_profile: str | None
allowed_crew_role: str
max_attempts: int = 1
TARGETS = {
"approved_login_test": RecaptchaV3Policy(
target_id="approved_login_test",
website_url="https://approved.example.com/login",
website_key="PUBLIC_SITE_KEY",
page_action="login",
minimum_score=0.7,
enterprise=False,
proxy_profile=None,
allowed_crew_role="verification_specialist",
)
}
सार्वजनिक साइट कुंजी एक खाता गुप्त नहीं है, लेकिन अभी भी एक भरोसेमंद कॉन्फ़िगरेशन से आना चाहिए ताकि मॉडल उपकरण को रीडायरेक्ट न कर सके।
pageAction का अवलोकन करें, अनुमान न लगाएंकैपसॉल्वर के रीकैपचा वी३ दस्तावेजीकरण में pageAction को एक वैकल्पिक कार्य क्षेत्र के रूप में सूचीबद्ध किया गया है और यह बताया गया है कि मान वेबपेज के grecaptcha.execute कॉल में पाया जा सकता है।
@dataclass(frozen=True)
class PageObservation:
target_id: str
current_url: str
observed_action: str
observed_site_key: str
form_state: str
observed_at: str
def validate_observation(
observation: PageObservation,
policy: RecaptchaV3Policy,
) -> None:
if observation.current_url != policy.website_url:
raise PermissionError("अवलोकित यूआरएल नीति से मेल नहीं खाता")
if observation.observed_site_key != policy.website_key:
raise ValueError("अवलोकित साइट कुंजी नीति से मेल नहीं खाता")
if observation.observed_action != policy.page_action:
raise ValueError("अवलोकित पृष्ठ कार्य नीति से मेल नहीं खाता")
if observation.form_state != "READY_FOR_VERIFICATION":
raise ValueError("एप्लिकेशन अवस्था तैयार नहीं है")
उपकरण को अनिश्चित पैरामीटर के लिए टोकन बनाने के बजाय असंगतियों को अस्वीकृत करना चाहिए।
| पैरामीटर | उद्देश्य | नीति नियम |
|---|---|---|
captcha_type |
एजेंट एसडीके में रीकैपचा वी३ चुनें | निश्चित करें reCaptchaV3 |
website_url |
चुनौती के साथ पृष्ठ | रजिस्टर से लोड करें |
website_key |
सार्वजनिक साइट कुंजी | रजिस्टर से लोड करें और पृष्ठ के साथ जांचें |
page_action |
रनटाइम वी३ कार्य | अवलोकन के साथ मेल खाना चाहिए |
min_score |
मांगित न्यूनतम स्कोर | लक्ष्य नीति द्वारा सेट करें |
enterprise |
मानक या एंटरप्राइज मार्ग | एकीकरण विन्यास द्वारा निश्चित करें |
proxy |
वैकल्पिक नेटवर्क पहचान | आवश्यकता होने पर एक गुप्त प्रोफाइल से निर्धारित करें |
कैपसॉल्वर मानक, एंटरप्राइज, प्रॉक्सी और प्रॉक्सी-रहित कार्य विविधताओं के लिए दस्तावेजीकरण करता है। इसका परिणाम जब उपयुक्त मोड सक्रिय होता है तो gRecaptchaResponse, उपयोगकर्ता-एजेंट डेटा और सत्र मान शामिल हो सकते हैं।
कैपसॉल्वर उत्पाद पृष्ठ अभिकल्पना से पहले समर्थित कार्य परिवार की पुष्टि करने में मदद करता है।
import os
from typing import Literal
from crewai.tools import tool
from pydantic import BaseModel, Field
from capsolver_agent.schema import create_executor
executor = create_executor(api_key=os.environ["CAPSOLVER_API_KEY"])
class SolveRequest(BaseModel):
target_id: str = Field(description="पंजीकृत लक्ष्य पहचानकर्ता")
crew_role: str = Field(description="सत्यापन के लिए भूमिका")
observed_action: str = Field(description="लाइव पृष्ठ पर अवलोकित कार्य")
observed_site_key: str = Field(description="लाइव पृष्ठ पर अवलोकित साइट कुंजी")
state_id: str = Field(description="अपरिचित सर्वर-साइड एप्लिकेशन अवस्था पहचानकर्ता")
class SolveResult(BaseModel):
status: Literal["verified", "review_required", "stopped"]
target_id: str
state_id: str
reason: str
task_attempted: bool
परिणाम मॉडल बारीकी से टोकन, एपीआई कुंजी, प्रॉक्सी, कुकीज और कच्चा प्रदाता परिणाम शामिल नहीं करता है।
PROXY_VAULT = {
"approved_proxy": os.environ.get("APPROVED_PROXY")
}
async def submit_token_and_verify(
*,
state_id: str,
token: str,
policy: RecaptchaV3Policy,
) -> bool:
"""एप्लिकेशन-स्वामित्व जमा-और-जांच कार्य।"""
response = await application_sessions.submit_recaptcha_v3(
state_id=state_id,
token=token,
expected_action=policy.page_action,
)
return (
response.current_url.startswith("https://approved.example.com/account")
and response.semantic_marker == "AUTHENTICATED_ACCOUNT_PAGE"
and response.challenge_present is False
)
application_sessions आपके अधिकृत ब्राउजर या HTTP सत्र सेवा का प्रतिनिधित्व करता है। सॉल्वर उपकरण इसका उपयोग करता है, लेकिन मॉडल को इसके प्रमाण पत्र नहीं मिलते हैं।
@tool("स्वीकृत रीकैपचा वी३ हल करें", result_schema=SolveResult)
async def solve_approved_recaptcha_v3(
target_id: str,
crew_role: str,
observed_action: str,
observed_site_key: str,
state_id: str,
) -> dict:
"""एक पंजीकृत रीकैपचा वी३ चरण हल करें और एप्लिकेशन अवस्था की पुष्टि करें।"""
policy = TARGETS.get(target_id)
if policy is None:
return SolveResult(
status="stopped",
target_id=target_id,
state_id=state_id,
reason="अज्ञात लक्ष्य",
task_attempted=False,
).model_dump()
if crew_role != policy.allowed_crew_role:
return SolveResult(
status="stopped",
target_id=target_id,
state_id=state_id,
reason="इस उपकरण को बुलाने के लिए भूमिका अनुमत नहीं है",
task_attempted=False,
).model_dump()
if observed_action != policy.page_action:
return SolveResult(
status="review_required",
target_id=target_id,
state_id=state_id,
reason="अवलोकित कार्य लक्ष्य नीति के साथ मेल नहीं खाता",
task_attempted=False,
).model_dump()
if observed_site_key != policy.website_key:
return SolveResult(
status="review_required",
target_id=target_id,
state_id=state_id,
reason="अवलोकित साइट कुंजी लक्ष्य नीति के साथ मेल नहीं खाता",
task_attempted=False,
).model_dump()
args = {
"captcha_type": "reCaptchaV3",
"website_url": policy.website_url,
"website_key": policy.website_key,
"page_action": policy.page_action,
"min_score": policy.minimum_score,
"enterprise": policy.enterprise,
}
if policy.proxy_profile:
args["proxy"] = PROXY_VAULT[policy.proxy_profile]
result = await executor.execute("solve_captcha", args)
if not result.get("success"):
return SolveResult(
status="review_required",
target_id=target_id,
state_id=state_id,
reason="कैपसॉल्वर कार्य पूर्ण नहीं हुआ",
task_attempted=True,
).model_dump()
solution = result.get("solution") or {}
token = solution.get("token")
if not token:
return SolveResult(
status="review_required",
target_id=target_id,
state_id=state_id,
reason="कार्य परिणाम में टोकन नहीं है",
task_attempted=True,
).model_dump()
verified = await submit_token_and_verify(
state_id=state_id,
token=token,
policy=policy,
)
return SolveResult(
status="verified" if verified else "review_required",
target_id=target_id,
state_id=state_id,
reason="एप्लिकेशन अवस्था पुष्टि की गई" if verified else "एप्लिकेशन अवस्था पुष्टि नहीं की गई",
task_attempted=True,
).model_dump()
इस कार्यान्वयन में गुप्त जानकारी भरोसेमंद कोड में रहती है और क्रू को केवल नीति-सुरक्षित स्थिति दी जाती है।
from crewai import Agent, Crew, Process, Task
verification_agent = Agent(
role="verification_specialist",
goal="केवल पंजीकृत सत्यापन चरण पूरा करें और सत्यापित अवस्था रिपोर्ट करें",
backstory=(
"आप अनुमोदित सत्यापन उपकरण चलाते हैं। आप कभी लक्ष्य आईडी, साइट कुंजी, कार्य, प्रमाण पत्र या सफलता अवस्था नहीं बनाते हैं।"
),
tools=[solve_approved_recaptcha_v3],
allow_delegation=False,
verbose=True,
)
verification_task = Task(
description=(
"प्रदान किए गए अवलोकन में निर्दिष्ट पंजीकृत लक्ष्य के लिए, यदि यूआरएल, साइट कुंजी, कार्य और अवस्था पुष्टि की गई है, तो केवल एक बार उपकरण का उपयोग करें। गुप्त जानकारी के बिना संरचित स्थिति लौटाएं।"
),
expected_output="एक संरचित वेरिफाइड, रिव्यू आवश्यक या बंद परिणाम।",
agent=verification_agent,
)
crew = Crew(
agents=[verification_agent],
tasks=[verification_task],
process=Process.sequential,
verbose=True,
)
कभी-कभी सॉल्वर उपकरण को सभी एजेंट में जोड़ें। एक भूमिका तक सीमित करके स्वीकृति और लेखा-जोखा स्पष्ट होता है।
from datetime import datetime, timedelta, timezone
ATTEMPTS: dict[tuple[str, str], datetime] = {}
def claim_attempt(target_id: str, state_id: str) -> bool:
key = (target_id, state_id)
now = datetime.now(timezone.utc)
prior = ATTEMPTS.get(key)
if prior and now - prior < timedelta(minutes=2):
return False
ATTEMPTS[key] = now
return True
executor.execute() से पहले claim_attempt() कॉल करें। एक ही एप्लिकेशन अवस्था के लिए दूसरा टोकन न बनाएं।
क्रूएआई मेमोरी, ट्रेस और विस्तृत लॉग उपकरण आउटपुट को संग्रहीत कर सकते हैं। केवल निम्नलिखित लौटाएं:
{
"status": "verified",
"target_id": "approved_login_test",
"state_id": "state_7c19",
"reason": "एप्लिकेशन अवस्था पुष्टि की गई",
"task_attempted": true
}
टोकन, कैपसॉल्वर एपीआई कुंजी, प्रॉक्सी मान, ब्राउजर कुकी, कच्चा एचटीएमएल, पासवर्ड या व्यक्तिगत फॉर्म डेटा कभी न लौटाएं।
कैपसॉल्वर त्रुटि और समस्या निवारण एफक्यूएए क्रू के बिना क्रेडेंशियल उजागर करे बिना प्रदाता-त्रुटि वर्गीकरण में सहायता कर सकता है।
सत्यापक को कई स्वतंत्र संकेतों की आवश्यकता होती है:
@dataclass(frozen=True)
class StateCheck:
expected_path_prefix: str
required_marker: str
forbidden_markers: tuple[str, ...]
def is_verified(page, check: StateCheck) -> bool:
return (
page.url.path.startswith(check.expected_path_prefix)
and page.has_semantic_marker(check.required_marker)
and not any(page.contains(marker) for marker in check.forbidden_markers)
and page.http_status == 200
)
बदला गया यूआरएल अकेले पर्याप्त नहीं है। अपेक्षित मार्ग, सामान्य चिह्न, स्थिति और ज्ञात चुनौती या त्रुटि अवस्थाओं की अनुपस्थिति की आवश्यकता होती है।
CapSolver द्वारा व्यवसायिक विकल्प और वैकल्पिक सत्र मोड के बारे में दस्तावेज किए गए हैं। क्रू को इन विकल्पों के बारे में अनुमान न लगाएं।
@dataclass(frozen=True)
class RecaptchaV3Policy:
target_id: str
website_url: str
website_key: str
page_action: str
minimum_score: float
enterprise: bool
is_session: bool
proxy_profile: str | None
allowed_crew_role: str
max_attempts: int = 1
अगर अनुमोदित लक्ष्य व्यवसायिक है, तो उस तथ्य को नीति में संग्रहीत करें। यदि सत्र मोड की आवश्यकता है, तो एप्लिकेशन सत्र सेवा में वापस किए गए सत्र मानों का उपयोग करें और उन्हें क्रू आउटपुट में रखें।
| डिज़ाइन | पैरामीटर अखंडता | गोपनीय सुरक्षा | पृष्ठ-अवस्था सुनिश्चित करें | सिफारिश |
|---|---|---|---|---|
| मॉडल यूआरएल, कुंजी और क्रिया प्रदान करता है | कम | कम | कम | बचें |
| टूल क्रू को टोकन वापस करता है | मध्यम | कम | कम | बचें |
| रजिस्टर-समाधान टूल जमा करता है और सत्यापित करता है | उच्च | उच्च | उच्च | प्राथमिकता |
| मानव-केवल सत्यापन चरण | उच्च | उच्च | उच्च | संवेदनशील या अनिश्चित अवस्थाओं के लिए उपयोग करें |
प्राथमिक डिज़ाइन मॉडल के निर्णय अधिकार के साथ रखता है लेकिन निष्पादन अधिकार को विश्वसनीय कोड में रखता है।
छिपाए गए क्षेत्रों की निगरानी करें जैसे:
SAFE_FIELDS = {
"target_id",
"crew_role",
"action_match",
"task_attempted",
"provider_category",
"duration_ms",
"verified",
"review_reason",
}
def safe_event(event: dict) -> dict:
return {key: event[key] for key in SAFE_FIELDS if key in event}
CapSolver स्थिति पृष्ठ एप्लिकेशन-विशिष्ट विफलताओं से प्रदाता उपलब्धता के बीच अंतर करने में मदद कर सकता है।
import pytest
@pytest.mark.asyncio
async def test_unknown_target_stops_before_task():
result = await solve_approved_recaptcha_v3.run(
target_id="unknown",
crew_role="verification_specialist",
observed_action="login",
observed_site_key="x",
state_id="state-1",
)
assert result["status"] == "stopped"
assert result["task_attempted"] is False
@pytest.mark.asyncio
async def test_action_mismatch_requests_review():
result = await solve_approved_recaptcha_v3.run(
target_id="approved_login_test",
crew_role="verification_specialist",
observed_action="checkout",
observed_site_key="PUBLIC_SITE_KEY",
state_id="state-2",
)
assert result["status"] == "review_required"
assert result["task_attempted"] is False
अनुक्रमित प्रयास ब्लॉकिंग, गोपनीयता छिपाना, अनुपस्थित टोकन निपटान, व्यवसायिक नीति और पृष्ठ-सत्यापन विफलता के साथ परीक्षण भी करें।
अतिरिक्त कोड: CapSolver डैशबोर्ड पर WEBS कोड का उपयोग करके हर भुगतान पर 5% अतिरिक्त बोनस प्राप्त करें।
CapSolver CAPTCHA-हल करने वाला FAQ अतिरिक्त कार्य-जीवन चक्र दिशा-निर्देश प्रदान करता है।
केवल आपके द्वारा स्वामित्व, परीक्षण या स्पष्ट अनुमति के साथ ऑटोमेट करने के लिए साइटों पर CrewAI reCAPTCHA v3 सॉल्वर का उपयोग करें। शर्तों, दर सीमाओं, प्राधिकरण सीमाओं, गोपनीयता के कर्तव्यों और आंतरिक एक्सेस नीतियों का सम्मान करें। एक सार्वजनिक साइट कुंजी एक सुरक्षित प्रक्रिया तक पहुंच की अनुमति नहीं देती है। अहम जमा, भुगतान, खाता बदलाव और संवेदनशील डेटा निर्णयों को अलग स्वीकृति नियंत्रण के पीछे रखें।
एक उत्पादन CrewAI reCAPTCHA v3 सॉल्वर संकीर्ण, प्रकार और नीति नियंत्रित होना चाहिए। CrewAI को सत्यापन की आवश्यकता की पहचान करनी चाहिए, लेकिन लक्ष्य, साइट कुंजी, पृष्ठ क्रिया, स्कोर, व्यवसायिक मोड और नेटवर्क सेटिंग्स के निर्णय को विश्वसनीय कोड में हल करना चाहिए। CapSolver को एक सत्यापित अवस्था के लिए एक बार चलाना चाहिए, टोकन को सर्वर-पक्ष पर जमा करें, और जब इच्छित पृष्ठ सत्यापित हो जाए तो क्रू को केवल छिपाए गए परिणाम वापस करें।
CapSolver के साथ अधिकृत कार्यान्वयन शुरू करें, एक नियंत्रित पृष्ठ पर इसका परीक्षण करें और उत्पादन उपयोग से पहले अनुप्रयोग, दोहराए गए कॉल, छिपाए गए और पृष्ठ-अवस्था परीक्षण जोड़ें।
क्रूएआई दस्तावेज़ी कैपसॉल्वर एजेंट एक्सीक्यूटर के लिए एक प्रकार के टूल कॉल कर सकता है। लक्ष्य समाधान, गोपनीयता, टोकन जमा और सत्यापन को विश्वसनीय एप्लिकेशन कोड में रखें।
लक्ष्य URL और साइट कुंजी आवश्यक हैं। पृष्ठ क्रिया, न्यूनतम स्कोर, व्यवसायिक सेटिंग, सत्र मोड और प्रॉक्सी अनुमोदित लक्ष्य कॉन्फ़िगरेशन पर निर्भर करते हैं।
नहीं। जीवंत अनुमोदित पृष्ठ से क्रिया का अवलोकन करें और इसकी तुलना सर्वर-पक्ष नीति मान से करें।
नहीं। इसे विश्वसनीय कोड में जमा करें और केवल छिपाए गए सत्यापित, समीक्षा आवश्यक या रोके गए स्थिति वापस करें।
डिफ़ॉल्ट रूप से प्रत्येक अवलोकित एप्लिकेशन अवस्था के लिए एक प्रयास का उपयोग करें। एक अतिरिक्त प्रयास के लिए एक नई अवलोकन और स्पष्ट नीति निर्णय की आवश्यकता होती है।
2026 के लिए क्लोकब्राउज़र समीक्षा विशेषताओं, मूल्य निर्धारण, लाइसेंसिंग, डेप्लॉयमेंट विकल्प, लाभ, सीमाएं, विकल्प और आदर्श उपयोग मामलों को कवर करती है।

CloakBrowser के साथ CapSolver के एकीकृत करें Playwright-अनुकूल Python स्वचालन के माध्यम से, शामिल reCAPTCHA v2, छवि कार्य, कोड और समस्या निवारण।
