使用¶
在 Firefox 中使用基于 CDP 的远程代理时,同时运行三个不同的程序/组件
**客户端**,即用于控制和检索 Firefox 信息的进程外脚本或库(例如 Puppeteer)或 Web 检查器前端;
**代理**,客户端连接到的代理,它是 Firefox 内部的 HTTPD,用于促进客户端和目标之间的通信;
以及**目标**,即正在调试的 Web 文档。
从 Firefox 86 开始,远程代理默认包含在所有 Firefox 版本中。
要检查您的 Firefox 二进制文件是否启用了远程代理,您可以在其帮助消息中查找此信息
% ./firefox -h
…
--remote-debugging-port [<port>] Start the Firefox Remote Agent, which is
a low-level debugging interface based on the CDP protocol.
Defaults to listen on localhost:9222.
…
使用时,远程代理将启动一个 HTTP 服务器,并在 stderr 上打印一条消息,其中包含主目标的 WebSocket 监听器的地址
% firefox --remote-debugging-port
DevTools listening on ws://localhost:9222/devtools/browser/7b4e84a4-597f-4839-ac6d-c9e86d16fb83
该参数可选地接受 port
作为值
您还可以指示远程代理绑定到系统上的特定端口。因此,该参数接受一个可选值,这意味着 firefox --remote-debugging-port=9989
将 HTTPD 绑定到端口 9989
% firefox --remote-debugging-port 9989
DevTools listening on ws://localhost:9989/devtools/browser/b49481af-8ad3-9b4d-b1bf-bb0cdb9a0620
如果缺少值,则将使用默认端口 9222
。
当您要求远程代理侦听端口 0 时,系统将自动分配一个任意空闲端口
% firefox --remote-debugging-port 0
DevTools listening on ws://localhost:59982/devtools/browser/a12b22a9-1b8b-954a-b81f-bd31552d3f1c
分配原子端口在您想要避免竞争条件时很有用。自动分配的端口将在短暂端口范围内,具体范围取决于您的系统和系统配置,但始终保证是空闲的,从而消除了绑定到已在使用的端口的风险。