Browser Use با پروکسی: راه‌اندازی عامل مرورگر هوش مصنوعی

تاریخ انتشار:

15 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
سطرهای محو IP پشت قابی با گوشه‌های به‌علاوه: لوگوی نوشتاری Proxynet، ضربدری باریک، لوگوی Browser Use و برچسب INTEGRATION

عامل Browser Use شما از روی لپ‌تاپتان بی‌دردسر یک سفارش آزمایشی در فروشگاه آزمایشی (staging) ثبت می‌کند. همین کار را که به یک سرور ابری می‌برید، سایت از یک IP دیتاسنتر در کشوری دیگر باز می‌شود: فروشگاه واحد پول دیگری نشان می‌دهد و فایروال محیط آزمایشی‌تان، که فقط IPهای شناخته‌شده را راه می‌دهد، عامل را برمی‌گرداند. پروکسی را به شکل http://user:pass@pr.proxynet.io:8000 اضافه می‌کنید و حالا هر صفحه با net::ERR_NO_SUPPORTED_PROXIES شکست می‌خورد.

این راهنما توضیح می‌دهد Browser Use چگونه کار می‌کند و نصب، پروکسی با نام کاربری و رمز عبور، بررسی IP خروجی، نشست ثابت و چرخشی، محدودیت دامنه، اطلاعات محرمانه و گام تأیید انسانی را پوشش می‌دهد. همه اسکریپت‌ها را با ⁦browser-use 0.13.10⁩ و ⁦Python 3.13⁩ و از طریق یک پروکسی آزمایشی محلی که رمز عبور می‌خواهد آزمودیم. چون روی دستگاه آزمایش کلید API هیچ LLM در دسترس نبود، پاسخ‌های مدل را یک اسکریپت از پیش نوشته‌شده می‌داد؛ مرورگر، پروکسی، فیلتر دامنه و پنهان‌سازی اطلاعات محرمانه واقعاً اجرا شدند.

Browser Use چیست؟

Browser Use یک کتابخانه Python است که مدل زبانی را به عامل مرورگر تبدیل می‌کند. کار را به زبان ساده شرح می‌دهید و مدل درباره کلیک‌ها، تایپ و اسکرول تصمیم می‌گیرد. مخزن GitHub آن را «Agents that use the browser» (عامل‌هایی که از مرورگر استفاده می‌کنند) توصیف می‌کند. مجوز آن MIT است و آخرین نسخه روی PyPI امروز 0.13.10 است که در 4 سپتامبر 2026 منتشر شده و به ⁦Python 3.11⁩ یا جدیدتر نیاز دارد.

نسخه 0.13.10 مستقیم از طریق Chrome DevTools Protocol (CDP) با Chromium ارتباط برقرار می‌کند؛ Playwright جزو وابستگی‌های آن نیست. مدل می‌تواند از OpenAI، Anthropic، Google، یک سرور محلی Ollama یا مدل‌های میزبانی‌شده خود Browser Use تأمین شود. Browser Use Cloud، سرویسی جداگانه و پولی با مرورگرهای میزبانی‌شده، بخشی از این راهنما نیست.

اینکه یک عامل به‌طور کلی چگونه برنامه‌ریزی می‌کند و ابزار به کار می‌برد در عامل‌های هوش مصنوعی چگونه کار می‌کنند؟ آمده است و مرورگرهایی که عامل درونشان ساخته شده در مرورگر هوش مصنوعی چیست؟ توضیح داده شده‌اند.

عامل Browser Use چگونه کار می‌کند؟

هر agent.run() این گام‌ها را طی می‌کند:

  1. مرورگر با یک پروفایل موقت تازه اجرا می‌شود. پروکسی به شکل پرچم اجرا (launch flag) به Chromium داده می‌شود.
  2. آدرسی که در متن کار آمده مستقیم باز می‌شود، بدون فراخوانی مدل.
  3. صفحه به متن تبدیل می‌شود. هر عنصری که عامل می‌تواند به کار ببرد یک شماره می‌گیرد و متن قابل‌مشاهده هم همراهش می‌آید. با use_vision=True (پیش‌فرض) یک اسکرین‌شات هم افزوده می‌شود.
  4. مدل با JSON پاسخ می‌دهد: ارزیابی گام قبلی، یک حافظه کوتاه، هدف بعدی و حداکثر پنج کنش، مانند navigate، click، input، scroll، extract یا done.
  5. کتابخانه کنش‌ها را اجرا می‌کند، هر آدرس تازه را با قاعده‌های دامنه شما می‌سنجد و هر جا مدل جانگهدار نوشته باشد، مقدار محرمانه را جایگزین می‌کند.
  6. حلقه تکرار می‌شود تا مدل done را فرا بخواند یا max_steps تمام شود.

در یک کتاب‌فروشی تمرینی، وضعیت مرورگری که مدل آزمایشی ما دریافت کرد سطرهایی مانند این‌ها داشت:

text
[587]<a title=It's Only the Himalayas />
	It's Only the Himalayas
£45.17
[597]<i />
In stock
[604]<button type=submit />
	Add to basket

برای افزودن این کتاب به سبد خرید، مدل پاسخ {"click": {"index": 604}} را می‌داد. چون صفحه به شکل متن می‌رسد، use_vision=False هم کار می‌کند و اسکرین‌شات صفحه‌های حساس را از ارائه‌دهنده مدل دور نگه می‌دارد.

Browser Use چگونه نصب می‌شود؟

راهنمای شروع سریع رسمی از uv استفاده می‌کند:

bash
pip install uv
uv venv --python 3.12
source .venv/bin/activate        # Windows: .venv\Scripts\activate
uv pip install browser-use
uvx browser-use install          # downloads Chromium

ما با فرمان ساده pip install browser-use==0.13.10 در یک محیط مجازی ⁦Python 3.13⁩ نصب کردیم و این روش هم کار کرد. سپس کلیدها را در یک فایل .env کنار اسکریپت خود بگذارید:

bash
OPENAI_API_KEY=...
PROXY_SERVER=http://pr.proxynet.io:8000
PROXY_USERNAME=user
PROXY_PASSWORD=pass
ANONYMIZED_TELEMETRY=false

سطر آخر مهم است. Browser Use به‌طور پیش‌فرض تله‌متری (داده‌های استفاده) می‌فرستد و صفحه تله‌متری آن می‌گوید این داده‌ها ممکن است شامل متن کار، آدرس‌های بازدیدشده، ردپای کنش‌ها و نتیجه‌های نهایی باشند. اگر کارهای شما به مشتریان یا سایت‌های داخلی اشاره می‌کنند، آن را خاموش کنید.

روی دستگاه آزمایش ویندوزی دو چیز غافلگیرمان کرد. بدون executable_path، Browser Use گوگل کروم نصب‌شده را برگزید، البته با یک پروفایل موقت تازه، نه پروفایل روزمره شما. در نخستین اجرا هم سه افزونه، از جمله یک مسدودکننده تبلیغات، را مستقیم از نت‌بازار Chrome و بیرون از پروکسی دانلود کرد؛ enable_default_extensions=False آن‌ها را خاموش می‌کند.

عامل را چگونه از طریق پروکسی اجرا کنیم؟

پروکسی یکی از تنظیمات Browser است و عامل همان مرورگر را دریافت می‌کند. این اسکریپت یک صفحه دسته‌بندی را باز می‌کند و سه کتاب را می‌خواند، در حالی که فقط از طریق پروکسی و فقط به یک دامنه می‌رود:

python
"""Run a Browser Use agent through an authenticated proxy, limited to one site."""
import asyncio
import os

from dotenv import load_dotenv

load_dotenv()  # reads OPENAI_API_KEY, PROXY_* and ANONYMIZED_TELEMETRY from .env

from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser import ProxySettings

browser = Browser(
    headless=True,
    proxy=ProxySettings(
        server=os.environ["PROXY_SERVER"],  # http://pr.proxynet.io:8000
        username=os.environ["PROXY_USERNAME"],
        password=os.environ["PROXY_PASSWORD"],
    ),
    allowed_domains=["books.toscrape.com"],
    enable_default_extensions=False,
)

agent = Agent(
    task=(
        "Open https://books.toscrape.com/catalogue/category/books/travel_2/index.html "
        "and list the title and price of the first three books."
    ),
    llm=ChatOpenAI(model="gpt-4.1-mini"),
    browser=browser,
    use_vision=False,
)


