Using Chromium Remote Debugging from External Device

Lukas Ruge picture Lukas Ruge · Aug 29, 2013 · Viewed 11.4k times · Source

Chrome can be run to support remote debugging by starting it via the command line with a prompt such as chrome.exe --remote-debugging-port=9222 --user-data-dir=C:/foo. This is often used to debug on android or iOs using a Browser on a Desktop Device but I would like to debug chrome running on a desktop PC. from a "client browser" on the same machine one can call localhost:9222 and see the server browser, calling localhost:9222/json will result in a json representation of the tabs open in the "server browser". This works just fine.

However, when I try to use another device in the same (wifi) network by calling [local IP]:9222 or [local IP]:9222/json (local IP is the IP of the server browser) I get a connection timeout. Is it possible to use remote debugging in such way? Are any other switches needed when starting the browser?

Edit I have found some use of forward tcp for the debugging of mobile devices, but there does not seem to be such a switch for chrome.

Edit 2 This seems to be a bit of a duplicate of the questions here and here however, as of yet I have not gotten the solutions presented there to work.

So, apparently this comes down to forwarding a port to localhost:9222. However, at least on windows machines I have no luck with SSH tunnels. Are there any other ways to forward on the machine?

Answer

Matyas picture Matyas · Aug 18, 2014

As you've mentioned it, the solution is to forward the port 9222. Below you find approaches for Linux and Windows.

Linux

After having started chrome with

chrome --remote-debugging-port=9222

Forward the port

ssh -L 0.0.0.0:9223:localhost:9222 localhost -N

This way you can access the debuggin interface from an external device on port 9223 using a Chrome browser.

Windows

As seen in this answer, on windows (tested on 7,8) the easiest way to do portforwarding without 3rd party apps is via netsh

I've created a batch file with the following content. It has to be ran as administrator, and with no previous chrome windows open:

netsh interface portproxy delete v4tov4 listenport=9222 listenaddress=0.0.0.0
start /b cmd /c call "\program files\google\chrome\application\chrome.exe" -remote-debugging-port=9222
timeout 5
netsh interface portproxy add v4tov4 listenport=9222 connectaddress=127.0.0.1 connectport=9222 listenaddress=0.0.0.0

This way you can access the debuggin interface from an external device on port 9222.

Make also sure that no firewall is blocking the corresponding port.