استفاده از پروکسی خانگی با browser-use

تاریخ انتشار: 23 ژوئیه 2026 · 6 دقیقه مطالعه

خلاصه: browser-use به یک LLM اجازه می‌دهد یک مرورگر واقعی Chromium را برای تکمیل وظایف هدایت کند، بنابراین اثر انگشت آن از قبل انسانی به نظر می‌رسد — اما همچنان از آی‌پی دیتاسنتر سرور شما خارج می‌شود، چیزی که سیستم‌های ضدربات همان لحظه پرچم‌گذاری می‌کنند. یک پروکسی خانگی را از طریق پیکربندی پروکسی Playwright پاس دهید: {"server": "http://gw.roamproxy.com:41080", "username": ..., "password": ...}. وقتی چندین ایجنت را همزمان اجرا می‌کنید، به هر کدام یک آی‌پی خانگی ثابت اختصاصی بدهید تا به هم مرتبط نشوند.

ایجنت مرورگر واقعی دارد اما شبکه‌اش جعلی به نظر می‌رسد

browser-use کنترل یک مرورگر واقعی Chromium را به یک LLM می‌سپارد، که برای تکمیل وظیفه‌ای که با زبان ساده توصیف می‌کنید کلیک می‌کند، تایپ می‌کند و صفحات را می‌خواند. چون این یک مرورگر واقعی است، اثر انگشت — دست‌دهی TLS، محیط جاوااسکریپت، رندرینگ — واقعی است. این نسبت به یک اسکرپر خام HTTP یک امتیاز بزرگ است.

اما مرورگر جایی اجرا می‌شود، و آن جا معمولاً یک ماشین مجازی ابری روی یک آی‌پی دیتاسنتر است. سیستم‌های ضدربات پیش از ارزیابی هر کاری که مرورگر انجام می‌دهد، ASN آی‌پی خروجی را امتیاز می‌دهند، بنابراین یک مرورگر بی‌نقص که از یک بازه AWS یا Hetzner بیرون می‌آید، بازهم پرچم‌گذاری می‌شود. تنها لایه‌ای که browser-use خودش نمی‌تواند برایتان اصلاح کند، شبکه‌ای است که از آن خارج می‌شود. این کار پروکسی است.

نصب

pip install browser-use
playwright install chromium

ایجنت را از طریق پروکسی خانگی مسیردهی کنید

browser-use تنظیمات پروکسی را مستقیماً به Playwright پاس می‌دهد، بنابراین مقدار آن دیکشنری پروکسی Playwright است: یک URL ساده server به‌علاوه کلیدهای جداگانه username و password. اطلاعات ورود را در URL سرور جاسازی نکنید — Playwright آن‌ها را از فیلدهای جداگانه می‌خواند.

from browser_use import Agent, Browser, BrowserConfig
from langchain_openai import ChatOpenAI

browser = Browser(
    config=BrowserConfig(
        proxy={
            "server": "http://gw.roamproxy.com:41080",
            "username": "YOUR_USERNAME",
            "password": "YOUR_PASSWORD",
        }
    )
)

agent = Agent(
    task="Open example.com and summarize what the company does",
    llm=ChatOpenAI(model="gpt-4o"),
    browser=browser,
)

await agent.run()

اکنون مرورگر ایجنت از یک آی‌پی واقعی اینترنت خانگی خارج می‌شود. LLM همچنان تصمیم می‌گیرد چه کاری انجام دهد؛ پروکسی تصمیم می‌گیرد ترافیک روی سیم چگونه به نظر برسد، و این دو مستقل از هم پیکربندی می‌شوند.

نام کلاس رَپِر بین نسخه‌های browser-use تغییر می‌کند (BrowserConfig، BrowserProfile، BrowserSession). بخشی که هرگز تغییر نمی‌کند، شکل دیکشنری پروکسی نشان‌داده‌شده در بالاست — server / username / password. اگر نسخه جدیدی رَپِر را تغییر نام دهد، دیکشنری را حفظ کنید و مستندات فعلی را برای محل جدید آن بررسی کنید.

یک آی‌پی برای هر ایجنت، وقتی تعداد زیادی اجرا می‌کنید

کاربرد جالب browser-use، اجرای یک ناوگان از ایجنت‌هاست — یکی برای هر حساب، یکی برای هر وظیفه، یکی برای هر بازار. اگر همه یک آی‌پی خروجی مشترک داشته باشند، سایت‌هایی که بازدید می‌کنند می‌توانند آن‌ها را به هم مرتبط کنند، و شما دقیقاً همان ردپایی را که سعی داشتید از آن اجتناب کنید بازسازی کرده‌اید. به هر ایجنت یک نشست خانگی ثابت اختصاصی بدهید تا آی‌پی خروجی‌اش برای طول عمر وظیفه پایدار و مجزا باشد.

نشست در نام کاربری پروکسی انتخاب می‌شود؛ برای اینکه ببینید رشته نشست چگونه چرخشی یا ثابت بودن آی‌پی را کنترل می‌کند، به پروکسی‌های چرخشی چیستند مراجعه کنید. به هر ایجنت یک نشست ثابت متفاوت اختصاص دهید و هیچ دو ایجنتی هرگز یک آی‌پی خروجی مشترک نخواهند داشت.

پیش از اعتماد، آی‌پی خروجی را تأیید کنید

