9222 是什么
给 Chrome 或 Edge 加上 --remote-debugging-port=9222 启动参数后,浏览器会在 9222 上暴露 DevTools 协议接口:/json 列出所有已打开页面并给出各自的调试地址,通过这些地址即可在页面里执行脚本、读取网络请求与 Cookie。Selenium、Playwright 与各类爬虫调试都依赖它。
为什么它属于高危端口
9222 没有任何认证:能访问这个端口的人就能操作你已登录的浏览器会话,读取 Cookie、导出令牌、打开任意页面。历史上多款桌面客户端因默认开启远程调试且绑定到所有网卡而被本地提权利用;Chrome 默认只监听本机回环,一旦显式放开监听地址,风险立刻放大。
基本信息
| 服务 | Chrome DevTools Protocol(远程调试) |
|---|---|
| 协议 | TCP/HTTP 9222 |
| 默认监听 | 仅本机回环 |
| 启动参数 | --remote-debugging-port=9222 |
| 安全等级 | 仅本机使用,暴露即高危 |
典型使用场景
- 自动化脚本接管浏览器完成登录态复用与页面操作
- 爬虫调试时观察渲染结果与实际发出的请求
- 排查前端问题时导出请求明细与性能数据
- 多账号隔离:配合独立用户数据目录分别启动实例
- 安全巡检时确认业务机器上是否有进程在监听 9222
调试与风险确认
调试与风险确认
curl -s http://127.0.0.1:9222/json/version # 版本与调试通道地址
curl -s http://127.0.0.1:9222/json/list | head -c 300 # 列出页面与其调试地址
ss -lntp | grep 9222 # 确认监听在本机还是全网卡安全启动方式
安全启动方式
# 仅绑定回环,并用独立用户数据目录隔离
chrome --remote-debugging-port=9222 \
--remote-debugging-address=127.0.0.1 \
--user-data-dir=/tmp/chrome-profile
# 调试结束后直接退出该实例,不要长期保留监听常用接口
| 接口 | 作用 | 返回内容 |
|---|---|---|
| /json/version | 确认调试服务可用 | 浏览器版本与调试通道地址 |
| /json/list | 列出全部页面 | 页面标题、网址与调试地址 |
| /json/new | 新建标签页 | 可打开指定网址,新版本需用 PUT 方法 |
暴露 9222 等于把已登录的浏览器会话交出去,务必绑定回环地址并使用独立的用户数据目录隔离,调试完成后及时关闭浏览器进程。