使用 browser MCP 服务器,通过完整的 CDP 访问权限来控制浏览器。核心的 cdp_send 工具可以调用任何 Chrome DevTools 协议方法。
cdp_send - 原始 CDP 访问直接调用任何 CDP 方法:
cdp_send(method: "Domain.method", params: {...})
screenshot - 页面截图screenshot(format: "png"|"jpeg", fullPage: true|false)
get_url - 获取当前 URLget_url()
close_browser - 关闭浏览器close_browser()
// 导航到 URL
cdp_send(method: "Page.navigate", params: { url: "https://example.com" })
// 重新加载
cdp_send(method: "Page.reload")
// 前进/后退
cdp_send(method: "Page.navigateToHistoryEntry", params: { entryId: 1 })
// 获取文档根节点
cdp_send(method: "DOM.getDocument")
// 查询选择器 (需要来自 getDocument 的 nodeId)
cdp_send(method: "DOM.querySelector", params: { nodeId: 1, selector: "h1" })
// 获取外部 HTML
cdp_send(method: "DOM.getOuterHTML", params: { nodeId: 5 })
// 设置属性
cdp_send(method: "DOM.setAttributeValue", params: { nodeId: 5, name: "class", value: "new-class" })
// 执行表达式
cdp_send(method: "Runtime.evaluate", params: { expression: "document.title" })
// 执行并返回值
cdp_send(method: "Runtime.evaluate", params: {
expression: "document.querySelectorAll('a').length",
returnByValue: true
})
// 在对象上调用函数
cdp_send(method: "Runtime.callFunctionOn", params: {
objectId: "...",
functionDeclaration: "function() { return this.innerText; }"
})
// 启用网络追踪 (必须先执行)
cdp_send(method: "Network.enable")
// 设置 Cookie
cdp_send(method: "Network.setCookie", params: {
name: "session",
value: "abc123",
domain: ".example.com"
})
// 获取 Cookie
cdp_send(method: "Network.getCookies")
// 清除缓存
cdp_send(method: "Network.clearBrowserCache")
// 设置额外请求头
cdp_send(method: "Network.setExtraHTTPHeaders", params: {
headers: { "X-Custom": "value" }
})
// 阻止 URL
cdp_send(method: "Network.setBlockedURLs", params: { urls: ["*.ads.com"] })
// 点击 (分发鼠标事件)
cdp_send(method: "Input.dispatchMouseEvent", params: {
type: "mousePressed",
x: 100,
y: 200,
button: "left",
clickCount: 1
})
// 输入文本
cdp_send(method: "Input.insertText", params: { text: "Hello world" })
// 按键
cdp_send(method: "Input.dispatchKeyEvent", params: {
type: "keyDown",
key: "Enter"
})
// 设置视口
cdp_send(method: "Emulation.setDeviceMetricsOverride", params: {
width: 375,
height: 812,
deviceScaleFactor: 3,
mobile: true
})
// 设置地理位置
cdp_send(method: "Emulation.setGeolocationOverride", params: {
latitude: 37.7749,
longitude: -122.4194,
accuracy: 100
})
// 设置时区
cdp_send(method: "Emulation.setTimezoneOverride", params: { timezoneId: "America/New_York" })
// 启用性能指标
cdp_send(method: "Performance.enable")
// 获取指标
cdp_send(method: "Performance.getMetrics")
// 启动性能分析器
cdp_send(method: "Profiler.start")
// 停止并获取分析结果
cdp_send(method: "Profiler.stop")
// 启用调试器
cdp_send(method: "Debugger.enable")
// 设置断点
cdp_send(method: "Debugger.setBreakpointByUrl", params: {
lineNumber: 10,
url: "https://example.com/script.js"
})
// 获取本地存储
cdp_send(method: "DOMStorage.getDOMStorageItems", params: {
storageId: { securityOrigin: "https://example.com", isLocalStorage: true }
})
// 清除存储
cdp_send(method: "Storage.clearDataForOrigin", params: {
origin: "https://example.com",
storageTypes: "all"
})
获取所有域和方法的完整列表:
https://chromedevtools.github.io/devtools-protocol/
常用域:
- Page - 导航、生命周期、PDF 生成
- DOM - 文档结构操作
- CSS - 样式表操作
- Runtime - JavaScript 执行
- Network - 请求/响应拦截
- Input - 键盘/鼠标模拟
- Emulation - 设备/视口模拟
- Debugger - JavaScript 调试
- Performance - 性能指标
- Storage - localStorage、IndexedDB、cookies