📖 مستندات BrowserIP
🌐 العربية

الاتصال بالمتصفح

لكل جلسة عنوان CDP مخصص (اضغط «نسخ عنوان CDP» في لوحة التحكم):

https://browserip.com/s/<id>/<token>

يستخدم WebSocket الأساسي wss://browserip.com/s/<id>/<token> ومسار devtools؛ وwebSocketDebuggerUrl الذي يحصل عليه العميل من واجهة /json أُعيدت كتابته تلقائيًا؛ اتصل مباشرة بعنوان CDP دون الحاجة إلى تركيب عنوان WebSocket يدويًا. تمتلك كل جلسة نسخة متصفح مخصصة (عملية/سياق مستقل) ولا تتداخل مع غيرها.

تنبيه: عنوان 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');
⏱️ حافظ على نشاط الجلسة أثناء الاتصال: إذا لم يكن هناك نشاط CDP لمدة 20 دقيقة، تُستعاد تلقائيًا؛ للمهام الطويلة، تفاعل مع الصفحة بانتظام أو أعد التشغيل.