RP

remorses/playwriter

浏览器自动化

本页由 AI 翻译,技术细节请以原文为准。 查看原文

4039 stars 193 forks 质量 72 趋势 50MIT

Chrome 扩展和 CLI 让代理控制你的浏览器。在有状态沙盒中运行 Playwright 片段。可作为 CLI 或 MCP 提供

概览

让你的代理通过CLI或MCP控制你自己的Chrome浏览器。你的登录信息、扩展、Cookie——都已经存在了。 其他浏览器MCP会生成一个全新的Chrome——没有登录,没有扩展,机器人检测会立即标记,内存翻倍。Playwriter会连接到相应的。一个Chrome扩展,完整的Playwright API,所有你已经登录的平台。 用Playwriter构建驱动浏览器的代理?为整个团队提供一个家——一个AI代理即时通讯平台,代理们是聊天的真实成员。在云端运行,让他们交接任务并协作,并与团队共享工作中的代理。零设置,网页端和移动端皆可。 2. 点击标签页上的扩展图标→连接时会变绿 3. 安装CLI并开始自动化浏览器: 4. 安装该技能,让你的经纪人知道如何使用Playwriter: 始终使用单引号表示 -e,以防止 bash 在 JS 代码中解释 $、反向引号和 \。字符串在 JS 内部使用双引号。 每个会话都有 。

概述(AI 翻译)

让你的代理通过CLI或MCP控制你自己的Chrome浏览器。你的登录信息、扩展、Cookie——都已经存在了。

其他浏览器MCP会生成一个全新的Chrome——没有登录,没有扩展,机器人检测器会立即标记,内存翻倍。Playwriter会连接到你运行中的浏览器。一个Chrome扩展,完整的Playwright API,所有你已经登录的软件。

安装

  1. 从 Chrome 网店安装扩展

  2. 点击标签页上的扩展图标→连接时会变绿

  3. 安装CLI并开始自动化浏览器:

  4. 安装该技能,让你的经纪人知道如何使用Playwriter:

快速启动

提示: 始终使用单引号表示 -e,以防止 bash 在你的 JS 代码中解释 $、回溯和 \。JS 内部字符串使用双引号。

CLI 使用

每个会话都有隔离状态。浏览器标签页在会话间共享。

没有默认的 page。创建你自己的标签页并存储在 state。要使用用户已打开的标签页,请通过 URL 查找:

标签组

本地扩展会话默认使用名为 playwriter 的 Chrome 标签页组。远程控制会话将打开的标签页放入 remote。

本页由 AI 翻译,技术细节请以原文为准。

README

以下为原文 README 节选,完整内容请查看原文。

Other browser MCPs spawn a fresh Chrome — no logins, no extensions, instantly flagged by bot detectors, double the memory. Playwriter connects to your running browser instead. One Chrome extension, full Playwright API, everything you’re already logged into.

Installation

  1. Install Extension from Chrome Web Store

  2. Click extension icon on a tab → turns green when connected

  3. Install the CLI and start automating the browser:

    npm i -g playwriter
    playwriter -s 1 -e 'state.page = await context.newPage(); await state.page.goto("https://example.com")'
    
  4. Install the skill so your agent knows how to use Playwriter:

    npx -y skills add https://playwriter.dev -g -y
    

Quick Start

playwriter browser start  # starts Chrome for Testing/Chromium with bundled Playwriter extension
playwriter session new  # creates stateful sandbox, outputs session id (e.g. 1)
playwriter -s 1 -e 'state.page = await context.newPage(); await state.page.goto("https://example.com")'
playwriter -s 1 -e 'console.log(await snapshot({ page: state.page }))'
playwriter -s 1 -e 'await state.page.locator("aria-ref=e5").click()'

Tip: Always use single quotes for -e to prevent bash from interpreting $, backticks, and \ in your JS code. Use double quotes for strings inside the JS.

CLI Usage

Each session has isolated state. Browser tabs are shared across sessions.

# Browser management
playwriter browser start             # auto-finds Chrome for Testing or Chromium
playwriter browser start /path/to/browser-binary

# Session management
playwriter session new              # creates stateful sandbox, outputs id (e.g. 1)
playwriter session new --tab-group agent1 --tab-group-color blue
playwriter session update 1 --tab-group research
playwriter session list             # show sessions + state keys + group
playwriter session reset        # fix connection issues

# Execute (always use -s)
playwriter -s 1 -e 'state.page = await context.newPage(); await state.page.goto("https://example.com")'
playwriter -s 1 -e 'await state.page.click("button")'
playwriter -s 1 -e 'console.log(await state.page.title())'

There is no default page. Create your own tab and store it in state. To use a tab the user already opened, find it by URL:

playwriter -s 1 -e 'state.page = context.pages().findLast((p) => p.url().includes("github.com"))'
在 GitHub 查看完整 README

安装

npx -y skills add https://playwriter.dev -g -y
新手?先看 mcpskill.org 教程 →