اولین وظیفه ایجنت را به یک صفحه بررسی آی‌پی هدایت کنید و نتیجه را بخوانید:

agent = Agent(
    task="Go to https://ip.sb and tell me the IP address and country shown",
    llm=ChatOpenAI(model="gpt-4o"),
    browser=browser,
)
print(await agent.run())

باید آی‌پی خروجی خانگی Roam و کشوری که هدف قرار داده‌اید گزارش شود، نه آدرس واقعی سرور شما. اگر آی‌پی واقعی شما گزارش شد، پیکربندی پروکسی به Playwright نرسیده — شکل دیکشنری و اینکه به کدام شیء متصلش کرده‌اید را دوباره بررسی کنید.

وقتی مرورگر به‌تنهایی کافی نیست

browser-use مسئله اثر انگشت را با استفاده از یک مرورگر واقعی حل می‌کند، و پروکسی خانگی مسئله آی‌پی را حل می‌کند. برای اسکرپینگ اسکریپتی (غیرایجنتی) که در آن از مرورگر واقعی استفاده نمی‌کنید — درخواست‌های ساده HTTP پایتون — مزیت اثر انگشت را از دست می‌دهید و باید آن را به روش دیگری بازیابی کنید؛ به دور زدن اثر انگشت TLS/JA3 با curl_cffi مراجعه کنید. برای مجموعه گسترده‌تر دلایل مسدود شدن درخواست‌ها، به چگونه در وب‌اسکرپینگ مسدود نشویم مراجعه کنید.

سوالات متداول

مگر browser-use از قبل انسانی به نظر نمی‌رسد — چرا پروکسی اضافه کنیم؟

مرورگر آن انسانی به نظر می‌رسد چون یک نمونه واقعی Chromium را هدایت می‌کند، بنابراین اثر انگشت آن واقعی است. اما شبکه این‌طور نیست: درخواست همچنان از همان جایی خارج می‌شود که ایجنت را اجرا می‌کنید، که معمولاً یک سرور ابری روی ASN دیتاسنتر است که سیستم‌های ضدربات پیش از هر بررسی دیگری آن را پرچم‌گذاری می‌کنند. پروکسی همان لایه‌ای را اصلاح می‌کند که مرورگر خودش نمی‌تواند — آی‌پی خروجی. اثر انگشت واقعی به‌علاوه آی‌پی خانگی واقعی، چیزی است که واقعاً از فیلتر عبور می‌کند.

20 ایجنت را به‌صورت موازی اجرا می‌کنم — آیا به آی‌پی‌های متفاوت نیاز دارند؟

بله، اگر نباید سایت‌ها آن‌ها را به هم مرتبط کنند. بیست ایجنت پشت یک آی‌پی مثل بیست نشست از یک دستگاه به نظر می‌رسند، که دقیقاً همان الگویی است که حساب‌ها را به هم مرتبط می‌کند یا محدودیت نرخ را فعال می‌کند. به هر ایجنت یک نشست خانگی ثابت اختصاصی بدهید تا هرکدام برای طول عمر وظیفه‌اش یک آی‌پی خروجی پایدار و مجزا داشته باشد. Roam بر اساس گیگابایت صورتحساب صادر می‌کند، نه بر اساس آی‌پی یا ایجنت، بنابراین افزایش تعداد ایجنت‌ها هزینه اشتراک را ضرب نمی‌کند.

آیا پروکسی روی هر بک‌اند LLM به یک شکل کار می‌کند؟

بله. پروکسی در لایه مرورگر قرار دارد، بنابراین کاملاً مستقل از این است که کدام مدل ایجنت را هدایت می‌کند — OpenAI، Anthropic، یک مدل محلی، هرچه که به‌عنوان llm پاس می‌دهید. LLM تصمیم می‌گیرد چه کاری انجام دهد؛ مرورگر (و پروکسی آن) تصمیم می‌گیرد ترافیک روی سیم چگونه به نظر برسد. این دو جدا از هم پیکربندی می‌شوند.

پیکربندی پروکسی در ایجنت من نادیده گرفته می‌شود — مشکل چیست؟

رایج‌ترین دلیل، پاس دادن پروکسی به شیء اشتباه است. API رَپِر browser-use بین نسخه‌ها تغییر کرده (BrowserConfig، BrowserProfile، BrowserSession)، اما مقداری که پاس می‌دهید همیشه دیکشنری پروکسی Playwright است — server، username، password به‌عنوان کلیدهای جداگانه، با server به‌صورت یک http://host:port ساده و بدون اطلاعات ورود درون URL. اگر user:pass@host را در رشته server قرار دهید، Playwright احراز هویت را نادیده می‌گیرد. مستندات فعلی browser-use را برای نام دقیق رَپِر بررسی کنید، اما شکل دیکشنری نشان‌داده‌شده در اینجا را حفظ کنید.

browser-use مرورگر واقعی به ایجنت شما می‌دهد؛ Roam هویت شبکه واقعی به آن می‌دهد. آی‌پی‌های خانگی چرخشی با $2 در هر گیگابایت و خانگی ثابت با $4 در هر آی‌پی در ماه، از طریق HTTP و SOCKS5، مستقیم در پیکربندی پروکسی Playwright زیر جا می‌گیرند. یک حساب بسازید و 300 مگابایت ترافیک آزمایشی رایگان بگیرید تا اولین ایجنت خود را از طریق یک خروجی خانگی اجرا کنید.