2026 वह साल है जब AI एजेंट महज़ डेमो होने से आगे बढ़ गए। browser-use, OpenAI के Operator-शैली के एजेंट, Anthropic का computer use, और Playwright पर बने एक दर्जन फ़्रेमवर्क अब वास्तविक वेबसाइटों के विरुद्ध वास्तविक ब्राउज़र चलाते हैं — बुकिंग, खरीदारी, शोध, निगरानी। और ये सब एक ही दीवार से टकराते हैं: जिन साइटों पर ये काम करते हैं वे इन्हें बॉट मानती हैं, क्योंकि ये बॉट ही हैं।
यह गाइड विशेष रूप से ब्राउज़र चलाने वाले AI एजेंटों के लिए प्रॉक्सी लेयर को कवर करती है। अगर आपका एजेंट ब्राउज़र के बजाय HTTP लाइब्रेरी इस्तेमाल करता है (LangChain टूल्स, CrewAI के भीतर स्क्रेपर), तो देखें AI एजेंटों के लिए प्रॉक्सी: LangChain, AutoGPT & CrewAI — यह लेख उन एजेंटों के बारे में है जो पूरे ब्राउज़र को नियंत्रित करते हैं।
यह उल्टा लगता है पर सच है: एक असली Chrome ब्राउज़र चलाने वाला LLM एजेंट अक्सर एक सादे Python स्क्रेपर से ज़्यादा तेज़ी से ब्लॉक हो जाता है। तीन कारण:
navigator.webdriver, CDP-विशिष्ट टाइमिंग आर्टिफ़ैक्ट, और headless संकेतों की जाँच करती हैं। एक फ़्लैग किए गए IP के साथ मिलकर, स्कोर तुरंत ब्लॉक थ्रेशोल्ड पार कर जाता है।इन तीनों में से IP को ठीक करना सबसे सस्ता है, और अकेले उसे ठीक करना ही ज़्यादातर ब्लॉक हल कर देता है: एजेंट को रेज़िडेंशियल प्रॉक्सी के ज़रिए रूट करें ताकि IP की कहानी ब्राउज़र की कहानी से मेल खाए।
browser-use Playwright पर बैठता है, इसलिए प्रॉक्सी समर्थन नेटिव है। पैटर्न: प्रति एजेंट टास्क एक sticky session, ताकि एजेंट के काम करते समय IP स्थिर रहे, और अगले टास्क के लिए एक नया IP।
from browser_use import Agent, Browser, BrowserConfig
from langchain_openai import ChatOpenAI
import uuid
task_id = uuid.uuid4().hex[:8]
browser = Browser(config=BrowserConfig(
proxy={
"server": "http://us.jibaoproxy.com:913",
"username": f"USERNAME-session-{task_id}", # sticky: same IP for this task
"password": "PASSWORD",
},
))
agent = Agent(
task="Find the current price of the Sony WH-1000XM6 on the three largest US retailers.",
llm=ChatOpenAI(model="gpt-4o"),
browser=browser,
)
result = await agent.run()
मुख्य बात: session-{task_id} प्रत्यय। इसके बिना, एक रोटेटिंग गेटवे एजेंट को टास्क के बीच में ही नया IP दे सकता है — कार्ट की सामग्री ग़ायब हो जाती है, लॉगिन छूट जाते हैं, और एजेंट चरणों को दोबारा करने में LLM कॉल बर्बाद करता है। इसके साथ, टास्क शुरू से अंत तक एक ही IP पर चलता है, और अगले टास्क को एक साफ़ IP मिलता है।
अगर आपने Playwright पर अपना स्वयं का एजेंट लूप बनाया है (वह पैटर्न जो ज़्यादातर Operator-शैली और computer-use कार्यान्वयनों के पीछे है), तो प्रॉक्सी ब्राउज़र context पर जाता है:
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
context = await browser.new_context(
proxy={
"server": "http://us.jibaoproxy.com:913",
"username": "USERNAME-session-agent42",
"password": "PASSWORD",
},
viewport={"width": 1366, "height": 768},
locale="en-US",
timezone_id="America/Chicago", # match the proxy country
)
page = await context.new_page()
# ... agent loop: screenshot -> LLM -> action -> repeat
locale और timezone_id को प्रॉक्सी के देश से मेल खाते हुए सेट करें। एक US IP से ब्राउज़ करने वाला पर UTC+8 घड़ी वाला एजेंट एक असंगति है जिसे बिहेवियरल सिस्टम आपके विरुद्ध स्कोर करते हैं।
प्रति-context प्रॉक्सी आपको एक ब्राउज़र, कई एजेंट भी देते हैं: हर new_context() अपना स्वयं का session प्रत्यय रख सकता है, इसलिए दस समवर्ती एजेंट टास्क दस अलग-अलग रेज़िडेंशियल IP पर चलते हैं, बिना दस Chrome प्रोसेस के।
| एजेंट वर्कलोड | Session रणनीति | क्यों |
|---|---|---|
| शोध / मूल्य जाँच (बिना लॉगिन) | Sticky, 10 मिनट, प्रति टास्क नया session | टास्क के भीतर स्थिर, टास्कों के बीच नया IP |
| लॉग-इन अकाउंट संचालन | Sticky 30 मिनट, हर रन पर वही session ID | साइटें उन अकाउंट को फ़्लैग करती हैं जो लॉगिनों के बीच देश बदलते हैं |
| चेकआउट / बुकिंग फ़्लो | Sticky 30 मिनट | चेकआउट के बीच में IP बदलना session को ख़त्म कर देता है और फ़्रॉड समीक्षा ट्रिगर करता है |
| उच्च-मात्रा निगरानी (सैकड़ों पेज) | रोटेटिंग, कोई session पिन नहीं | IP विविधता अधिकतम करें, संरक्षित करने योग्य कोई स्टेट नहीं |
रेज़िडेंशियल ट्रैफ़िक प्रति GB बिल किया जाता है, और एक ब्राउज़र एजेंट पूरे पेज खींचता है — इमेज, फ़ॉन्ट, ट्रैकर — एक HTTP स्क्रेपर के विपरीत। अप्रबंधित, एक एजेंट टास्क 20–50 MB खा सकता है। प्रभाव के क्रम में तीन उपाय:
await context.route("**/*.{png,jpg,jpeg,webp,gif,woff,woff2,mp4}",
lambda route: route.abort())
अगर आपका एजेंट स्क्रीनशॉट पढ़ता है, तो लक्ष्य पेज पर इमेज रखें पर फिर भी वीडियो और फ़ॉन्ट ब्लॉक करें। अगर यह DOM/accessibility tree पढ़ता है, तो इमेज भी ब्लॉक करें — इससे ट्रैफ़िक 60–80% तक कम होता है।इमेज ब्लॉकिंग और सीमित रूटिंग के साथ, सामान्य ब्राउज़र-एजेंट टास्क 2–8 MB रेंज में आते हैं — $2/GB पर वह प्रति सौ टास्क कुछ सेंट है।
ईमानदारी वाला हिस्सा। एक रेज़िडेंशियल IP ASN बेमेल और IP प्रतिष्ठा को ठीक करता है, जो 2026 एंटी-बॉट स्कोरिंग में सबसे भारी एकल संकेत है। यह इन्हें ठीक नहीं करता:
requests के साथ "बस फिर से नहीं चला" सकते। देखें JA3/JA4 समझाया गया।एक रेज़िडेंशियल IP पर इन तीनों को स्टैक करें और ब्राउज़र एजेंट वही जाँचें पास करते हैं जो असली उपयोगकर्ता करते हैं। सबसे कठिन लक्ष्यों (DataDome, PerimeterX) के लिए, देखें हमारी DataDome/PerimeterX गाइड।
timezone_id/locale को प्रॉक्सी देश से मेल खाते हुए रखें।500MB मुफ़्त ट्रैफ़िक क्रेडिट — संसाधन ब्लॉकिंग ऑन के साथ कई सौ ब्राउज़र-एजेंट टास्क के लिए पर्याप्त।
मुफ़्त ट्रायल शुरू करेंनए यूज़र्स को साइन अप पर 500MB मिलते हैं, साथ ही पहली रिचार्ज पर बोनस। सीमित समय की पेशकश।