使用

在 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

分配原子端口在您想要避免竞争条件时很有用。自动分配的端口将在短暂端口范围内,具体范围取决于您的系统和系统配置,但始终保证是空闲的,从而消除了绑定到已在使用的端口的风险。