اتصال مرورگر
هر نشست یک نشانی اختصاصی CDP دارد (در کنسول روی «کپی نشانی CDP» بزنید):
https://browserip.com/s/<id>/<token>
وبسوکت زیرین از wss://browserip.com/s/<id>/<token> و مسیر devtools استفاده میکند؛ webSocketDebuggerUrl که کلاینت از رابط /json میگیرد بهطور خودکار بازنویسی شده است؛ مستقیم با نشانی CDP وصل شوید و نیازی به ساختن دستی نشانی وبسوکت نیست. هر نشست یک نمونه مرورگر اختصاصی دارد (فرایند/زمینه مستقل) و با بقیه تداخلی ندارد.
توجه: این نشانی CDP با نشانی صفحه تصویریای که در مرورگر باز میکنید یکی نیست؛ نشانی صفحه تصویری https://browserip.com/view/<id>/<token> است (در کنسول روی «بازکردن» بزنید) و برای این است که انسان مستقیم در صفحه وب کار کند؛ نشانی /s/ برای اتصال برنامهها (browser-use / Playwright / Puppeteer) به CDP است.
browser-use (پایتون)
from browser_use.browser import BrowserSession
from browser_use.agent.service import Agent
# cdp_url را از «کپی نشانی CDP» در کنسول بگیرید
browser_session = BrowserSession(cdp_url="https://browserip.com/s/<id>/<token>")
agent = Agent(task="...", llm=..., browser_session=browser_session)
await agent.run()
Playwright
پایتون:
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(
"https://browserip.com/s/<id>/<token>")
page = browser.contexts[0].pages[0]
await page.goto("https://example.com")
جاوااسکریپت:
const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP(
'https://browserip.com/s/<id>/<token>');
const page = browser.contexts()[0].pages()[0];
await page.goto('https://example.com');
Puppeteer (جاوااسکریپت)
const puppeteer = require('puppeteer');
const browser = await puppeteer.connect({
browserURL: 'https://browserip.com/s/<id>/<token>',
});
const page = (await browser.pages())[0];
await page.goto('https://example.com');
⏱️ در مدت اتصال، نشست را فعال نگه دارید: اگر 20 دقیقه فعالیتی در CDP نباشد، بهطور خودکار بازیافت میشود؛ برای کارهای طولانی، مرتب با صفحه کار کنید یا دوباره روشن کنید.