async def main():
    history = await agent.run(max_steps=10)
    print("result:", history.final_result())
    print("pages: ", [u for u in history.urls() if u])
    print("steps: ", history.number_of_steps())


asyncio.run(main())

ProxySettings از browser_use.browser وارد (import) می‌شود، نه از سطح بالای بسته. صفحه پارامترهای مرورگر چهار فیلد را فهرست می‌کند:

فیلدچه مقداری می‌گیرد
serverhttp://host:port یا socks5://host:port، بدون اطلاعات ورود
usernameنام کاربری پروکسی، برای نمونه همانی که سازنده نقطه اتصال (Endpoint Generator) می‌سازد
passwordرمز عبور پروکسی
bypassمیزبان‌هایی که مستقیم وصل می‌شوند و از پروکسی نمی‌گذرند، جداشده با ویرگول

Browser Use در پشت صحنه Chromium را با --proxy-server اجرا می‌کند و به چالش 407 پروکسی خودش از طریق CDP پاسخ می‌دهد. پروکسی آزمایشی ما برای صفحه کتاب دقیقاً همین را ثبت کرد (کوتاه‌شده، بدون مهر زمانی):

text
407 CONNECT books.toscrape.com:443 (no credentials)
200 CONNECT books.toscrape.com:443 user=user

نام کاربری و رمز عبور پروکسی در هیچ‌یک از داده‌هایی که مدل دریافت کرد دیده نشدند.

چرا user:pass در آدرس پروکسی کار نمی‌کند؟

چون Chromium اطلاعات ورودی را که درون تنظیم پروکسی‌اش نوشته شود نادیده می‌گیرد. مستندات پروکسی Chromium می‌گوید Chrome از هیچ اطلاعات ورودی که درون تنظیمات پروکسی گنجانده شده باشد استفاده نمی‌کند. با server="http://user:pass@…" و بدون فیلدهای جداگانه، در آزمون ما هر پیمایش با net::ERR_NO_SUPPORTED_PROXIES پایان یافت. اطلاعات ورود را در username و password بگذارید.

SOCKS5 محدودیت دیگری دارد: Chromium برای SOCKS5 اصلاً هیچ روش احراز هویتی را پشتیبانی نمی‌کند. سرور آزمایشی SOCKS5 ما دید که مرورگر فقط روش «no authentication» (بدون احراز هویت) را پیشنهاد می‌کند و صفحه با ERR_SOCKS_CONNECTION_FAILED شکست خورد. برای SOCKS5، IP سرور خود را در پنل کاربری به لیست سفید IP بیفزایید (حداکثر 10 آدرس) و از پورت SOCKS5 که سازنده نقطه اتصال نشان می‌دهد، بدون نام کاربری، استفاده کنید. در این حالت DNS در سمت پروکسی ترجمه می‌شود. این دو روش ورود در احراز هویت پروکسی: نام کاربری و رمز یا لیست سفید IP و پروتکل‌ها در تفاوت پروکسی SOCKS و HTTP مقایسه شده‌اند.

IP خروجی عامل را چگونه بررسی کنیم؟

پیش از نخستین کار واقعی و بدون حضور مدل در حلقه بررسی کنید. این اسکریپت از همان ProxySettings استفاده می‌کند، یک صفحه نمایش IP (IP echo) را باز می‌کند و آنچه سایت دیده است را چاپ می‌کند:

python
"""Open an IP echo page through the proxy before any agent runs."""
import asyncio
import os

from browser_use import Browser
from browser_use.browser import ProxySettings


async def main():
    browser = Browser(
        headless=True,
        proxy=ProxySettings(
            server=os.environ["PROXY_SERVER"],
            username=os.environ["PROXY_USERNAME"],
            password=os.environ["PROXY_PASSWORD"],
        ),
    )
    await browser.start()
    try:
        page = await browser.new_page("https://httpbin.org/ip")
        await asyncio.sleep(2)  # let the page load
        print(await page.evaluate("() => document.body.innerText"))
    finally:
        await browser.kill()


asyncio.run(main())

خروجی آن JSON سایت httpbin با فیلدی به نام origin است. از طریق یک نقطه اتصال Proxynet، این مقدار IP خروجی است، نه IP خود شما. اسکریپت را دو بار اجرا کنید: نام کاربری چرخشی ممکن است دو آدرس متفاوت نشان دهد و نام کاربری ثابت هر دو بار همان آدرس را.

گزارش پروکسی ما درخواست‌های خود Chrome به سرویس‌های Google و درخواست لوگوی Browser Use در صفحه آغازین خالی را هم نشان داد؛ اگر هزینه ترافیک را بر پایه حجم مصرف می‌پردازید، این درخواست‌ها هم حساب می‌شوند.

چرخشی یا ثابت: عامل به کدام نشست نیاز دارد؟

پروکسی به مرورگر تعلق دارد، پس همه گام‌های یک کار از همان آدرس پروکسی بیرون می‌روند. آنچه تغییر می‌کند IP خروجی پشت آن آدرس است.

کارنشستچرا
ورود به حساب و سپس کار در چند صفحهثابت، 10 تا 30 دقیقهبسیاری از سایت‌ها نشست را به IP گره می‌زنند؛ آدرس تازه در میانه کار ممکن است به ورود دوباره بینجامد
خواندن یک صفحه مستقل در هر اجراچرخشیهر اجرا ممکن است IP خروجی تازه‌ای بگیرد؛ چیزی از اجرای قبلی منتقل نمی‌شود
چند عامل به‌طور موازییک Browser برای هر عاملهر مرورگر تنظیمات پروکسی و نشست خودش را دارد
آدرسی که سیستم‌های خودتان در فهرست مجاز گذاشته‌اندپروکسی ISPIP در طول روزها ثابت می‌ماند

در Proxynet، نوع نشست (چرخشی یا ثابت)، کشور و شهر را در سازنده نقطه اتصال انتخاب می‌کنید و طول نشست ثابت از 1 تا 60 دقیقه است. نام کاربری‌ای که این ابزار می‌سازد همین انتخاب‌ها را در خود دارد، پس آن را همان‌طور که هست در PROXY_USERNAME بچسبانید. طول نشست ثابت را کمی بیشتر از طولانی‌ترین کار خود انتخاب کنید. محصولات: پروکسی با نشست ثابت، پروکسی چرخشی، پروکسی ISP و برای وقتی که بررسی به اتصال خانگی در کشوری مشخص نیاز دارد، پروکسی مسکونی. سازوکار چرخش در نوشته چرخش IP آمده است.

دسترسی عامل به سایت‌ها را چگونه محدود کنیم؟

allowed_domains فهرستی از الگوها می‌گیرد: example.com، *.example.com برای زیردامنه‌ها و http*://example.com برای هر دو طرح http و https. نویسه عام (wildcard) در دامنه سطح بالا (TLD) پذیرفته نمی‌شود. prohibited_domains برعکس عمل می‌کند؛ وقتی هر دو تنظیم شده باشند، فهرست مجاز اولویت دارد.

فقط فروشگاه محلی خودمان را مجاز کردیم و از مدل آزمایشی خواستیم دو راه خروج را امتحان کند. یک navigate مستقیم به میزبانی دیگر این پاسخ را به مدل برگرداند، در حالی که صفحه فعلی about:blank بود:

text
Navigation failed: Navigation to http://partner.test:28140/ blocked by security policy

پیوندی در فروشگاه که به همان میزبان تغییر مسیر (redirect) می‌داد هم به about:blank رسید و مدل هرگز متن آن صفحه را ندید. اما گزارش خود سایت آزمایشی نشان داد که مرورگر هر دو صفحه بیرون از فهرست را پیش از آنکه بررسی جایگزینشان کند درخواست کرده بود، و تصویری از میزبان بیرون از فهرست در یک صفحه مجاز به‌طور عادی بارگذاری شد. در نسخه 0.13.10، فیلتر تعیین می‌کند عامل چه چیزی را می‌خواند و روی چه چیزی کنش انجام می‌دهد، نه اینکه مرورگر چه درخواستی می‌فرستد.

