DevTools Proxy is a tool for creating simultaneous connections via DevTools Protocol (which is not possible by default and it is possible since Chrome 63 even without DevTools Proxy).
+---+ +---+
| C | | |
| L | | D | +-----------+
| I | | E | | |
| E |<---->| V | | BROWSER |
| N | | T | | |
| T | | O | | |
+---+ | O | | +---+ |
| L | | | T | |
| S |<-----> | A | |
+---+ | | | | B | |
| C | | P | | +---+ |
| L | | R | | |
| I |<---->| O | | |
| E | | X | | |
| N | | Y | +-----------+
| T | | |
+---+ +---+
- Download & unzip standalone binary for your system.
- If you use Python (at least 3.6) you can install it via pip:
pip install devtools-proxy
There are examples for Python and Ruby. Demos for CPU Throttling, Network requests and Remote debugging.
- Configure
ChromeOptions
:- Set path to
chrome-wrapper.sh
as abinary
. Optional arguments are mentioned in example for Python below - Add
--devtools-proxy-binary=/path/to/devtools-proxy
toargs
- Set path to
devtools-proxy
pypi package supports at least Python 3.6. If you use lower Python version use Standalone package.
pip install -U devtools-proxy
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from devtools.proxy import CHROME_WRAPPER_PATH
devtools_proxy_binary = 'devtools-proxy' # Or path to `devtools-proxy` from downloaded binaries
capabilities = DesiredCapabilities.CHROME.copy()
capabilities['chromeOptions'] = {
'binary': CHROME_WRAPPER_PATH, # Or path to `chrome-wrapper.sh` from downloaded binaries
'args': [
f'--devtools-proxy-binary={devtools_proxy_binary}',
# Optional arguments:
# '--chrome-binary=/path/to/chrome/binary', # Path to real Chrome/Chromium binary
# '--devtools-proxy-chrome-debugging-port=some-free-port', # Port which proxy will listen. Default is 12222
# '--devtools-proxy-args=--additional --devtools-proxy --arguments, # Additional arguments for devtools-proxy from `devtools-proxy --help`
],
}
- Run
devtools-proxy
(by default it started on 9222 port) - Run Chrome with parameters
--remote-debugging-port=12222 --remote-debugging-address=127.0.0.1
- Open a website which you want to inspect
- Open debugger in a new Chrome tab:
http://localhost:9222
and choose your website to inspect - Repeat the previous step as many times as you need it