Skip to content
This repository was archived by the owner on Oct 31, 2019. It is now read-only.

bayandin/devtools-proxy

Repository files navigation

DevTools Proxy

Build Status PyPI GitHub release

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).

How it works

+---+      +---+
| 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 |      |   |
+---+      +---+

Installation

  • 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

Usage

With Selenium and ChromeDriver

There are examples for Python and Ruby. Demos for CPU Throttling, Network requests and Remote debugging.

Standalone (for any language)

  • Configure ChromeOptions:
    • Set path to chrome-wrapper.sh as a binary. Optional arguments are mentioned in example for Python below
    • Add --devtools-proxy-binary=/path/to/devtools-proxy to args

Python

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`
    ],
}

With multiple Devtools instances

  • 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

About

Multiplexing proxy for Chrome DevTools. Fully compatible with Selenium and ChromeDriver

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •