{"id":15138611,"url":"https://github.com/bayandin/devtools-proxy","last_synced_at":"2025-09-29T07:32:16.077Z","repository":{"id":62567885,"uuid":"64083114","full_name":"bayandin/devtools-proxy","owner":"bayandin","description":"Multiplexing proxy for Chrome DevTools. Fully compatible with Selenium and ChromeDriver","archived":true,"fork":false,"pushed_at":"2019-01-29T22:18:48.000Z","size":215,"stargazers_count":66,"open_issues_count":7,"forks_count":12,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-16T00:11:41.097Z","etag":null,"topics":["chrome-devtools","chromedriver","selenium"],"latest_commit_sha":null,"homepage":"https://developers.google.com/web/updates/2017/10/devtools-release-notes#multi-client","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bayandin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-24T19:56:49.000Z","updated_at":"2024-04-11T01:39:17.000Z","dependencies_parsed_at":"2022-11-03T16:30:43.483Z","dependency_job_id":null,"html_url":"https://github.com/bayandin/devtools-proxy","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bayandin%2Fdevtools-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bayandin%2Fdevtools-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bayandin%2Fdevtools-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bayandin%2Fdevtools-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bayandin","download_url":"https://codeload.github.com/bayandin/devtools-proxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234600846,"owners_count":18858545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-devtools","chromedriver","selenium"],"created_at":"2024-09-26T07:42:18.857Z","updated_at":"2025-09-29T07:32:10.787Z","avatar_url":"https://github.com/bayandin.png","language":"Python","readme":"#  DevTools Proxy\n\n[![Build Status](https://travis-ci.org/bayandin/devtools-proxy.svg?branch=master)](https://travis-ci.org/bayandin/devtools-proxy)\n[![PyPI](https://img.shields.io/pypi/v/devtools-proxy.svg)](https://pypi.python.org/pypi/devtools-proxy)\n[![GitHub release](https://img.shields.io/github/release/bayandin/devtools-proxy.svg)](https://github.com/bayandin/devtools-proxy/releases/latest)\n\nDevTools Proxy is a tool for creating simultaneous connections via DevTools Protocol (~~[which is not possible by default](https://developer.chrome.com/devtools/docs/debugger-protocol#simultaneous)~~ and it is [possible](https://developers.google.com/web/updates/2017/10/devtools-release-notes#multi-client) since Chrome 63 even without DevTools Proxy).\n\n## How it works\n\n```\n+---+      +---+\n| C |      |   |\n| L |      | D |    +-----------+\n| I |      | E |    |           |\n| E |\u003c----\u003e| V |    |  BROWSER  |\n| N |      | T |    |           |\n| T |      | O |    |           |\n+---+      | O |    |   +---+   |\n           | L |    |   | T |   |\n           | S |\u003c-----\u003e | A |   |\n+---+      |   |    |   | B |   |\n| C |      | P |    |   +---+   |\n| L |      | R |    |           |\n| I |\u003c----\u003e| O |    |           |\n| E |      | X |    |           |\n| N |      | Y |    +-----------+\n| T |      |   |\n+---+      +---+\n```\n\n## Installation\n\n* Download \u0026 unzip [standalone binary](https://github.com/bayandin/devtools-proxy/releases/latest) for your system.\n* If you use Python (at least 3.6) you can install it via pip: `pip install devtools-proxy`\n\n## Usage\n\n### With Selenium and ChromeDriver\n\nThere are [examples](examples/) for Python and Ruby. Demos for [CPU Throttling](https://youtu.be/NU46EkrRoYo), [Network requests](https://youtu.be/JDtuXAptypY) and [Remote debugging](https://youtu.be/X-dL_eKB1VE).\n\n#### Standalone (for any language)\n\n* Configure [`ChromeOptions`](https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-chromeOptions-object):\n    * Set path to `chrome-wrapper.sh` as a `binary`. Optional arguments are mentioned in example for Python below\n    * Add `--devtools-proxy-binary=/path/to/devtools-proxy` to `args`\n\n#### Python\n\n`devtools-proxy` pypi package supports at least Python 3.6. If you use lower Python version use Standalone package.\n\n```bash\npip install -U devtools-proxy\n```\n\n```python\nfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilities\n\nfrom devtools.proxy import CHROME_WRAPPER_PATH\n\ndevtools_proxy_binary = 'devtools-proxy' # Or path to `devtools-proxy` from downloaded binaries\n\ncapabilities = DesiredCapabilities.CHROME.copy()\ncapabilities['chromeOptions'] = {\n    'binary': CHROME_WRAPPER_PATH, # Or path to `chrome-wrapper.sh` from downloaded binaries\n    'args': [\n        f'--devtools-proxy-binary={devtools_proxy_binary}',\n        # Optional arguments:\n        # '--chrome-binary=/path/to/chrome/binary', # Path to real Chrome/Chromium binary\n        # '--devtools-proxy-chrome-debugging-port=some-free-port', # Port which proxy will listen. Default is 12222\n        # '--devtools-proxy-args=--additional --devtools-proxy --arguments, # Additional arguments for devtools-proxy from `devtools-proxy --help`\n    ],\n}\n```\n\n### With multiple Devtools instances\n\n* Run `devtools-proxy` (by default it started on 9222 port)\n* Run Chrome with parameters `--remote-debugging-port=12222 --remote-debugging-address=127.0.0.1`\n* Open a website which you want to inspect\n* Open debugger in a new Chrome tab:  `http://localhost:9222` and choose your website to inspect\n* Repeat the previous step as many times as you need it\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbayandin%2Fdevtools-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbayandin%2Fdevtools-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbayandin%2Fdevtools-proxy/lists"}