Direct CDP setup
Download the latest Windows or Linux archive from the download page, verify it against the included SHA256SUMS, and extract it. No Chrome, Go, Rust, display server, or GPU is required for the packaged executable.
| Platform | Runtime requirements |
|---|---|
| Windows amd64 | Verified on Windows 11. Run mimic.exe. |
| Linux amd64 | glibc 2.39+, libgcc_s, and installed Liberation, DejaVu, or Noto fonts. Ubuntu 24.04+. |
# Windows
.\mimic.exe --browser-mode headless --listen 127.0.0.1:9222
# Linux
./mimic --browser-mode headless --listen 127.0.0.1:9222Keep the process running while your client is connected. The endpoint has no authentication and is intended for trusted local clients.
Playwright
Install playwright-core so the client does not download a browser:
npm install playwright-core@1.63.0import { chromium } from "playwright-core";
const browser = await chromium.connectOverCDP("http://127.0.0.1:9222");
try {
const context = browser.contexts()[0];
const page = await context.newPage();
await page.goto("https://books.toscrape.com/", { waitUntil: "load" });
console.log(await page.locator("h1").textContent());
} finally {
// This disconnects the client; it does not own the Mimic process.
await browser.close();
}node playwright.mjsDemo site: Books to Scrape.
Wait for an application-specific element or state when hydration continues after the load event. Supported workflows include locators, forms, fetch-driven DOM updates, frames, Shadow DOM, popups, cookies, history, multiple Pages, and network events; this is not a promise that every Playwright feature is available.
Puppeteer
npm install puppeteer-core@25.10.0import puppeteer from "puppeteer-core";
const browser = await puppeteer.connect({
browserURL: "http://127.0.0.1:9222",
defaultViewport: null
});
const page = await browser.newPage();
await page.goto("https://books.toscrape.com/", { waitUntil: "load" });
console.log(await page.$eval("h1", node => node.textContent));
await page.close();
await browser.disconnect();node puppeteer.mjs