برای یک مرز واقعی، ترافیک خروجی را بیرون از عامل محدود کنید: یک فایروال یا فهرست مجاز در سمت پروکسی، یک کانتینر یا حساب کاربری جداگانه و بدون دسترسی به آدرس‌های داخلی. Playwright MCP هم درباره پرچم‌های مبدأ خود همین هشدار را دارد، همان‌طور که در Playwright MCP چیست؟ آمده است. الگوی کلی‌تر در دسترسی امن LLM به وب شرح داده شده است.

اطلاعات ورود را چگونه از مدل دور نگه داریم؟

هرگز رمز عبور را در متن کار ننویسید. متن کار در هر گام به ارائه‌دهنده مدل فرستاده می‌شود و اگر خاموشش نکنید، به تله‌متری هم می‌رود. Browser Use برای این کار سازوکار جانگهدار (placeholder) دارد، یعنی sensitive_data: مقدارهای واقعی را در کد می‌دهید، مدل فقط نام‌هایی مانند x_user و x_pass را می‌بیند و کتابخانه پس از پاسخ مدل، مقدار واقعی را در فیلد تایپ می‌کند.

در آزمون ما کنش مدل <secret>x_pass</secret> بود، گزارش اجرا Typed <sensitive> را چاپ کرد و وقتی صفحه نام کاربری را بازتاب داد، مدل Signed in as <secret>x_user</secret> را دریافت کرد. مقدارهای واقعی در هیچ ورودی مدل دیده نشدند. سه عادت این کار را کامل می‌کنند:

  • اطلاعات محرمانه را به یک دامنه محدود کنید، تا هر جانگهدار فقط در سایتی که به آن تعلق دارد پر شود.
  • در صفحه‌هایی که اسکرین‌شات ممکن است مقدار را نشان دهد، use_vision=False را تنظیم کنید.
  • برای کارهایی که صفحه‌های بیرونی را می‌خوانند، پروفایل روزمره Chrome خود را (Browser.from_system_chrome()) به عامل ندهید: هر نشست واردشده‌ای که در آن است در دسترس عامل قرار می‌گیرد.

گام تأیید انسانی را چگونه اضافه کنیم؟

منظور از تزریق پرامپت غیرمستقیم (indirect prompt injection) متنی در یک صفحه است که مدل آن را دستور تلقی می‌کند. مدخل LLM01 در OWASP تأیید انسانی برای کنش‌های پرخطر را در میان راه‌های دفاعی فهرست می‌کند. Browser Use تابع register_new_step_callback را پس از آنکه مدل کنش‌هایش را انتخاب کرد و پیش از اجرای آن‌ها فرا می‌خواند، پس این callback می‌تواند عامل را متوقف کند:

python
"""A Browser Use agent with an allow-list, placeholders for secrets and a human approval gate."""
import asyncio
import os

from dotenv import load_dotenv

load_dotenv()

from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser import ProxySettings

SITE = "https://shop.example.com"
READ_ONLY = {"navigate", "scroll", "find_text", "extract", "screenshot", "go_back", "wait", "done"}

browser = Browser(
    headless=True,
    proxy=ProxySettings(
        server=os.environ["PROXY_SERVER"],
        username=os.environ["PROXY_USERNAME"],
        password=os.environ["PROXY_PASSWORD"],
    ),
    allowed_domains=["shop.example.com"],
    enable_default_extensions=False,
)


def approve(browser_state, model_output, step):
    """Runs after the model has chosen its actions and before they are executed."""
    planned = [action.model_dump(exclude_none=True) for action in model_output.action]
    if all(next(iter(a)) in READ_ONLY for a in planned):
        return
    print(f"Step {step} wants to run: {planned}")
    if input("Allow? [y/N] ").strip().lower() != "y":
        agent.stop()


agent = Agent(
    task=f"Sign in at {SITE}/login with username x_user and password x_pass, then open the partner offer.",
    llm=ChatOpenAI(model="gpt-4.1-mini"),
    browser=browser,
    sensitive_data={"http*://shop.example.com": {"x_user": os.environ["SHOP_USER"], "x_pass": os.environ["SHOP_PASS"]}},
    use_vision=False,
    register_new_step_callback=approve,
)


async def main():
    history = await agent.run(max_steps=8)
    print("done:  ", history.is_done())
    print("errors:", [e for e in history.errors() if e])


