
Rajinder Singh
Deep Learning Researcher

detect, get_captcha_info या solve_on_page का निर्धारित बरी सीमाओं पर उपयोग करें।एक एआई ब्राउजर बरी हैंगर वह रनटाइम लेयर है जो अप्रत्याशित रूप से पेज स्थिति बदलते समय ब्राउजर कार्य को नियंत्रित रखता है। मॉडल अगला व्यावसायिक चरण निर्धारित कर सकता है, लेकिन हैंगर को प्लेयराइट संदर्भ, अनुमोदित-होस्ट नीति, नेविगेशन चेकपॉइंट्स, पेज वर्गीकरण, समर्थित चुनौति बरी, पुनर्प्रयास सीमा, ट्रेस, स्क्रीनशॉट और अनुक्रम के अधिकार होने चाहिए। कैपसॉल्वर इस लेयर में एक निर्धारित बरी क्षमता के रूप में फिट होता है: capsolver-core समर्थित चुनौतियों की पहचान कर सकता है, पैरामीटर पढ़ सकता है, उन्हें हल कर सकता है और परिणाम को समान पृष्ठ में भर सकता है। हैंगर फिर यह सुनिश्चित करता है कि अपेक्षित एप्लिकेशन स्थिति वापस आ गई है जब तक कि एजेंट आगे बढ़ने की अनुमति नहीं दी जाती। इस गाइड में नीति मॉडल, स्थिति मशीन, एसिंक्रोनस कॉन्टेक्स्ट मैनेजर, बरी फंक्शन, कल्पित रिकॉर्डर, ओपनटेलीमेट्री स्पैन, परीक्षण और उत्पादन नियंत्रण के लिए निर्माण किया जाता है।
हैंगर मॉडल नहीं है और ब्राउजर ड्राइवर नहीं है। यह उनके बीच नियंत्रण समतल है।
एजेंट से व्यावसायिक लक्ष्य
↓
ब्राउजर बरी हैंगर
├─ लक्ष्य नीति
├─ प्लेयराइट संदर्भ
├─ स्थिति वर्गीकरण
├─ चेकपॉइंट स्टोर
├─ कैपसॉल्वर बरी
├─ पुनर्प्रयास बजट
├─ ट्रेस + कल्पित
└─ साफ करें
↓
अनुमोदित पेज कार्रवाई या ऑपरेटर समीक्षा
प्लेयराइट के फिक्सचर दस्तावेज़ निरस्त ब्राउजर और पृष्ठ संदर्भ, दोहराए जा सकने वाले सेटअप और अनुक्रमणीयता, और स्वचालित डिबग जोड़े के महत्व पर जोर देता है। इन गुणों को सीधे उत्पादन हैंगर में अनुवाद किया जा सकता है।
कैपसॉल्वर कोर एसडीके दस्तावेज़ चार उपयोगी ब्राउजर चरणों की परिभाषा करता है: detect, get_captcha_info, solve और solve_on_page.
मॉडल एक ज्ञात उत्पाद पृष्ठ खोलने या जनता के स्थिति को पढ़ने का निर्णय ले सकता है। हैंगर यह निर्णय लेता है कि क्या अनुरोधित होस्ट अनुमत है, क्या वर्तमान पृष्ठ अपेक्षित है, क्या बरी समर्थित है, और क्या पुनर्प्रयास बजट बचा है।
| निर्णय | मालिक | कारण |
|---|---|---|
| अगला व्यावसायिक चरण | एजेंट या वर्कफ़्लो | कार्य संदर्भ की आवश्यकता होती है |
| होस्ट और पथ अनुमति | हैंगर नीति | निर्धारित होना आवश्यक है |
| पेज-स्टेट वर्गीकरण | हैंगर वर्गीकरण | भरोसेमंद DOM/नेटवर्क साक्ष्य का उपयोग करना आवश्यक है |
| चुनौति बरी कॉल | हैंगर | गुप्त डेटा और ब्राउजर ऑब्जेक्ट की आवश्यकता होती है |
| टोकन/कुकी हैंडलिंग | हैंगर | संवेदनशील रनटाइम डेटा |
| जारी रखें या समीक्षा | हैंगर स्थिति मशीन | सीमित बरी के नियम लागू करता है |
| अंतिम सबमिशन | मानव या विशेष सेवा | उच्च प्रभाव कार्य |
कैपसॉल्वर एआई एजेंट गाइड एक ही विभाजन कार्य की व्याख्या करता है: मॉडल तर्क करता है, जबकि कैपसॉल्वर के स्तर समर्थित चुनौति कार्य करते हैं।
अनुमोदित होस्ट, पथ, कार्रवाई और बजट के लिए एक संकीर्ण नीति शुरू करें।
from dataclasses import dataclass, field
from urllib.parse import urlparse
@dataclass(frozen=True)
class TargetPolicy:
allowed_hosts: set[str]
allowed_path_prefixes: tuple[str, ...]
max_navigations: int = 20
max_recovery_attempts: int = 1
capture_screenshots: bool = True
capture_html: bool = False
allow_form_submission: bool = False
def validate_url(self, url: str) -> None:
parsed = urlparse(url)
if parsed.scheme != "https":
raise PermissionError("केवल HTTPS लक्ष्य अनुमत हैं")
if parsed.hostname not in self.allowed_hosts:
raise PermissionError("होस्ट अनुमोदित नीति से बाहर है")
if not parsed.path.startswith(self.allowed_path_prefixes):
raise PermissionError("पथ अनुमोदित नीति से बाहर है")
टेंट के विशिष्ट नीति का उपयोग करें। असंबंधित ग्राहकों या परियोजनाओं के लिए एक वैश्विक अनुमोदित सूची बनाए रखें।
कैपसॉल्वर एआई और ऑटोमेशन एफएक्यू एकीकरण संदर्भ प्रदान करता है, जबकि कैपसॉल्वर वेब-स्क्रैपिंग एफएक्यू जवाबदेह सार्वजनिक-डेटा वर्कफ़्लो को कवर करता है।
एक बरी हैंगर को असीमित "पुन: प्रयास करें" लूप के बजाय स्पष्ट स्थितियों का उपयोग करना चाहिए।
from enum import Enum
class BrowserState(str, Enum):
EXPECTED_PAGE = "अपेक्षित पृष्ठ"
SUPPORTED_CHALLENGE = "समर्थित चुनौति"
UNKNOWN_PAGE = "अज्ञात पृष्ठ"
RECOVERING = "बरी कर रहा है"
RECOVERED = "बरी हो गया"
REVIEW_REQUIRED = "समीक्षा आवश्यक"
FAILED = "असफल"
अनुमति संक्रमण को डेटा के रूप में प्रस्तुत किया जा सकता है:
ALLOWED_TRANSITIONS = {
BrowserState.EXPECTED_PAGE: {
BrowserState.EXPECTED_PAGE,
BrowserState.SUPPORTED_CHALLENGE,
BrowserState.UNKNOWN_PAGE,
},
BrowserState.SUPPORTED_CHALLENGE: {
BrowserState.RECOVERING,
BrowserState.REVIEW_REQUIRED,
},
BrowserState.RECOVERING: {
BrowserState.RECOVERED,
BrowserState.REVIEW_REQUIRED,
BrowserState.FAILED,
},
BrowserState.RECOVERED: {
BrowserState.EXPECTED_PAGE,
BrowserState.REVIEW_REQUIRED,
},
}
हर संक्रमण की जांच करें। इससे लूप दृश्य और परीक्षण योग्य बन जाते हैं।
एक चेकपॉइंट सुरक्षित मेटाडेटा के रिकॉर्ड करता है जिसकी आवश्यकता वर्कफ़्लो बरी हो गया है या नहीं यह निर्धारित करने के लिए होती है।
from dataclasses import dataclass
from datetime import datetime, timezone
@dataclass
class BrowserCheckpoint:
url: str
title: str
expected_selector: str | None
navigation_index: int
recovery_attempts: int
observed_at: str
async def checkpoint(page, expected_selector, nav_index, attempts):
return BrowserCheckpoint(
url=page.url,
title=await page.title(),
expected_selector=expected_selector,
navigation_index=nav_index,
recovery_attempts=attempts,
observed_at=datetime.now(timezone.utc).isoformat(),
)
चेकपॉइंट में स्टोरेज स्थिति, कुकीज, पासवर्ड, टोकन या पूर्ण फॉर्म मान नहीं संग्रहीत करें।
भरोसेमंद DOM साक्ष्य, शीर्षक, URL और अपेक्षित सेलेक्टर का उपयोग करें। कभी-कभी मॉडल को स्क्रीनशॉट से पृष्ठ स्थिति के बारे में अनुमान नहीं लगाना चाहिए।
async def classify_page(page, expected_selector: str) -> BrowserState:
if await page.locator(expected_selector).count():
return BrowserState.EXPECTED_PAGE
title = (await page.title()).strip().lower()
html = (await page.content()).lower()
challenge_markers = (
"केवल एक मौमेंट...",
"चैलेंज-प्लेटफॉर्म",
"cf-chl-",
)
if any(marker in title or marker in html for marker in challenge_markers):
return BrowserState.SUPPORTED_CHALLENGE
return BrowserState.UNKNOWN_PAGE
लक्ष्य-विशिष्ट मार्कर और नियंत्रित फिक्सचर्स का उपयोग करें। एक मार्कर सेट एक रूटिंग हेयूरिस्टिक है, न कि एक एक्सेस अधिकार।
कैपसॉल्वर कैप्चा-हल करने वाले एफएक्यू समर्थित चुनौति वर्कफ़्लो की व्याख्या करता है, जबकि कैपसॉल्वर त्रुटि एफएक्यू विफलताओं के वर्गीकरण में मदद करता है।
आधिकारिक कोर एसडीके अपने एसिंक्रोनस कॉन्टेक्स्ट मैनेजर के उपयोग की सिफारिश करता है ताकि HTTP संयोजन दोहराए जा सकें और सही ढंग से छोड़े जा सकें।
import os
from capsolver_core import create_capsolver
def create_recovery_client():
return create_capsolver(
api_key=os.environ["CAPSOLVER_API_KEY"],
default_timeout=120,
polling_interval=5,
request_timeout_ms=30000,
source="ai-browser-recovery-harness",
version="1.0.0",
)
हर DOM चेक के लिए एक नई क्लाइंट न बनाएं। हैंगर जीवन चक्र के लिए एक क्लाइंट बनाएं और अंत में बंद करें।
detect और get_captcha_info का उपयोग निदान के लिए करें, फिर solve_on_page के साथ सभी-एक-साथ ब्राउजर फ्लो के लिए।
from capsolver_core import SolveOnPageOptions
async def recover_supported_challenge(
cap,
page,
policy: TargetPolicy,
recovery_attempts: int,
) -> dict:
policy.validate_url(page.url)
if recovery_attempts >= policy.max_recovery_attempts:
return {
"success": False,
"state": BrowserState.REVIEW_REQUIRED,
"reason": "बरी बजट खत्म हो गया",
}
detected = await cap.detect(page)
if not detected:
return {
"success": False,
"state": BrowserState.REVIEW_REQUIRED,
"reason": "कोई समर्थित चुनौति पता नहीं चली",
}
infos = await cap.get_captcha_info(page)
results = await cap.solve_on_page(
page,
options=SolveOnPageOptions(
autofill=True,
throw_on_error=False,
timeout=120,
polling_interval=5,
),
)
errors = [item.error for item in results if item.error]
filled = bool(results) and all(item.filled for item in results)
return {
"success": filled and not errors,
"state": (
BrowserState.RECOVERED
if filled and not errors
else BrowserState.REVIEW_REQUIRED
),
"detected_count": len(detected),
"info_count": len(infos),
"result_count": len(results),
"errors": errors,
}
मूल page ऑब्जेक्ट को बरकरार रखें। solve_on_page का उद्देश्य वर्तमान ब्राउजर सत्र में पता लगाना, हल करना और भरना है।
एक सफल टूल प्रतिक्रिया यह साबित नहीं करती कि अपेक्षित एप्लिकेशन पृष्ठ वापस आ गया है।
async def verify_recovery(
page,
expected_selector: str,
timeout_ms: int = 15000,
) -> bool:
try:
await page.locator(expected_selector).wait_for(
state="visible",
timeout=timeout_ms,
)
return True
except Exception:
return False
बरी के बाद, पृष्ठ का पुन: वर्गीकरण करें। यदि चुनौति बरकरार रहती है या अपेक्षित सेलेक्टर अनुपस्थित है, तो रुकें और समीक्षा मांगें।
async def recover_and_verify(cap, page, policy, expected_selector, attempts):
result = await recover_supported_challenge(
cap=cap,
page=page,
policy=policy,
recovery_attempts=attempts,
)
if not result["success"]:
return result
if not await verify_recovery(page, expected_selector):
return {
"success": False,
"state": BrowserState.REVIEW_REQUIRED,
"reason": "बरी के बाद अपेक्षित पृष्ठ वापस नहीं आया",
}
return {
"success": True,
"state": BrowserState.EXPECTED_PAGE,
"reason": "पृष्ठ बरी हो गया और पुष्टि कर दी गई",
}
एक एसिंक्रोनस कॉन्टेक्स्ट मैनेजर का उपयोग करके सुनिश्चित करें कि साफ करें।
from contextlib import asynccontextmanager
from playwright.async_api import async_playwright
@dataclass
class BrowserHarness:
policy: TargetPolicy
playwright: object
browser: object
context: object
page: object
capsolver: object
navigation_count: int = 0
recovery_attempts: int = 0
@asynccontextmanager
async def browser_recovery_harness(policy: TargetPolicy):
async with async_playwright() as playwright:
browser = await playwright.chromium.launch(headless=True)
context = await browser.new_context()
page = await context.new_page()
async with create_recovery_client() as cap:
harness = BrowserHarness(
policy=policy,
playwright=playwright,
browser=browser,
context=context,
page=page,
capsolver=cap,
)
try:
yield harness
finally:
await context.close()
await browser.close()
मॉडल या वर्कफ़्लो को नियंत्रित विधियां मिलती हैं, न कि असीमित ब्राउजर एक्सेस।
async def safe_navigate(
harness: BrowserHarness,
url: str,
expected_selector: str,
) -> dict:
harness.policy.validate_url(url)
if harness.navigation_count >= harness.policy.max_navigations:
return {
"success": False,
"state": BrowserState.REVIEW_REQUIRED,
"reason": "नेविगेशन बजट खत्म हो गया",
}
harness.navigation_count += 1
await harness.page.goto(url, wait_until="domcontentloaded")
state = await classify_page(harness.page, expected_selector)
if state == BrowserState.EXPECTED_PAGE:
return {"success": True, "state": state}
if state == BrowserState.SUPPORTED_CHALLENGE:
result = await recover_and_verify(
cap=harness.capsolver,
page=harness.page,
policy=harness.policy,
expected_selector=expected_selector,
attempts=harness.recovery_attempts,
)
harness.recovery_attempts += 1
return result
return {
"success": False,
"state": BrowserState.REVIEW_REQUIRED,
"reason": "अज्ञात पृष्ठ स्थिति",
}
एजेंट safe_navigate के लिए अनुरोध कर सकता है, लेकिन हैंगर नीति और बरी पथ के मालिक है।
ओपन टेलीमेट्री के जेनएआई निरीक्षण दिशानिर्देश ने मॉडल और टूल ऑपरेशन के लिए ट्रेस का वर्णन किया है। यह भी नोट करता है कि पूर्ण प्रॉम्प्ट और टूल सामग्री में संवेदनशील डेटा हो सकता है। डिफ़ॉल्ट रूप से मेटाडेटा-केवल स्पैन का उपयोग करें।
from opentelemetry import trace
tracer = trace.get_tracer("capsolver.browser_harness")
async def traced_safe_navigate(harness, url, expected_selector):
with tracer.start_as_current_span("browser.safe_navigate") as span:
span.set_attribute("browser.target_host", url.split("/")[2])
span.set_attribute("browser.navigation_index", harness.navigation_count + 1)
span.set_attribute("browser.recovery_attempts", harness.recovery_attempts)
result = await safe_navigate(harness, url, expected_selector)
span.set_attribute("browser.outcome", str(result.get("state")))
span.set_attribute("browser.success", bool(result.get("success")))
return result
केवल असफलता पर कल्पना करें
स्क्रीनशॉट और HTML व्यक्तिगत या गोपनीय डेटा में संलग्न हो सकते हैं। केवल नीति की अनुमति होने पर उन्हें ले, जहां संभव हो तो रेडैक्ट करें और छोटे अवधि के संदर्भ संग्रहीत करें।
from pathlib import Path
import secrets
async def capture_failure_artifacts(harness, directory: Path) -> dict:
artifact_id = secrets.token_hex(12)
screenshot = directory / f"{artifact_id}.png"
await harness.page.screenshot(
path=str(screenshot),
full_page=False,
)
return {
"artifact_id": artifact_id,
"screenshot_path": str(screenshot),
"url": harness.page.url,
"title": await harness.page.title(),
}
अवधि सीमा और पहुंच नियंत्रण का उपयोग करें। यदि केवल शीर्ष स्तर के राज्य की आवश्यकता हो तो पूर्ण-पृष्ठ स्क्रीनशॉट न लें।
CapSolver ब्राउजर ऑटोमेशन ब्लॉग में संबंधित कार्यान्वयन पैटर्न हैं, और CapSolver Chrome एक्सटेंशन गाइड विकास के दौरान समर्थित विजेट पैरामीटर की जांच में मदद कर सकता है।
अलग-अलग ब्राउजर संदर्भ और नियंत्रित पृष्ठ का उपयोग करें। Playwright फिक्सचर्स उपयोगी सेटअप और बर्बादी प्रदान करते हैं।
import pytest
@pytest.mark.asyncio
async def test_unknown_host_is_rejected():
policy = TargetPolicy(
allowed_hosts={"staging.example.com"},
allowed_path_prefixes=("/qa/",),
)
with pytest.raises(PermissionError):
policy.validate_url("https://other.example.net/qa/test")
@pytest.mark.asyncio
async def test_recovery_budget_is_bounded(fake_cap, fake_page):
policy = TargetPolicy(
allowed_hosts={"staging.example.com"},
allowed_path_prefixes=("/qa/",),
max_recovery_attempts=1,
)
result = await recover_supported_challenge(
cap=fake_cap,
page=fake_page,
policy=policy,
recovery_attempts=1,
)
assert result["state"] == BrowserState.REVIEW_REQUIRED
assert result["reason"] == "recovery budget exhausted"
निर्धारित चुनौती, समर्थित चुनौती, अज्ञात बीच के पृष्ठ, सफल भरने के बाद, समाधान विफलता, पुनर्जीवन चक्र, अपेक्षित सेलेक्टर की कमी के लिए फिक्सचर्स बनाएं।
| मापदंड | उद्देश्य |
|---|---|
| अपेक्षित-पृष्ठ दर | सफल सामान्य नेविगेशन मापता है |
| चुनौती सामना दर | अनुमोदित होस्ट द्वारा स्रोत बाधा दिखाता है |
| पुनर्जीवन सफलता दर | समर्थित पुनर्जीवन परिणाम मापता है |
| चुनौती-चक्र दर | दोहराए गए अंतर्निहित राज्य की जांच करता है |
| अज्ञात-पृष्ठ दर | डिज़ाइन, प्रमाणीकरण या नीति बदलाव की खोज करता है |
| P95 पुनर्जीवन देरी | उपयोगकर्ता-दृश्य देरी की ट्रैकिंग करता है |
| ऑपरेटर-समीक्षा दर | अनिर्णीत कार्य प्रवाह के आयाम को मापता है |
| कल्पना करने की दर | असफलता लॉगिंग के अत्यधिक होने की निगरानी करता है |
मापदंडों को लक्ष्य नीति, रास्ता, ब्राउजर संस्करण, चुनौती प्रकार और हैंडलर संस्करण द्वारा विभाजित करें। कभी-कभी चुनौती पुनर्जीवन विफलता को व्यावसायिक-कार्य विफलता के रूप में चिह्नित न करें बल्कि दोनों आयाम बरकरार रखें।
बोनस कोड: CapSolver डैशबोर्ड पर WEBS कोड का उपयोग करके प्रत्येक भुगतान पर 5% अतिरिक्त बोनस प्राप्त करें।
| दृष्टिकोण | ब्राउजर स्वामित्व | पुनर्जीवन नियंत्रण | सबसे अच्छा उपयोग |
|---|---|---|---|
| प्रत्यक्ष एजेंट ब्राउजर एक्सेस | एजेंट रनटाइम | प्रतिक्रिया-निर्भर | केवल कम जोखिम वाले प्रोटोटाइप के लिए |
| फ्रेमवर्क-विशिष्ट क्रिया | एजेंट फ्रेमवर्क | टूल वैलेट | तेजी से एकीकरण |
| विशेष रूप से पुनर्जीवन हैंडलर | स्वतंत्र नियंत्रण परत | निश्चित अवस्था मशीन | उत्पादन विश्वसनीयता और शासन |
| मानव-केवल पुनर्जीवन | ऑपरेटर | हस्तक्षेप | अस्वीकृत या उच्च जोखिम वाले कार्यक्रमों के लिए |
एक विशेष रूप से पुनर्जीवन हैंडलर अधिक इंजीनियरिंग की आवश्यकता होती है, लेकिन यह एक नीति और निगरानी परत बनाता है जो विभिन्न एजेंट फ्रेमवर्क के लिए सेवा प्रदान कर सकता है।
CapSolver उत्पाद पृष्ठ में समर्थित समाधान श्रेणियां सूचीबद्ध हैं, जबकि CapSolver AI ब्लॉग में एजेंट-फ्रेमवर्क उदाहरण हैं जो हैंडलर क्रिया को कॉल कर सकते हैं।
केवल आपके द्वारा स्वामित्व, परीक्षण या स्पष्ट अनुमति द्वारा ऑटोमेशन के लिए प्रणालियों पर ब्राउजर पुनर्जीवन हैंडलर का उपयोग करें। एक सफल चुनौती समाधान निजी सामग्री के अधिकार के लिए अनुमति प्रदान नहीं करता है, प्रमाणीकरण सीमाओं के अधीन रहता है, दर सीमा का उल्लंघन नहीं करता है या लेन-देन करता है। हैंडलर को सीमित, डिफ़ॉल्ट रूप से पठनीय और लेखा-जोखा रखें। अनिश्चितता को व्यक्ति के लिए रूपांतरित करें बजाय अनुमति के विस्तार के साथ।
एक AI ब्राउजर पुनर्जीवन हैंडलर चुनौती प्रबंधन को नियंत्रित रनटाइम क्षमता में बदल देता है। यह ब्राउजर संदर्भ के मालिक, लक्ष्य के विश्लेषण, पृष्ठ अवस्था वर्गीकरण, CapSolver Core के निश्चित सीमा पर उपयोग करता है, अपेक्षित पृष्ठ की पुष्टि करता है, रेडैक्ट किए गए टेलीमेट्री को रिकॉर्ड करता है और बाधित प्रयास के बाद रुक जाता है। एजेंट फ्रेमवर्क हैंडलर क्रिया को कॉल कर सकते हैं बिना गुप्त जानकारी या असीमित ब्राउजर नियंत्रण के बिना प्राप्त किए बिना।
CapSolver से शुरू करें, एक अनुमोदित स्टेजिंग एप्लिकेशन के खिलाफ स्टेट मशीन का कार्यान्वयन करें, और उत्पादन से पहले अलग-अलग फिक्सचर्स और विश्वसनीयता बैरियर्स जोड़ें।
नहीं। यह एक स्वतंत्र रनटाइम और नीति परत है जो एजेंट फ्रेमवर्क कॉल कर सकता है। हैंडलर ब्राउजर अवस्था, पुनर्जीवन, चेकपॉइंट, टेलीमेट्री और साफ करने के लिए जिम्मेदार है।
solve_on_page क्यों उपयोग करें?solve_on_page एक ही Playwright पृष्ठ पर निर्णय, पैरामीटर निकालना, हल करना और DOM भरना के संयोजन के लिए उपयुक्त है, जो निश्चित ब्राउजर पुनर्जीवन सीमा के लिए उपयुक्त है।
safe_navigate और read_public_page जैसी संकीर्ण हैंडलर क्रियाएं पसंद करें। ब्राउजर नीति के नियंत्रण को सुनिश्चित करने में कठिनाई होती है यदि ब्राउजर पृष्ठ अप्रत्यक्ष रूप से उपलब्ध होता है।
डिफ़ॉल्ट रूप से एक प्रयास का उपयोग करें। दोहराए गए चुनौतियां या अज्ञात पृष्ठ अवस्था के बजाय ऑपरेटर समीक्षा के लिए रूपांतरित करें।
लक्ष्य होस्ट, हैंडलर संस्करण, अवस्था संक्रमण, देरी, मानकीकृत त्रुटियां और कल्पना संदर्भ जैसे मेटाडेटा संग्रहीत करें। समाधान टोकन, कुकीज, API कुंजी, प्रॉक्सी आइडी, स्टोरेज स्थिति या निजी पृष्ठ सामग्री के बजाय नहीं।
CAPTCHA मूल्यांकन हार्नेस बनाएं जो AI एजेंट टूल कॉल के लिए CapSolver स्कीमा, फिक्सचर, ट्रेस ग्रेडर, असर्टियन्स, रिग्रेशन डेटासेट्स और CI गेट्स के साथ हो।

जानें कैसे हल करें Cloudflare Turnstile LlamaIndex एजेंट्स में CapSolver, FunctionTool स्कीमा, सुरक्षित टोकन प्रबंधन, पुनः प्रयास और ब्राउज़र बरामदगी के साथ।
