如何通过Chrome Devtools Protocol获取指定标签页的渲染进程ID
解决方案
你可以通过Chrome Devtools Protocol的Target域相关接口获取指定标签页/框架对应的渲染进程ID,具体操作步骤如下:
- 首先开启Target域权限,调用
Target.enable接口完成域初始化 - 调用
Target.getTargets接口获取当前浏览器所有目标实例,从返回结果中过滤type为page的项,匹配你需要查询的标签页的URL、标题等属性,获取对应标签页的targetId - 调用
Target.getTargetInfo接口,传入上一步获取的targetId作为参数,返回结果中targetInfo.processId字段即为该标签页对应的Chromium渲染进程ID
如果需要查询单个子框架对应的渲染进程ID,可按以下方式操作:
- 先开启Page域权限,调用
Page.enable接口完成域初始化 - 调用
Page.getFrameTree接口获取当前页面的完整框架树,找到目标子框架对应的frameId - 调用
Page.getFrameInfo接口传入目标frameId,返回结果中frameInfo.processId字段即为该子框架对应的渲染进程ID
调用示例
调用Target.getTargetInfo的请求参数示例:
{ "id": 1, "method": "Target.getTargetInfo", "params": { "targetId": "F40A782F11618DC41AB32D4C7E9Bxxxx" } }
返回结果示例:
{ "id": 1, "result": { "targetInfo": { "targetId": "F40A782F11618DC41AB32D4C7E9Bxxxx", "type": "page", "title": "示例页面", "url": "https://example.com", "attached": false, "browserContextId": "D4706965B75472257C738D652A8xxxx", "processId": 21844, "openerId": null } } }
上述返回结果中的processId值21844就是目标标签页对应的渲染进程ID,和chrome.processes.getProcessIdForTab接口返回的结果完全一致。
注意事项
- 该接口支持Chrome 63及以上版本,兼容性覆盖绝大多数主流Chrome环境
- 若你已通过CDP attach到目标标签页,可直接调用对应接口无需重复查询
targetId
内容的提问来源于stack exchange,提问作者Lien Chen
相关产品推荐
相关产品推荐

