
Rajinder Singh
Deep Learning Researcher

FunctionTool.from_defaults() के साथ एक संकीर्ण CapSolver Turnstile फ़ंक्शन को लपेटें।AntiTurnstileTaskProxyLess कार्य का उपयोग करें।action और cdata भेजें।LlamaIndex एजेंट में Cloudflare Turnstile को हल करने का सबसे सुरक्षित तरीका यह है कि CapSolver को एक प्रकार के कार्य उपकरण के रूप में प्रस्तुत करें जबकि ब्राउज़र स्टेट, गोपनीयता और सत्यापन चेक एजेंट में नहीं हों। LlamaIndex यह निर्णय ले सकता है कि एक समर्थित चुनौती अगले अनुमोदित चरण को रोकती है, लेकिन निर्धारित पायथन को लक्ष्य की पुष्टि करनी चाहिए, दस्तावेज़ीकृत AntiTurnstileTaskProxyLess बनाना चाहिए, और ब्राउज़र कंट्रोलर को एक छोटे जीवनकाल वाला समाधान टोकन वापस करना चाहिए। यह CapSolver AI एजेंट विकास व्यवस्था का अनुसरण करता है: मॉडल निर्णय लेता है, एक उपकरण अनुकूलक क्रिया निर्धारित करता है, और मुख्य समाधान लेयर इसे कार्यान्वित करता है। यह गाइड ठीक Turnstile क्षेत्रों, LlamaIndex FunctionTool के कार्यान्वयन, FunctionAgent के कार्य प्रवाह, सुरक्षित टोकन हस्तांतरण, सीमित पुन: प्रयास और QA, RPA और अनुमति ब्राउज़र ऑटोमेशन के लिए ज़िम्मेदार उपयोग नियंत्रण के साथ दिखाता है।
LlamaIndex उपकरणों को एजेंट-संबंधित API के रूप में व्यवहार करता है। इसके आधिकारिक उपकरण दस्तावेज़ीकरण बताता है कि FunctionTool सिंक्रनस या असिंक्रनस पायथन फ़ंक्शन को लपेट सकता है और फ़ंक्शन साइनेचर से स्कीमा निगमित कर सकता है। उपकरण का नाम, वर्णन, अनोटेशन और डॉकस्ट्रिंग मॉडल द्वारा इसका उपयोग कब करना है, इसका निर्णय लेता है।
इस सीमा का उपयोग चुनौती बरामदी के लिए उपयोगी है क्योंकि मॉडल कभी भी अर्थहीन समाधान कोड उत्पन्न नहीं कर सकता है या CapSolver API कुंजी प्राप्त नहीं कर सकता है। एक संकीर्ण फ़ंक्शन केवल अनुमोदित पेज URL, Turnstile साइट की चाबी और वैकल्पिक विज्ञापन मेटाडेटा स्वीकार कर सकता है।
CapSolver AI ब्लॉग एजेंट एकीकरण को कवर करता है, जबकि CapSolver AI और ऑटोमेशन FAQ बताता है कि चुनौती बरामदी कैसे एक मौजूदा एजेंट स्टैक के साथ पूरक हो सकता है।
CapSolver के Cloudflare Turnstile दस्तावेज़ीकरण में AntiTurnstileTaskProxyLess निर्दिष्ट किया गया है। कार्य में websiteURL और websiteKey आवश्यक हैं। वैकल्पिक मेटाडेटा में विज्ञापन के action और cdata मान शामिल हो सकते हैं।
| क्षेत्र | आवश्यक | स्रोत | उद्देश्य |
|---|---|---|---|
type |
हाँ | निश्चित | AntiTurnstileTaskProxyLess |
websiteURL |
हाँ | अनुमोदित वर्तमान पेज | समाधान के साथ पेज का संबंध बनाए रखें |
websiteKey |
हाँ | Turnstile विज्ञापन | विज्ञापन कॉन्फ़िगरेशन की पहचान करें |
metadata.action |
नहीं | data-action |
विज्ञापन कार्य मान के बरकरार रखें |
metadata.cdata |
नहीं | data-cdata |
विज्ञापन द्वारा उपयोग किया गया ग्राहक डेटा बरकरार रखें |
CapSolver स्वचालित रूप से प्रबंधित, गैर-अंतर्क्रियात्मक और अदृश्य Turnstile प्रस्तुतियों का समर्थन करता है, इसलिए कार्य में एक उप-प्रकार की आवश्यकता नहीं होती है। Cloudflare के Turnstile दस्तावेज़ीकरण विज्ञापन और साइट मालिक द्वारा उपयोग किए गए सर्वर-साइड सत्यापन प्रक्रिया का वर्णन करता है।
pip install llama-index llama-index-llms-openai capsolver
उपयोक्ता के दस्तावेज़ीकरण में प्रदान किए गए विस्तृत CapSolver एजेंट व्यवस्था के लिए, कोर और एजेंट पैकेज भी स्थापित करें:
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
प्रॉम्प्ट के बाहर गोपनीयता को विन्यस्त करें:
export CAPSOLVER_API_KEY="CAP-xxxxxxxxxxxxxxxx"
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
नीचे दिए गए सीधे SDK उदाहरण में ठीक Turnstile कार्य क्षेत्रों का उपयोग किया गया है। LlamaIndex फ्रेमवर्क शेल को प्रदान करता है; CapSolver कार्य करता है।
कैपसॉल्वर को भेजने से पहले यूआरएल की पुष्टि करें। मॉडल किसी भी अनुमोदित होस्टनाम का चयन नहीं कर सकता है।
import os
from typing import Annotated
from urllib.parse import urlparse
import capsolver
capsolver.api_key = os.environ["CAPSOLVER_API_KEY"]
ALLOWED_HOSTS = {
"staging.example.com",
"qa.example.com",
}
def solve_turnstile(
website_url: Annotated[str, "अनुमोदित HTTPS पेज जिसमें Turnstile है"],
website_key: Annotated[str, "पेज से अनुमोदित Turnstile साइट की चाबी"],
action: Annotated[str, "वैकल्पिक data-action मान"] = "",
cdata: Annotated[str, "वैकल्पिक data-cdata मान"] = "",
) -> dict:
"""अनुमोदित पेज के लिए Cloudflare Turnstile हल करें और टोकन वापस करें।"""
parsed = urlparse(website_url)
if parsed.scheme != "https" or parsed.hostname not in ALLOWED_HOSTS:
return {
"success": False,
"error": "लक्ष्य अनुमोदित होस्टनाम अनुमति सूची के बाहर है",
}
if not website_key.startswith("0x4"):
return {
"success": False,
"error": "अपेक्षित Turnstile साइट-की फॉर्मेट नहीं है",
}
task = {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key,
}
metadata = {}
if action:
metadata["action"] = action
if cdata:
metadata["cdata"] = cdata
if metadata:
task["metadata"] = metadata
try:
solution = capsolver.solve(task)
token = solution.get("token")
if not token:
return {"success": False, "error": "कोई टोकन वापस नहीं किया गया"}
return {
"success": True,
"token": token,
"solution_type": solution.get("type", "turnstile"),
}
except Exception as exc:
return {"success": False, "error": str(exc)}
फॉर्मेट जांच एक उपयोगी शुरुआती चेतावनी है, लेकिन अनुमोदित पेज से ठीक पैरामीटर निकालने के स्थान पर नहीं है। विकास के दौरान विज्ञापन के विवरण की जांच करने के लिए CapSolver ब्राउज़र एक्सटेंशन गाइड का उपयोग करें।
FunctionTool.from_defaults() फ़ंक्शन साइनेचर और डॉकस्ट्रिंग को एजेंट उपकरण स्कीमा में बदल देता है।
from llama_index.core.tools import FunctionTool
turnstile_tool = FunctionTool.from_defaults(
fn=solve_turnstile,
name="solve_turnstile",
description=(
"केवल अनुमोदित HTTPS पेज के लिए Cloudflare Turnstile हल करें। "
"विश्वसनीय ब्राउज़र कंट्रोलर द्वारा प्रदान किए गए ठीक पेज URL, साइट की चाबी और वैकल्पिक क्रिया/सीडीटीए का उपयोग करें।"
),
)
नाम छोटा रखें और वर्णन ऑपरेशनल रखें। उपकरण को सामान्य पहुंच योग्यता के रूप में वर्णित न करें। मॉडल को यह समझ में आना चाहिए कि यह एक अनुमोदित कार्य प्रवाह में एक बरामदी क्रिया है।
LlamaIndex के FunctionAgent एक LLM के उपकरण कॉल क्षमता का उपयोग करके उपकरण चुनता है और निष्पादित करता है।
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI
llm = OpenAI(model="gpt-4o-mini", temperature=0)
agent = FunctionAgent(
tools=[turnstile_tool],
llm=llm,
system_prompt=(
"आप केवल अनुमोदित ब्राउज़र कार्य प्रवाह कार्य करते हैं। "
"विश्वसनीय एप्लिकेशन द्वारा ठीक पेज URL और साइट की चाबी प्रदान करते समय ही solve_turnstile कॉल करें। "
"कभी-भी लक्ष्य, कुंजी, क्रिया या सीडीटीए न बनाएं। एक बार उपकरण कॉल करें। यदि यह विफल रहता है, तो बंद करें और ऑपरेटर समीक्षा मांगें।"
),
)
निर्धारित ब्राउज़र कोड द्वारा उत्पन्न पैरामीटर के साथ चलाएं:
import asyncio
async def main():
response = await agent.run(
"अनुमोदित स्टेजिंग कार्य प्रवाह ने https://staging.example.com/account-check पर Turnstile पाया जिसकी साइट की चाबी 0x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA और क्रिया account_check है। "
"रजिस्टर्ड उपकरण को एक बार कॉल करें और संरचित परिणाम वापस करें।"
)
print(response)
asyncio.run(main())
उत्पादन में, अविश्वसनीय उपयोक्ता पाठ से सीधे इस संदेश का निर्माण बचें। ब्राउज़र कंट्रोलर को मान निकालने, पुष्टि करने और सीरियलाइज़ करने की आवश्यकता होती है।
एक Turnstile टोकन छोटे जीवनकाल वाला होता है और साइट कार्य प्रवाह से जुड़ा होता है। जब संभव हो, विश्वसनीय उपकरण परिणाम से सीधे निर्धारित ब्राउज़र कोड में टोकन पारित करें।
async def apply_turnstile_token(page, token: str) -> None:
await page.evaluate(
"""
(token) => {
const field = document.querySelector(
'input[name="cf-turnstile-response"]'
);
if (!field) {
throw new Error('Turnstile response field not found');
}
field.value = token;
field.dispatchEvent(new Event('input', { bubbles: true }));
field.dispatchEvent(new Event('change', { bubbles: true }));
}
""",
token,
)
कुछ एप्लिकेशन बुलाने-आधारित रेंडरिंग या सर्वर-प्रबंधित सबमिशन का उपयोग करते हैं। अपने स्वयं के स्टेजिंग एप्लिकेशन के साथ परीक्षण करें और इसके समर्थित एकीकरण का अनुसरण करें। Cloudflare के साइटवेरिफ़ाई दस्तावेज़ीकरण बताता है कि साइट मालिक टोकन के सर्वर-साइड सत्यापन करता है।
CapSolver Turnstile गाइड के लिए अनुप्रयोग संदर्भ प्रदान करता है, और CapSolver समस्या निवारण FAQ अस्वीकृत समाधान के निदान में मदद करता है।
एजेंट को अनंत रूप से चलाए नहीं रखें। वैधता विफलताओं को अंतिम वर्गीकृत करें, और अस्थायी समय सीमा के लिए अधिकतम एक पुन: प्रयास की अनुमति दें।
import asyncio
async def solve_with_policy(params: dict) -> dict:
last_error = "अज्ञात त्रुटि"
for attempt in range(1, 3):
result = solve_turnstile(**params)
if result.get("success"):
return {**result, "attempt": attempt}
last_error = result.get("error", last_error)
normalized = last_error.lower()
if "अनुमति सूची" में है या "साइट-की" में है:
break
if attempt == 1:
await asyncio.sleep(2)
return {
"success": False,
"error": last_error,
"requires_operator_review": True,
}
होस्टनाम, कार्य प्रकार, अवधि, प्रयास संख्या और सामान्य नतीजा के साथ लॉग करें। कभी-भी पूर्ण टोकन, API कुंजी, कुकीज़ या फॉर्म सामग्री न लॉग करें।
| मोड | बेस्ट फॉर | इनपुट | आउटपुट |
|---|---|---|---|
| टोकन मोड | ज्ञात Turnstile URL और साइट की चाबी | URL, की, वैकल्पिक मेटाडेटा | समाधान टोकन |
| ब्राउज़र मोड | एक अस्थायी विज्ञापन में एक मौजूदा Playwright सेशन | जीवंत पेज ऑब्जेक्ट | पेज बरामदी परिणाम |
| मानव समीक्षा | बार-बार विफलता या अस्वीकृत अवस्था | रेडैक्टेड त्रुटि और स्क्रीनशॉट संदर्भ | ऑपरेटर निर्णय |
उपयोक्ता प्रदान किए गए CapSolver एजेंट दस्तावेज़ीकरण में solve_captcha को कोर टोकन समाधान के लिए मैप किया गया है और solve_on_page को ब्राउज़र बरामदी के लिए मैप किया गया है। यदि पेज डायनामिक है, तो ब्राउज़र एक्स्ट्रा स्थापित करें और मूल ब्राउज़र सेशन अक्षुण्ण रखें:
pip install "capsolver-agent[browser] @ git+https://github.com/capsolver-ai/capsolver-agent.git"
संबंधित ब्राउज़र कार्य प्रवाह के लिए CapSolver ऑटोमेशन ट्यूटोरियल का उपयोग करें और CapSolver उत्पाद पृष्ठ पर समर्थित समाधान श्रेणियों के लिए देखें।
बोनस कोड: CapSolver डैशबोर्ड पर WEBS कोड का उपयोग करें ताकि प्रत्येक भरोसे पर 5% अतिरिक्त बोनस मिले।
एक उत्पादन LlamaIndex Turnstile एकीकरण में अनुमोदित-होस्ट रजिस्टर, गोपनीयता अलगाव, छोटे जीवनकाल वाले टोकन हस्तांतरण, एक सीमित पुन: प्रयास, ट्रेस रेडैक्शन, ऑपरेटर समीक्षा और पठनीय ऑटोमेशन और उच्च प्रभाव वाले कार्यों के बीच सख्त अलगाव का उपयोग करना चाहिए।
| नियंत्रण | सिफारिश किया गया कार्यान्वयन |
|---|---|
| लक्ष्य अनुमति | टेंट विशिष्ट HTTPS अनुमति सूची |
| पैरामीटर स्रोत | विश्वसनीय ब्राउज़र कंट्रोलर |
| गोपनीयता संग्रहण | केवल एक्सीक्यूटर पर्यावरण |
| पुन: प्रयास नीति | अस्थायी त्रुटियों के लिए एक पुन: प्रयास |
| टोकन नियंत्रण | ब्राउज़र को सीधे हस्तांतरित करें; लंबे समय तक संग्रहीत न करें |
| ट्रेसिंग | टोकन और कुकीज़ रेडैक्ट करें |
| अंतिम कार्य | सबमिशन या बदलाव के लिए पुष्टि की आवश्यकता होती है |
CapSolver CAPTCHA-समाधान FAQ कार्य चक्र के बारे में बताता है, और CapSolver वेब-स्क्रैपिंग FAQ ऑपरेशनल विचारों को कवर करता है।
इस एकीकरण का केवल उपयोग आपके द्वारा स्वामित्व, परीक्षण या ऑटोमेशन के लिए अनुमति दिए गए एप्लिकेशन पर करें। चुनौती समाधान निजी डेटा तक पहुंच, खाता बनाने, लेन-देन जमा करने या साइट की शर्तों को अनदेखा करने की अनुमति नहीं देता है। दर-सीमा लागू करें, एक लेखा ट्रेल बनाए रखें और किसी भी डेटा बदलाव या उपयोक्ता प्रभावित करने वाले कार्य के लिए पुष्टि की आवश्यकता होती है।
LlamaIndex में Cloudflare Turnstile को विश्वसनीय रूप से हल करने के लिए, CapSolver को एक संकीर्ण FunctionTool के रूप में बनाएं और अनुमोदन, गोपनीयता, पुन: प्रयास और टोकन उपभोग को निर्धारित कोड में रखें। LlamaIndex एजेंट निर्णय लेता है कि बरामदी की आवश्यकता है, उपकरण दस्तावेज़ीकृत AntiTurnstileTaskProxyLess बनाता है, और ब्राउज़र वापस वापस आता है जिसमें वापस टोकन के साथ एक ही अनुमोदित कार्य प्रवाह होता है।
CapSolver से शुरू करें, अपने नियंत्रित स्टेजिंग पेज पर एकीकरण की पुष्टि करें, और उत्पादन से पहले अनुमति सूची और ट्रेस रेडैक्शन जोड़ें।
FunctionTool.from_defaults() का उपयोग एक प्रकार के सिंक्रनस या असिंक्रनस पायथन फ़ंक्शन को लपेटने के लिए करें। एक उपकरण-कॉलिंग मॉडल के लिए, परिणामस्वरूप उपकरण को FunctionAgent के साथ पारित करें।
दस्तावेज़ीकृत AntiTurnstileTaskProxyLess के साथ CapSolver के प्रॉक्सी-रहित कार्य पथ का उपयोग करता है, इसलिए कार्य में प्रॉक्सी प्रदान नहीं करना होता है।
websiteURL और websiteKey आवश्यक हैं। जब अनुमोदित विज्ञापन द्वारा उन्हें प्रदर्शित किया जाता है, तो केवल metadata.action और metadata.cdata शामिल करें।
नहीं। विश्वसनीय ब्राउज़र कोड के साथ सीधे हस्तांतरण करें और एजेंट को केवल रेडैक्टेड सफलता या विफलता स्थिति वापस करें।
यूआरएल, साइट की चाबी, वैकल्पिक मेटाडेटा और पेज स्थिति की पुष्टि करें। एक सीमित पुन: प्रयास के बाद, वर्कफ़्लो को ऑपरेटर समीक्षा के लिए रास्ता दें।
एक AI ब्राउजर रिकवरी हार्नेस बनाएं जिसमें CapSolver, Playwright फिक्सचर्स, पेज-स्टेट रूटिंग, चेकपॉइंट्स, सीमित पुनर्प्रयास, रेडैक्टेड ट्रेसेस, और CI परीक्षण हों।

CAPTCHA मूल्यांकन हार्नेस बनाएं जो AI एजेंट टूल कॉल के लिए CapSolver स्कीमा, फिक्सचर, ट्रेस ग्रेडर, असर्टियन्स, रिग्रेशन डेटासेट्स और CI गेट्स के साथ हो।