asyncio.run(main())

این اسکریپت را با تغییر دامنه روی فروشگاه محلی خودمان اجرا کردیم. گام ورود ابتدا اجازه خواست؛ پس از y، عامل هر دو مقدار را تایپ کرد و کلیک کرد. یک کلیک بعدی دوباره اجازه خواست و پس از n، گزارش اجرا Agent stopping را نشان داد، کلیک هرگز اجرا نشد و is_done() مقدار False را برگرداند. هر کنشی بیرون از مجموعه فقط‌خواندنی، از جمله تایپ، اکنون منتظر یک انسان می‌ماند.

Browser Use یا Playwright MCP؟

هر دو به مدل امکان استفاده از مرورگر می‌دهند؛ تفاوتشان در این است که حلقه را چه کسی اجرا می‌کند.

Browser UsePlaywright MCP
چه کسی حلقه عامل را اجرا می‌کندکتابخانه، در کد Python شمادستیاری که از پیش به کار می‌برید (Claude Code، Cursor)
پروکسی با رمز عبورفیلدهای ProxySettingslaunchOptions.proxy در یک فایل پیکربندی
محدودیت دامنهallowed_domains--allowed-origins
مناسب برایعامل‌هایی درون سرویس خودتانکارهای موردی از درون یک دستیار کدنویسی

راه‌اندازی و پرچم‌های دومی در Playwright MCP چیست؟ آمده است.

کاربردها

  • بررسی بومی‌سازی در سایت خودتان: اینکه بازدیدکننده‌ای از یک کشور چه زبان، واحد پول و اعلان کوکی‌ای می‌بیند (بومی‌سازی).
  • آزمون اکتشافی برنامه خودتان: طی کردن روند ثبت‌نام یا پرداخت در محیط آزمایشی از موقعیت‌های گوناگون (آزمون برنامه).
  • خواندن یک‌باره از صفحه‌ای که با JavaScript ساخته می‌شود: چند مقدار از یک صفحه عمومی که در مرورگر رندر می‌شود (صفحه‌های ایستا و پویا). برای کارهای منظم، یک اسکریپت ساده ارزان‌تر است (Playwright با پروکسی).
  • متن تمیز برای مدل به‌جای مرورگر: وقتی عامل فقط باید بخواند، Crawl4AI چیست؟ را ببینید.

عاملی که به‌جای شما وب را مرور می‌کند همچنان ترافیک خودکار است. ⁦Browser Use 0.13.10⁩ فایل robots.txt را نمی‌خواند (در بسته کدی برای آن نیافتیم)، پس robots.txt و شرایط استفاده سایت را خودتان بخوانید، اگر API رسمی هست از آن استفاده کنید، به چند صفحه با سرعتی انسانی بسنده کنید و وقتی سایتی «نه» گفت متوقف شوید. اینکه چرا سایت‌ها بازدیدکنندگان خودکار را از دیگران تشخیص می‌دهند در چرا سایت‌ها عامل‌های خرید هوش مصنوعی را مسدود می‌کنند؟ آمده است. قابلیت‌های stealth و CAPTCHA که برای Browser Use Cloud تبلیغ می‌شوند خارج از موضوع این راهنما هستند و آن‌ها را توصیه نمی‌کنیم.

اشتباهات رایج

آنچه می‌بینیدعلتچه باید کرد
net::ERR_NO_SUPPORTED_PROXIESاطلاعات ورود درون server نوشته شده استآن‌ها را به username و password منتقل کنید
net::ERR_TOO_MANY_RETRIESنام کاربری یا رمز عبور پروکسی نادرست است؛ پروکسی مدام با 407 پاسخ می‌دهداطلاعات ورود را دوباره از پنل کاربری کپی کنید
net::ERR_PROXY_CONNECTION_FAILEDمیزبان یا پورت نادرست است، یا ترافیک خروجی مسدود استهمان آدرس را با cURL بیازمایید
ERR_SOCKS_CONNECTION_FAILEDsocks5:// همراه با رمز عبوراز نقطه اتصال HTTP استفاده کنید، یا از SOCKS5 با لیست سفید IP
blocked by security policyآدرس بیرون از allowed_domains استدامنه را اضافه کنید، یا بگذارید مسدود بماند
عامل در میانه کار دوباره وارد حساب می‌شودIP خروجی چرخشی در میانه کار عوض شده استاز نشست ثابت استفاده کنید

