OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  verify-on-browser:通过 Chrome DevTools 协议 (CDP) 完整控制浏览器

verify-on-browser:通过 Chrome DevTools 协议 (CDP) 完整控制浏览器

 
  list ·  2026-02-16 19:06:10 · 3 次点击  · 0 条评论  

描述: 通过 Chrome DevTools 协议控制浏览器 - 完整的 CDP 访问权限

浏览器控制技能

使用 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 - 获取当前 URL

get_url()

close_browser - 关闭浏览器

close_browser()

常用 CDP 操作

导航

// 导航到 URL
cdp_send(method: "Page.navigate", params: { url: "https://example.com" })

// 重新加载
cdp_send(method: "Page.reload")

// 前进/后退
cdp_send(method: "Page.navigateToHistoryEntry", params: { entryId: 1 })

DOM 操作

// 获取文档根节点
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" })

JavaScript 执行

// 执行表达式
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"
})

CDP 协议参考

获取所有域和方法的完整列表:
https://chromedevtools.github.io/devtools-protocol/

常用域:
- Page - 导航、生命周期、PDF 生成
- DOM - 文档结构操作
- CSS - 样式表操作
- Runtime - JavaScript 执行
- Network - 请求/响应拦截
- Input - 键盘/鼠标模拟
- Emulation - 设备/视口模拟
- Debugger - JavaScript 调试
- Performance - 性能指标
- Storage - localStorage、IndexedDB、cookies

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor