新闻中心

Sublime开发Chrome DevTools协议(CDP)应用_自动化浏览器操作

2025-12-08
浏览次数:
返回列表
Sublime Text 不支持 CDP 通信,但可作为轻量编辑器配合 Python/Node.js 开发 CDP 自动化脚本;需 Chrome 启动时启用 --remote-debugging-port,再通过 cdp 或 puppeteer-core 连接调试端口实现页面控制、请求拦截等功能。

sublime开发chrome devtools协议(cdp)应用_自动化浏览器操作

Sublime Text 本身不直接支持 Chrome DevTools Protocol(CDP)通信,它不是浏览器自动化工具,也没有内置的 CDP 客户端能力。但你可以用 Sublime 作为代码编辑器,配合 Python、Node.js 等语言开发基于 CDP 的自动化应用——比如控制 Chrome/Edge 浏览器、抓取页面信息、拦截请求、注入脚本等。

为什么用 Sublime 写 CDP 应用?

Sublime 启动快、轻量、插件生态成熟,适合写小型 CDP 工具或调试脚本。你不需要 WebStorm 或 VS Code 的重型功能,只要能高效写 Python/JS、快速运行、查看日志就够了。

  • Sublime + Python + python-devtools(如 cdppychrome)写本地自动化脚本
  • Sublime + Node.js + puppeteer-core 连接已启动的 Chrome 实例(跳过 Puppeteer 自启逻辑,直连 CDP 端口)
  • 借助 Sublime Build System 一键运行 CDP 脚本并查看终端输出

快速连上 Chrome 的 CDP 端口

Chrome 必须以远程调试模式启动,才能被外部程序通过 WebSocket 连接:

  • 命令行启动(macOS/Linux):google-chrome --remote-debugging-port=9222 --no-first-run --no-default-browser-check
  • Windows:chrome.exe --remote-debugging-port=9222 --user-data-dir=/tmp/chrome_dev_test(注意指定独立 user-data-dir)
  • 启动后访问 http://localhost:9222/json 可看到当前页面列表和 WebSocket 调试地址(如 ws://localhost:9222/devtools/page/xxx

在 Sublime 中写一个最小 CDP 控制脚本(Python 示例)

安装依赖:pip install cdp(推荐轻量库 cdp)

新建 cdp_hello.py,内容如下:

GemDesign GemDesign

AI高保真原型设计工具

GemDesign 652 查看详情 GemDesign
import cdp
from cdp import browser, page, runtime
<p>async def main():</p><h1>连接本地 CDP 端口</h1><pre class="brush:php;toolbar:false;">async with cdp.connect("http://localhost:9222") as conn:
    # 获取第一页 target(tab)
    targets = await conn.execute(browser.get_targets())
    page_target = next(t for t in targets if t.type == "page")

    # 建立 page session
    async with conn.open_session(page_target) as session:
        await session.execute(page.enable())
        await session.execute(page.n*igate("https://example.com"))
        await session.execute(page.reload())

        # 执行 JS 并获取结果
        result = await session.execute(runtime.evaluate("document.title"))
        print("Page title:", result.result.value)

if name == "main": import asyncio asyncio.run(main())

在 Sublime 中配置 Python 构建系统(Tools → Build System → New Build System),粘贴:

{
  "cmd": ["python3", "-u", "$file"],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "selector": "source.python"
}

保存后按 Cmd+B(macOS)或 Ctrl+B(Win/Linux)即可运行并查看输出。

常见问题与绕过技巧

  • Connection refused:确认 Chrome 是用 --remote-debugging-port 启动的,且没被防火墙拦截
  • No targets found:打开一个网页标签页再试;或用 browser.get_browser_contexts() 查看上下文
  • 想无头但还要 CDP:加 --headless=new(Chrome 112+),但需确保端口仍开放
  • 不想每次手动启 Chrome:在脚本里用 subprocess.Popen 自动拉起带调试参数的 Chrome 进程

基本上就这些。Sublime 不是 CDP 运行环境,而是你的“趁手小刀”——写得清楚、跑得明白、改得顺手就行。

以上就是Sublime开发Chrome DevTools协议(CDP)应用_自动化浏览器操作的详细内容,更多请关注其它相关文章!


# 你不  # 天津网站优化推广运营  # 什么是seo引流技术  # 龙岗区网站建设论坛  # 上海推广营销咨询报价表  # 关键词排名商品怎么排  # 网站推广人工优化方案  # 查关键词50以内的排名  # seo排名哪家性价比高  # 喜庆素材网站建设ppt  # 电商网站建设外包公司  # 解决问题  # 中文网  # 就行  # 相关文章  # 自动化浏览器  # 可以用  # 运行环境  # 器中  # 编辑器  # 一键  # windows  # go  # node  # json  # node.js  # js  # sublime  # python  # linux 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  树莓派传感器触发:通过Twilio API发送WhatsApp消息教程  在Socket.IO连接中实现Access Token自动更新与动态重连  Golang如何实现简单的Web表单_Golang表单提交与验证处理方法  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  使用Python高效删除Word宏并转换DOCM为DOCX格式  必由学官网首页入口 必由学教师网页版登录指南  uc浏览器网页版入口 uc浏览器网页版最新网址  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  VS Code远程开发时如何处理文件权限问题  React/Next.js中实现列表项的动态选择与移动  AO3网页版最新入口合集 Archive of Our Own在线访问指南  支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  一加 14R 快充无反应_一加 14R 充电优化  4399免费游戏网址入口 4399小游戏免费入口点开即玩  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  J*aScript:在map操作中高效处理空数组  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  Python大型XML文件高效流式解析教程  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  Golang如何使用new_Go new分配内存机制讲解  利用Bokeh CustomJS动态控制DataTable列可见性  快速CSGO开箱网站指南 CSGO开箱平台推荐  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  我的世界官方游戏入口 我的世界官网平台直达链接  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  Python实时数据流中的动态最值查找策略  QQ邮箱正确登录入口_QQ邮箱官方网站使用地址  outlook中文官网入口地址 outlook官方中文版直达首页链接  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  J*aScript中localStorage数据的获取、清洗与格式化教程  如何在CSS中使用浮动制作导航栏_float实现水平菜单  高德地图怎么看全景照片_高德地图全景照片浏览教程  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  J*aScript DOM操作:高效清空列表元素的策略与实践 

搜索