安装 Tampermonkey 和 WebRTC 调试脚本

在 Chrome 中安装 Tampermonkey 并添加自定义脚本

简介

Tampermonkey 可以在浏览器中运行用户脚本。本指南介绍如何使用该扩展判断网站是否执行 WebRTC 检查。

安装 Tampermonkey

前往 Chrome 网上应用店并安装扩展程序:

chromewebstore.google.comhttps://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo

安装后,单击右上角的扩展图标并固定Tampermonkey。

仅需要该扩展程序才能在浏览器中运行脚本。它本身并不能修复 WebRTC 泄漏。

如何手动添加脚本

对于本指南,请使用 Gist 中的脚本:

使用脚本打开要点

打开要点链接。

打开脚本文件并复制其完整内容。

在 Tampermonkey 中创建一个新脚本

单击 Tampermonkey 图标并选择 创建新脚本。

删除在编辑器中打开的默认模板。

粘贴脚本代码

将复制的代码从 Gist 粘贴到 Tampermonkey 编辑器中。

使用 Ctrl + S 或 文件 → 保存 按钮保存更改。

检查脚本是否启用

确保新脚本出现在 Tampermonkey 列表中并且具有 已启用 状态。

如何检查脚本是否有效

  1. 确保脚本切换已启用。
  2. 刷新目标页面。
  3. 使用 F12 打开 DevTools。
  4. 转到控制台选项卡。 5、通过\[TM]、\[WebRTC]、\[NET]标签可以方便的过滤输出。

应该出现什么日志

脚本启动后,通常会立即出现服务消息:

[TM] Network hooks installed
[TM] WebRTC hook installed

如果页面创建了RTCPeerConnection,WebRTC日志将出现在控制台中:

[WebRTC] created
config: { iceServers: [...] }
ICE servers: [...]

在候选人聚集期间,本地和远程候选人将可见:

[WebRTC] local candidate raw: candidate:...
[WebRTC] local candidate parsed: { ip: "192.168.1.10", port: "52344", type: "host" }

[WebRTC] remote candidate raw: candidate:...
[WebRTC] remote candidate parsed: { ip: "185.123.45.67", port: "3478", type: "srflx" }

如果连接到达路由选择,脚本将显示最终路径:

[WebRTC] SELECTED PATH (connectionstatechange)
candidate-pair: { ... }
local-candidate: { ip: "10.0.0.2", port: 54012, protocol: "udp", candidateType: "host" }
remote-candidate: { ip: "185.123.45.67", port: 3478, protocol: "udp", candidateType: "srflx" }
[WebRTC] REAL REMOTE ENDPOINT: { ip: "185.123.45.67", port: 3478, protocol: "udp", candidateType: "srflx" }

如果网站通过 fetch、xhr、WebSocket 或 sendBeacon 发送 WebRTC 数据,脚本也会显示:

[NET][fetch] https://site.example/api
[NET] SDP detected
v=0
o=- 46117317 2 IN IP4 127.0.0.1
...

[NET][ws] wss://site.example/socket
[NET] ICE detected
{"candidate":"candidate:...","sdpMid":"0","sdpMLineIndex":0}

首先看什么

  • \[TM] WebRTC hook installed - 脚本加载成功。
  • \[WebRTC] created - 该页面确实创建了 WebRTC 连接。
  • \[WebRTC] local candidate parsed - 本地候选者可见。
  • \[WebRTC] remote candidate parsed - 远程候选者可见。
  • \[WebRTC] REAL REMOTE ENDPOINT - 最有用的日志。它显示了 WebRTC 选择的最终远程端点。

如果日志很少

该脚本添加了两个手动控制台命令:

__dumpAllWebRTCSelectedPaths()
__dumpAllWebRTCStats()

第一个命令再次打印选定的路径。

第二个显示了 candidate-pair、local-candidate、remote-candidate 和 transport 的完整快照。

安装后有用的检查

启动脚本后,您可以使用如何检查WebRTC泄漏一文中的服务来检查WebRTC行为。

如果您想了解泄漏机制本身,请参阅WebRTC泄漏的工作原理。

最后更新

本页内容