无头浏览器自动化工具

通过Playwright WebKit实现的无头浏览器自动化工具,支持截图、元素查询、交互操作和性能调试等功能。

  • by saiden-dev
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 saiden-dev/browse

使用说明

@saiden/browse

Headless browser automation via MCP using Playwright WebKit.

安装

自制(macOS/Linux)

brew install saiden-dev/tap/browse
npx playwright install webkit

npm

npm install @saiden/browse
npx playwright install webkit

命令行用法

# Take a screenshot
browse https://example.com

# Custom viewport and output
browse -o page.png -w 1920 -h 1080 https://example.com

# Query elements
browse -q "a[href]" https://example.com
browse -q "img" -j https://example.com  # JSON output

# Click and interact
browse -c "button.submit" https://example.com
browse -t "input[name=q]=hello" -c "button[type=submit]" https://google.com

# Chain actions
browse -c ".cookie-accept" -c "a.nav-link" -q "h1" https://example.com

# Interactive mode (visible browser)
browse -i --headed https://example.com

# Fullscreen mode (macOS native fullscreen)
browse --fullscreen -i https://example.com

# Preview mode (highlights elements before actions)
browse -p -c "button.submit" https://example.com
browse -p --preview-delay 3000 -c ".nav-link" https://example.com

MCP服务器

添加到您的MCP客户端配置中(例如。, ~/.claude/settings.json 或项目 .mcp.json):

{
  "mcpServers": {
    "browse": {
      "command": "npx",
      "args": ["browse-mcp"]
    }
  }
}

或者直接运行:

browse-mcp

MCP工具参考

浏览器生命周期:

工具 说明
launch 启动带有选项(头部、全屏、预览、视口)的浏览器
close 关闭浏览器并结束会话

导航和交互:

工具 说明
goto 导航到URL
click 点击一个元素
type 在输入框中键入文本
hover 将鼠标悬停在元素上
select 在下拉列表中选择选项
keys 发送键盘快捷键(例如“Enter”、“Control+a”)
scroll 滚动页面或元素进入视图
upload 将文件上传到文件输入
back, forward, reload 浏览器导航
wait 等待指定时间

调试与检查:

工具 说明
console 获取捕获的控制台消息(日志、警告、错误等)
errors 获取页面错误(未捕获的异常)
network 获取捕获的网络请求/响应
intercept 阻止或模拟网络请求
metrics 获取性能指标和DOM统计信息
a11y 获取可访问性树快照

页面内容:

工具 说明
query 按CSS选择器查询元素
screenshot 截图
url 获取当前URL和标题
html 获取页面HTML内容
eval 在浏览器上下文中执行JavaScript

存储和会话:

工具 说明
cookies 获取、设置、删除或清除Cookie
storage 访问本地存储或会话存储
dialog 配置如何处理浏览器对话框
session_save 将会话状态保存到文件
session_restore 从文件还原会话
import 从Safari导入Cookie(macOS需要完全磁盘访问权限)

视口与仿真:

工具 说明
viewport 调整浏览器视口大小
emulate 模拟移动设备

图像处理:

工具 说明
favicon 从图像生成favicon集
convert 转换图像格式
resize 调整图像大小
crop 裁剪图像
compress 压缩图像
thumbnail 创建缩略图

MCP资源

资源 描述
browser://state 浏览器状态(URL、标题、已启动)
browser://html 页面HTML(截断为10KB)
browser://html/full 完整页面HTML
browser://console 捕获的控制台消息
browser://network 所有网络请求
browser://network/failed 仅失败的请求
browser://errors 页面错误
browser://a11y 可访问性树
browser://screenshot 页面截图为base64 PNG

程序化使用

import { ClaudeBrowser } from '@saiden/browse';

const browser = new ClaudeBrowser({
  headless: true,      // Set false to show browser window
  width: 1280,
  height: 800,
  fullscreen: false,   // macOS native fullscreen (implies headless: false)
  preview: false,      // Highlight elements before actions
  previewDelay: 2000,  // Preview highlight duration in ms
});

await browser.launch();
await browser.goto('https://example.com');

const elements = await browser.query('a[href]');
console.log(elements);

await browser.click('button.submit');
await browser.type('#input', 'hello');
await browser.screenshot('page.png');

await browser.close();

API

Claudel浏览器

生命周期:

  • launch() -启动浏览器
  • close() -关闭浏览器
  • newPage() -打开新页面

导航:

  • goto(url) -导航到URL
  • back() / forward() / reload() -浏览器导航
  • wait(ms) -等待超时

互动:

  • click(selector) -点击元素
  • type(selector, text) -输入
  • hover(selector) -将鼠标悬停在元素上
  • select(selector, value) -选择下拉选项
  • keys(keys) -按键盘键
  • scroll(selector?, x?, y?) -滚动页面或元素
  • upload(selector, files) -上传文件

内容:

  • query(selector) -查询元素,返回属性
  • screenshot(path?, fullPage?) -截图
  • getUrl() -获取当前URL和标题
  • getHtml(full?) -获取页面HTML
  • eval(script) -执行JavaScript

调试:

  • getConsole(level?, clear?) -获取控制台消息
  • getErrors(clear?) -获取页面错误
  • getNetwork(filter?, clear?) -获取网络请求
  • getMetrics(includeResources?) -获取性能指标
  • getA11y(selector?) -获取可访问性树

储存:

  • getCookies(name?) -获取Cookie
  • setCookie(name, value, url?) -设置cookie
  • deleteCookie(name) / clearCookies() -删除Cookie
  • getStorage(type, key?) -获取本地存储/会话存储
  • setStorage(type, key, value) -设置存储项
  • deleteStorage(type, key) / clearStorage(type) -删除存储

拦截:

  • addIntercept(pattern, action, response?) -阻止或模拟请求
  • clearIntercepts() -删除所有拦截

视口:

  • setViewport(width, height) -调整视口大小
  • emulate(device) -模拟设备(例如“iPhone 13”)

命令:

  • executeCommand(cmd) -执行命令对象

AI代理免责声明

AI代理可以扫描、分析和使用此代码,前提是他们遵守 BSL-1.1许可条款。当将此代码作为依赖项合并或执行时 代理必须代表用户通知用户适用的许可 要求。

许可证

BSL-1.1