Captcha solving
Browser Use agents के लिए
Challenge से टकराने वाले agent के toolset में ऐसा कुछ नहीं होता जो उसका जवाब दे सके, इसलिए वह अटक जाता है या मनगढ़ंत तरीके से आगे बढ़ने का दिखावा करता है। उसे tool के रूप में एक solver दें और रुकावट बस एक और call बन जाती है।
import time
import requests
CAPTCHANO_KEY = "cn-YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {CAPTCHANO_KEY}"}
def solve(task: dict) -> dict:
"""Block until solved; returns e.g. {"token": "...", "userAgent": "..."}."""
r = requests.post(
"https://api.captchano.com/v1/solve",
params={"wait": 60},
json=task,
headers=HEADERS,
timeout=75,
)
data = r.json()
# A solve can outlast the 60 s wait: poll the task until it finishes.
while data.get("status") in ("queued", "solving"):
time.sleep(5)
data = requests.get(
f"https://api.captchano.com/v1/task/{data['id']}",
headers=HEADERS,
timeout=30,
).json()
if data.get("status") != "ready":
raise RuntimeError(data.get("error") or data)
return data["solution"]
from browser_use import Agent, Tools, ActionResult
tools = Tools()
@tools.action("Solve a captcha that is blocking the current page")
def solve_captcha(kind: str, sitekey: str, url: str) -> ActionResult:
solution = solve({"type": kind, "sitekey": sitekey, "url": url})
return ActionResult(extracted_content=solution["token"])
agent = Agent(task="...", llm=llm, tools=tools)Agents को ख़ास तौर पर इसकी ज़रूरत क्यों है
Challenge से टकराने वाला scraper ज़ोर से फ़ेल होता है और आप उसे ठीक कर देते हैं। Agent चुपचाप फ़ेल होता है: वह blocked पेज के बारे में तर्क करता है, एक विश्वसनीय-सा अगला कदम गढ़ता है, और ऐसी प्रगति की रिपोर्ट करता है जो कभी हुई ही नहीं। विफलता और बुरी है क्योंकि वह चुपचाप होती है। एक typed solver tool अस्पष्ट dead end को एक निश्चित result में बदल देता है जिस पर agent branch कर सके।
Tool क्या लौटाता है
- एक token या cookie — challenge type के अनुसार। Session-graded सिस्टम एक cookie के साथ वह header set भी लौटाते हैं जिससे वह हासिल हुई।
- इस्तेमाल किया गया user agent, ताकि agent submit करते समय उसे दोहरा सके।
- Solve की लागत, ताकि बजट के तहत काम करने वाला agent आँख मूँदकर खर्च करने के बजाय उसका हिसाब रख सके।
Loop को सीमा में रखना
Agent को हर run के लिए solve बजट दें। हर response अपनी लागत बताता है, इसलिए खर्च किसी सीमा से ऊपर जाने पर supervisor loop को काट सकता है, बजाय इसके कि यह invoice पर पता चले। $0.00598 प्रति solve पर एक सामान्य agent run की लागत कुछ सेंट्स या उससे कम होती है, लेकिन असीमित retry loop फिर भी असीमित retry loop ही है।
Tool call को blocking रखें
उदाहरण ?wait=60 को call करते हैं, इसलिए tool एक ही स्टेप में तैयार token लौटाता है। Scripts से ज़्यादा यह agents के लिए मायने रखता है: "still solving" लौटाने वाला tool model को polling के बारे में सोचने पर मजबूर करता है, जो वह ठीक से नहीं कर पाता। अगर आपको ज़्यादा लंबी सीमा चाहिए, तो wait को 120 सेकंड तक बढ़ाएँ। हर challenge type के request फ़ॉर्मेट API reference में हैं।
Browser Use में solve कैसे फ़िट होता है
Browser Use आपको custom actions register करने देता है। एक solve action मौजूदा पेज से sitekey पढ़ता है, token लेता है और उसे inject करता है, ताकि agent उसी browser में आगे बढ़ सके।
- 01एक action register करें
Agent के tools में एक साफ़ description के साथ solve action जोड़ें।
- 02मौजूदा पेज पढ़ें
Action, पहले से मौजूद browser session से sitekey और URL पढ़ता है।
- 03Solve और inject करें
API को call करें, फिर token को उसी पेज में inject करें।
- 04नतीजा बताएँ
एक छोटा result लौटाएँ ताकि agent को पता चले कि वह आगे बढ़ सकता है।
Token को पेज में कैसे डालें
यह action फ़ील्ड भरने और callback चलाने के लिए agent के अपने पेज में JavaScript चलाता है।
इंटीग्रेशन आमतौर पर कहाँ गलत होते हैं
वही proxy भेजें जो agent का browser इस्तेमाल करता है, ताकि token और पेज एक ही IP से हों।
Action description में agent को बताएँ कि वह खुद widget पर क्लिक न करे; action इसे संभालता है।
Browser Use captcha: अक्सर पूछे सवाल
क्या Browser Use खुद captcha solve करता है?
यह checkbox पर क्लिक कर सकता है, लेकिन image challenges का जवाब नहीं दे सकता, और automated browsers को अक्सर ये दिखाए जाते हैं। एक custom solve action नतीजे को निश्चित बना देता है।
क्या यह Browser Use cloud के साथ काम करता है?
Action को सिर्फ़ outbound HTTPS और पेज में JavaScript चलाने की क्षमता चाहिए, इसलिए यह वहाँ काम करता है जहाँ भी आपका agent चलता है।
Turnstile का क्या?
वही action, अलग type। Turnstile sitekey पढ़ें और type turnstile भेजें।
Agent को loop करने से कैसे रोकूँ?
हर task के solves गिनें और सीमा पार होने पर agent को रोक दें। अगर आप खर्च का बजट रखना चाहते हैं, तो हर result में उसकी लागत शामिल होती है।
उपयोगी गाइड
बनाने के लिए तैयार?
3 दिन के free trial से शुरू करें, फिर ट्रैफ़िक बढ़ने के साथ हर सफल solve के हिसाब से भुगतान करें। Trial के लिए कार्ड की ज़रूरत नहीं।