Hướng dẫn
Gắn Playwright
Kết nối Playwright, Patchright hoặc Puppeteer vào phiên Browlix đang chạy qua broker có kiểm vé trên máy chạy.
Browlix mở trình duyệt; code của bạn gắn vào qua Chrome DevTools Protocol. Chạy đoạn code gắn kết trên máy đang giữ phiên (vì sao).
Xin vé
import { Browlix } from "@browlix/sdk";
const bx = new Browlix({ apiKey: process.env.BROWLIX_API_KEY! });
const a = await bx.attach(sessionId, { ttlSeconds: 300 });
// a.endpoint = "ws://127.0.0.1:<port>/cdp", a.headers = { Authorization: "Bearer <ticket>" }Phản hồi có ticket, endpoint, expires_at, session_id và scope. Phiên phải đang ready.
Playwright
import { chromium } from "playwright";
const browser = await chromium.connectOverCDP(a.endpoint, { headers: a.headers });
const context = browser.contexts()[0]!; // context của chính hồ sơ
const page = context.pages()[0] ?? (await context.newPage());
await page.goto("https://example.com");
await browser.close(); // chỉ ngắt kết nối; trình duyệt vẫn chạyDùng context có sẵn — nó mang cookie, bộ nhớ và thiết lập của hồ sơ. browser.newContext() sẽ tạo một context trống khác, không thuộc hồ sơ.
Patchright và Puppeteer
Patchright là bản Playwright thay thế trực tiếp: import chromium từ patchright và gọi connectOverCDP y như trên. Puppeteer kết nối theo cách tương tự:
npm i patchright
npm i puppeteer-coreimport puppeteer from "puppeteer-core";
const browser = await puppeteer.connect({ browserWSEndpoint: a.endpoint, headers: a.headers });Quy tắc broker áp dụng
- Chỉ loopback: broker nghe trên
127.0.0.1của máy giữ phiên. - Một vé, một phiên, tới
expires_at(30–900 giây). Hết hạn thì xin vé mới cho kết nối mới. - Vé hết hiệu lực khi phiên đổi chủ giữ hoặc kết thúc.
- Ngắt kết nối không bao giờ dừng phiên; gọi
sessions.stopkhi xong.
Những điều nên tránh
- Đừng đóng trình duyệt qua CDP (
Browser.close); kết thúc phiên bằngsessions.stopđể dữ liệu hồ sơ được lưu. - Đừng đổi ngôn ngữ, múi giờ, user agent hay khung nhìn của hồ sơ qua CDP override; hãy đặt trên hồ sơ để cả trình duyệt luôn nhất quán.
