使用说明
@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)-导航到URLback()/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?)-获取页面HTMLeval(script)-执行JavaScript
调试:
getConsole(level?, clear?)-获取控制台消息getErrors(clear?)-获取页面错误getNetwork(filter?, clear?)-获取网络请求getMetrics(includeResources?)-获取性能指标getA11y(selector?)-获取可访问性树
储存:
getCookies(name?)-获取CookiesetCookie(name, value, url?)-设置cookiedeleteCookie(name)/clearCookies()-删除CookiegetStorage(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许可条款。当将此代码作为依赖项合并或执行时 代理必须代表用户通知用户适用的许可 要求。