{"id":38117624,"url":"https://github.com/sadnoodles/chromeremote","last_synced_at":"2026-01-16T22:26:06.372Z","repository":{"id":62562155,"uuid":"96304000","full_name":"sadnoodles/chromeremote","owner":"sadnoodles","description":"A tool for Chrome remote dev debugging.","archived":false,"fork":false,"pushed_at":"2018-05-28T11:38:28.000Z","size":34,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-11-27T17:37:28.898Z","etag":null,"topics":["automatic","chrome-devtools","debugging","spider","testing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sadnoodles.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-05T09:47:27.000Z","updated_at":"2025-09-07T21:37:21.000Z","dependencies_parsed_at":"2022-11-03T15:17:31.446Z","dependency_job_id":null,"html_url":"https://github.com/sadnoodles/chromeremote","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sadnoodles/chromeremote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadnoodles%2Fchromeremote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadnoodles%2Fchromeremote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadnoodles%2Fchromeremote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadnoodles%2Fchromeremote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sadnoodles","download_url":"https://codeload.github.com/sadnoodles/chromeremote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadnoodles%2Fchromeremote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28485254,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["automatic","chrome-devtools","debugging","spider","testing"],"created_at":"2026-01-16T22:26:06.289Z","updated_at":"2026-01-16T22:26:06.358Z","avatar_url":"https://github.com/sadnoodles.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chrome Remote\r\n[![PyPI version](https://badge.fury.io/py/chromeremote.svg)](https://pypi.python.org/pypi/chromeremote/)\r\n\r\nA tool for Chrome remote dev debugging. Support:\r\n\r\n1. Method callback.\r\n2. Event callback.\r\n3. Threaded. Async return.\r\n\r\n## Install\r\n\r\n1. use pip:\r\n\r\n`pip install chromeremote`\r\n\r\n2. Download this repo and run:\r\n\r\n`pip install .` or `python set.py install`\r\n\r\n3. from git:\r\n\r\n`pip install git+https://github.com/sadnoodles/chromeremote` \r\n\r\nThis commad require git.exe.\r\n\r\n## Example\r\n\r\nFirst use `chrome.exe --remote-debugging-port=9222` start Chrome ( need close all existing chrome windows first). Then run the example with: `python example.py`. This a simple example for how to use callback.\r\n\r\n```python\r\n\r\n#!/usr/bin/env python\r\n# -*- coding: utf-8 -*-\r\nfrom chromeremote import ChromeTabThread\r\n\r\n\r\ndef print_ret(kwargs):\r\n    # This func will be called when received a registed chrome event.\r\n    assert kwargs.has_key('current_tab')\r\n    print kwargs\r\n    return\r\n\r\n\r\nclass ExampleTab(ChromeTabThread):\r\n\r\n    def test_recv(self, result):\r\n        # Handle received result here.\r\n        print \"Received result:\", result\r\n\r\n    def run(self):\r\n        self.register_event(\"Network.responseReceived\",\r\n                            print_ret)  # Register a event before thread started.\r\n        self.open_tab()\r\n        self.Network.enable(maxTotalBufferSize=10000000,\r\n                            maxResourceBufferSize=5000000)\r\n        self.Page.enable(callback=self.test_recv)  # You can add callback for every request.\r\n        self.Page.navigate(url='http://www.baidu.com/')\r\n        self.Page.getResourceTree()\r\n        super(ExampleTab, self).run()\r\n\r\n\r\ndef main():\r\n    import time\r\n    tab = ExampleTab('127.0.0.1', 9222)\r\n    tab.start()\r\n    time.sleep(10)\r\n    tab.kill()\r\n    time.sleep(2)\r\n\r\n\r\nif __name__ == '__main__':\r\n    main()\r\n\r\n```\r\n\r\nA XSS detection Example is added. See [xssbot.py](./examples/xssbot.py) Thanks for [howmp](https://github.com/howmp).\r\n\r\nGenerator example: [generator_example.py](./examples/generator_example.py)\r\nScreenshot example: [screenshot.py](./examples/screenshot.py)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsadnoodles%2Fchromeremote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsadnoodles%2Fchromeremote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsadnoodles%2Fchromeremote/lists"}