دو عادت بی‌آنکه خطایی نشان دهند دردسر می‌سازند: فایروال دانستن allowed_domains و اجرای نسخه‌ای که ثابت نشده است. API از نسخه‌ای به نسخه دیگر تغییر کرده است، پس نسخه‌ای را که آزموده‌اید ثابت کنید (browser-use==0.13.10) و پیش از ارتقا یادداشت‌های انتشار را بخوانید.

راهنمای انتخاب

نیازپیشنهاد
نخستین اجرای عامل از طریق پروکسیProxySettings با نقطه اتصال HTTP، نام کاربری و رمز عبور؛ سپس اسکریپت نمایش IP
کار چندمرحله‌ای همراه با ورود به حسابنشست ثابتی طولانی‌تر از کار
اجراهای مستقل تک‌صفحه‌اینشست چرخشی
نگه داشتن عامل در یک سایتallowed_domains، به‌علاوه یک فهرست مجاز خروجی بیرون از عامل
کنش‌هایی که چیزی را تغییر می‌دهندیک callback تأیید که بتواند agent.stop() را فرا بخواند

پرسش‌های متداول

آیا Browser Use رایگان است؟

این کتابخانه با مجوز MIT رایگان است. هزینه فراخوانی‌های مدل، دست‌کم یکی در هر گام، و هزینه ترافیک پروکسی را می‌پردازید. Browser Use Cloud و مدل‌های میزبانی‌شده آن جداگانه صورت‌حساب می‌شوند.

آیا Browser Use هنوز از Playwright استفاده می‌کند؟

نه برای کنترل مرورگر. نسخه 0.13.10 مرورگر Chromium را از طریق Chrome DevTools Protocol کنترل می‌کند؛ فرمان نصب برای دریافت Chromium از دانلودکننده Playwright استفاده می‌کند و وضعیت ورود ذخیره‌شده از قالب فایل Playwright پیروی می‌کند.

آیا می‌توان به‌جای API از یک مدل محلی استفاده کرد؟

صفحه مدل‌های پشتیبانی‌شده ChatOllama(model="llama3.1:8b") را برای یک سرور محلی Ollama نشان می‌دهد. ما مدل محلی را نیازموده‌ایم.

آیا دو عامل می‌توانند هم‌زمان از دو کشور متفاوت استفاده کنند؟

بله، با دو شیء Browser که هر کدام ProxySettings خودش را دارد. یک مرورگر برای همه زبانه‌هایش یک پروکسی دارد.

آیا Browser Use به robots.txt پایبند است؟

نه به‌خودی‌خود؛ نسخه 0.13.10 هیچ بررسی robots.txt ندارد. پیش از آنکه سایتی را به عامل بسپارید، این فایل را بخوانید.

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

خیر. پروکسی آدرسی را که درخواست از آن می‌آید تغییر می‌دهد؛ رفتار مرورگر و سرعت درخواست‌ها همان می‌ماند. سرعت آهسته، صفحه‌های مجاز و API رسمی راه ماندگار است.

خلاصه

Browser Use یک مرورگر واقعی Chromium را در اختیار مدل زبانی می‌گذارد و حلقه عامل را در کد Python خودتان اجرا می‌کند. پروکسی را با ProxySettings و فیلدهای جداگانه username و password روی مرورگر تنظیم کنید؛ اطلاعات ورود درون آدرس و SOCKS5 با رمز عبور هر دو در Chromium شکست می‌خورند. پیش از نخستین کار IP خروجی را بررسی کنید، برای هر کاری که ورود به حساب دارد از نشست ثابت استفاده کنید و allowed_domains را فیلتری برای عامل بدانید، نه مرز شبکه. اطلاعات محرمانه را در sensitive_data نگه دارید، تله‌متری را خاموش کنید و برای کنش‌هایی که چیزی را تغییر می‌دهند تأیید یک انسان را لازم کنید. نقطه‌های خروج مناسب برای عامل شما در صفحه خدمات پروکسی ما است.

پرسش از ChatGPTپرسش از Claude