serverHow to install Tampermonkey and a script for WebRTC debugging

Installing Tampermonkey in Chrome and adding a user script

Installing Tampermonkey

To run user scripts in Chrome it's convenient to use the extension Tampermonkey.

Go to the Chrome Web Store and install the extension:

After installation click the extensions icon in the top right and pin Tampermonkey.

circle-info

The extension is only needed to run the script in the browser. It does not itself prevent WebRTC leaks.

How to add a script manually

For this instruction use the script from the Gist:

1

Open the Gist with the script

Follow the link to the Gist.

Open the script file and copy its contents completely.

2

Create a new script in Tampermonkey

Click the icon Tampermonkey and choose Create a new script.

Delete the default template that opens in the editor.

3

Paste the script code

Paste the copied code from the Gist into the Tampermonkey editor.

Save changes with the shortcut Ctrl + S or with the button File → Save.

4

Check that the script is enabled

Make sure the new script appears in the Tampermonkey list and is in status Enabled.

How to check that the script is working

  1. Make sure the switch for the script is turned on.

  2. Refresh the page you need.

  3. Open DevTools via F12.

  4. Go to the Console.

  5. It's convenient to filter output by tags \[TM], \[WebRTC] and \[NET].

Which logs should appear

Right after the script starts usually service messages appear:

If the page creates RTCPeerConnection, WebRTC logs will appear in the console:

During candidate gathering local and remote candidates will be visible:

If the connection reaches route selection, the script will show the final path:

If the site sends WebRTC data via fetch, xhr, WebSocket or sendBeacon, the script will show that too:

What to look at first

  • \[TM] WebRTC hook installed — the script loaded successfully.

  • \[WebRTC] created — the page actually created a WebRTC connection.

  • \[WebRTC] local candidate parsed — a local candidate is visible.

  • \[WebRTC] remote candidate parsed — a remote candidate is visible.

  • \[WebRTC] REAL REMOTE ENDPOINT — the most useful log. It shows the final remote endpoint chosen by WebRTC.

If there are few logs

This script adds two manual commands to the console:

The first command reprints the selected paths.

The second shows a full snapshot of candidate-pair, local-candidate, remote-candidate and transport.

Useful to check after installation

After running the script you can check WebRTC behavior using the services from the article Where you can check for a WebRTC leak.

If you want to understand the leakage mechanism itself, see the article How a leak through WebRTC works.

Last updated

Was this helpful?