如何从本地其他运行程序检测Chrome是否开启F12调试模式
非JavaScript侧检测Chrome F12调试模式的可行方案
进程与命令行特征
- 当DevTools(即F12调试窗口)开启时,Chrome会为当前标签页对应的渲染进程新增
--debug-devtools相关启动参数,你可以通过读取本地Chrome进程的命令行参数匹配特征判断。Windows下可以用tasklist /v或者WMI接口查询,macOS/Linux下可以用ps aux | grep Chrome读取进程参数。 - 独立窗口打开的DevTools会单独生成一个Chrome子进程,进程名和普通Chrome进程一致,但命令行参数固定携带
--type=renderer --extension-process --devtools-frontend标识,可以直接匹配该特征判断是否有调试窗口运行。
系统资源与行为特征
- 端口监听:如果Chrome开启了远程调试端口(很多场景下F12开启时会默认关联启用本地调试端口),默认会监听127.0.0.1的9222端口,你可以检测本地端口9222是否被Chrome进程占用,作为辅助判断依据。
- 内存特征:开启DevTools的标签页对应的渲染进程,内存占用会比同页面未开调试时高30%-80%,同时会新增与调试相关的内存段名称,Windows下可以通过
ReadProcessMemory读取对应进程的内存段特征匹配,macOS/Linux可以读取/proc/[pid]/maps获取内存段信息。 - 文件操作特征:Chrome开启DevTools时,会频繁读写当前用户目录下的DevTools相关缓存文件,不同系统对应路径如下,你可以监控该目录的读写频率变化,作为辅助判断特征:
- Windows:
%LOCALAPPDATA%\Google\Chrome\User Data\Default\DevTools - macOS:
~/Library/Application Support/Google/Chrome/Default/DevTools - Linux:
~/.config/google-chrome/Default/DevTools
- Windows:
注意事项
- 上述特征仅适用于官方发行版Chrome,二次修改的Chromium衍生版可能存在特征不匹配的情况。
- 端口监听特征需要Chrome手动开启远程调试配置才会生效,默认配置下仅开启F12不会主动监听9222端口,建议结合进程参数特征共同判断,准确率可以达到95%以上。
内容的提问来源于stack exchange,提问作者Zhai
相关产品推荐
相关产品推荐

