Browser Use
ให้ AI ทำงานบนเว็บแทนคุณ เช่น กรอกฟอร์ม ค้นหา และดึงข้อมูล ใช้เบราว์เซอร์บนคลาวด์ของผู้ทำหรือรันในเครื่องก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Zero-dependency browser automation over raw CDP — no Puppeteer, Playwright, or Selenium.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"cdpilot": {
"command": "npx",
"args": [
"-y",
"cdpilot",
"mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add cdpilot -- npx -y cdpilot mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"cdpilot": {
"command": "npx",
"args": [
"-y",
"cdpilot",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"cdpilot": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"cdpilot",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub mehmetnadir ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.9.4) เข้า registry 39 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Browser Use, Chrome DevTools MCP, MCP Server Browser
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
ให้ AI ทำงานบนเว็บแทนคุณ เช่น กรอกฟอร์ม ค้นหา และดึงข้อมูล ใช้เบราว์เซอร์บนคลาวด์ของผู้ทำหรือรันในเครื่องก็ได้
ให้ AI ใช้เครื่องมือนักพัฒนาของ Chrome ตรวจหน้าเว็บ ดูว่าโหลดช้าตรงไหน และหาข้อผิดพลาด ทำโดยทีม Chrome DevTools
MCP server for browser use access
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Zero-dependency browser automation from your terminal. One command, full control.
npx cdpilot launch # Start browser with CDP
npx cdpilot go https://example.com npx cdpilot shot # Take screenshot
No config files. No boilerplate. Just npx and go.
AI agents and developers need browser control that just works:
npx cdpilot launch starts an isolated browser sessioncdpilot picks the right browser for what you're doing. auto (default) is a two-axis policy — extension workload × platform stability:
| Your workload | Auto-pick order |
|---|---|
Has extensions registered (ext-install) | vivaldi → brave → edge → chromium → chrome (→ Chrome for Testing, if installed) |
| No extensions (pure automation) | chrome → vivaldi → edge → chromium → brave |
Override anytime:
cdpilot browser # show current pick + reason
cdpilot browser vivaldi # pin to Vivaldi cdpilot browser chrome-for-testing # pin to Chrome for Testing (after installing it, below) cdpilot browser auto # restore smart default
Why the split?
chrome://extensions shows 0 items.--load-extension (tested).Each browser gets its own isolated profile (~/.cdpilot/.../profile-vivaldi etc.) so switching never causes prefs corruption.
If you develop an extension against Chrome itself, install Chrome for Testing (CfT) — the Chrome team's versioned, non-auto-updating Chrome build for automation, which still loads unpacked extensions:
cdpilot browser install chrome-for-testing # latest Stable
cdpilot browser install chrome-for-testing --channel beta # stable | beta | dev | canary cdpilot browser install chrome-for-testing --version 154 # a milestone, or a full version (154.0.8037.57) cdpilot ext-install ./my-extension/ # register your unpacked extension cdpilot browser status # shows the CfT version and path
last-known-good-versions-with-downloads.json, per-version and per-milestone files). Those list URLs only, no hash, so the download is checked against the server's Content-Length and its x-goog-hash md5; the zip's SHA-256 is recorded.$CDPILOT_HOME/browsers/chrome-for-testing/ / (on macOS the quarantine attribute is cleared on that directory only) and recorded in installed.json.cdpilot browser chrome, or auto with Chrome the only extension-capable choice) becomes Chrome for Testing, with one stderr line saying so. Without CfT installed, ext-install on Chrome prints the install command and keeps Vivaldi/Brave as the alternative. cdpilot browser chrome-for-testing selects it always. An explicit CHROME_BIN is never replaced.profile-cft).sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0.# Use directly (no install needed)
npx cdpilot
npm i -g cdpilot
Requirements: Node.js 18+, Python 3.10+, and one of: Brave Browser, Google Chrome, or Chromium. (The Python websockets module is auto-installed by the pre-flight wizard on first launch.)
npx cdpilot setup # Auto-detect browser, create isolated profile
npx cdpilot launch # Start browser with CDP enabled npx cdpilot status # Check connection
Install cdpilot's MCP server and its skill straight into Claude Code, no .mcp.json editing required:
/plugin marketplace add mehmetnadir/cdpilot
/plugin install cdpilot@cdpilot
This registers the cdpilot MCP server (npx cdpilot mcp) and a short skill that teaches Claude Code when and how to reach for cdpilot's commands. See .claude-plugin/marketplace.json and plugins/cdpilot/.
For MCP clients that support one-click local server installation (Claude Desktop and others), download the .mcpb file attached to the latest release and open it, or build it yourself:
npm run build:mcpb # writes cdpilot.mcpb at the repo root
The bundle still needs the same runtime on the machine that runs it: Node.js 18+, Python 3.10+, and Brave/Chrome/Chromium installed. See manifest.json for the bundle's MCP Bundle manifest (spec).
One breaking change, the rest is additive.
Breaking — Visual feedback default flipped to OFF. The green glow border, animated fake cursor, click ripples, and keystroke display made cdpilot feel like an amateur typing on every page. They are now opt-in:
cdpilot show on # restore the old visual feedback layer
cdpilot show off # default since 0.5.0
The MCP server's persistent-glow flow (CDPILOT_MCP_SESSION=1) is unchanged — AI agents that rely on visible feedback during a session still see it automatically. Only direct-CLI users see the difference.
New in 0.5.0 (no migration needed):
cdpilot dismiss — heuristic auto-click for "Stay signed out / No thanks" buttons on LLM chat sign-up walls.cdpilot adaptive on — auto-escalate to stealth on CAPTCHA-protected hosts, with persistent per-host memory.cdpilot cookies save/load — export/import cookies as JSON to replay CF/DataDome clearance across runs.cdpilot context create/list/close + CDPILOT_TARGET — isolated browser contexts for true parallel automation inside a single browser.cdpilot fast / cdpilot show — bundled timing + visual toggles.scrollIntoView instant, WebSocket connection pool, /json TTL cache.See CHANGELOG.md for the full list with rationale.
cdpilot go <url> # Navigate to URL (alias: open <url>)
cdpilot content # Get page text content cdpilot html # Get page HTML cdpilot shot [file] # Take screenshot (PNG) cdpilot pdf [file] # Save page as PDF
cdpilot click <selector> # Click element
cdpilot type # Type into input cdpilot fill # Set input value (React-compatible) cdpilot submit # Submit form cdpilot hover # Hover element cdpilot keys # Keyboard shortcut (ctrl+a, enter, etc.) cdpilot scroll-to # Scroll element into view cdpilot drag # Drag and drop
A real mouse click (inside a frame, or --entropy=on) whose target moves or gets covered while the button is held is not clicked again by script: click prints Pressed (released elsewhere, not clicked): … and ends with exit 3 (pressed, release missed the target, not clicked; 1 stays "error"). A target the page replaced or navigated away from on mousedown prints Pressed (the page replaced or left it, not clicked): … and exits 0. MCP (browser_click, browser_smart_click) returns isError: false with a first line {"clicked": false, "reason": "moved"|"gone"|"unknown"}. batch and run finish every step, then exit 1 if a step failed, else 3 if a click was not clicked, else 0.
Card forms (Stripe/iyzico-style), embedded login widgets and the reCAPTCHA checkbox live inside s. Name the frame chain before the element selector with >>>, or pass --frame:
# Payment-style page: the card fields are inside <iframe id="card" title="Secure card payment">
cdpilot fill "iframe#card >>> input[name=cardnumber]" "4242424242424242" cdpilot type --frame "#card" "input[name=cvc]" "123" cdpilot click "iframe[title='Secure card payment'] >>> button#pay-btn"
cdpilot click "iframe.checkout >>> iframe.card >>> button"
cdpilot click --frame 0 "button.submit" # first iframe (same order as frame list) cdpilot fill --frame "url=js.stripe.com" "input[name=cardnumber]" "4242424242424242" cdpilot frame list --frame "#card" # iframes inside that frame cdpilot frame eval --frame "#card" "document.title" # runs in the frame's own page context
click, fill, type, submit, hover, dblclick, rightclick, smart-click, smart-fill, smart-select and frame list|eval|shadow.name/id, or url= . --frame also takes a bare src substring. >>> inside quotes or [...] is literal. A selector that matches an element *wrapping* an iframe (Stripe's #card-element) enters the iframeตัดมาแค่ช่วงต้น อ่านต่อใน repo