Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ClericPy/ichrome
Chrome controller for Humans, based on Chrome Devtools Protocol(CDP) and python3.7+.
https://github.com/ClericPy/ichrome
cdp chrome chrome-controller chrome-daemon chrome-devtools-protocol chrome-process-daemon daemon headless python python3 python37 torequests webdriver
Last synced: 6 days ago
JSON representation
Chrome controller for Humans, based on Chrome Devtools Protocol(CDP) and python3.7+.
- Host: GitHub
- URL: https://github.com/ClericPy/ichrome
- Owner: ClericPy
- License: mit
- Created: 2018-11-21T18:59:04.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-11-09T16:18:08.000Z (about 1 year ago)
- Last Synced: 2024-04-23T22:20:15.980Z (7 months ago)
- Topics: cdp, chrome, chrome-controller, chrome-daemon, chrome-devtools-protocol, chrome-process-daemon, daemon, headless, python, python3, python37, torequests, webdriver
- Language: Python
- Homepage: https://pypi.org/project/ichrome/
- Size: 1.58 MB
- Stars: 209
- Watchers: 9
- Forks: 27
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[ichrome](https://github.com/ClericPy/ichrome) [![PyPI](https://img.shields.io/pypi/v/ichrome?style=plastic)](https://pypi.org/project/ichrome/)![PyPI - Wheel](https://img.shields.io/pypi/wheel/ichrome?style=plastic)![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ichrome?style=plastic)![PyPI - Downloads](https://img.shields.io/pypi/dm/ichrome?style=plastic)![PyPI - License](https://img.shields.io/pypi/l/ichrome?style=plastic)
----------
> Chrome controller for Humans, base on [Chrome Devtools Protocol(CDP)](https://chromedevtools.github.io/devtools-protocol/) and python3.7+. [Read Docs](https://clericpy.github.io/ichrome/)
![image](https://github.com/ClericPy/ichrome/raw/master/structure.png)
> If you encounter any problems, please let me know through [issues](https://github.com/ClericPy/ichrome/issues), some of them will be a good opinion for the enhancement of `ichrome`.
# Install
pip install ichrome -U
> Uninstall & Clear the user data folder
$ python3 -m ichrome --clean
$ pip uninstall ichrome## Quick Start
```python
import asyncio
from ichrome import AsyncChromeDaemonasync def test():
async with AsyncChromeDaemon() as cd:
# create a new tab
async with cd.connect_tab(index=None) as tab:
await tab.goto('https://github.com/ClericPy/ichrome', timeout=5)
print(await tab.title)
# Privacy Mode, proxyServer arg maybe not work on Chrome, for `Target.createBrowserContext` is the EXPERIMENTAL feature(but chromium is ok).
# https://chromedevtools.github.io/devtools-protocol/tot/Target/#method-createBrowserContext
async with cd.incognito_tab(proxyServer='http://127.0.0.1:8080') as tab:
await tab.goto('https://httpbin.org/ip', timeout=5)
print(await tab.html)asyncio.run(test())
```### [Read Docs](https://clericpy.github.io/ichrome/)
# Why?
- In desperate need of a stable toolkit to communicate with Chrome browser (or other Blink-based browsers such as Chromium)
- `ichrome` includes fast http & websocket connections (based on aiohttp) within an **asyncio** environment
- Pyppeteer is awesome
- But I don't need so much, and the spelling of pyppeteer is confused
- Event-driven architecture(EDA) is not always smart.
- Selenium is slow
- Webdriver often comes with memory leak
- PhantomJS development is suspended
- No native coroutine(`asyncio`) support
- Playwright comes too late
- This may be a good choice for both `sync` and `async` usage
- The 1st author of `puppeteer` joined it.
- But its core code is based on Node.js, which is too hard to monkey-patch.# Features
> As we known, **`Javascript` is the first-class citizen of the Browser world**, so learn to use it with `ichrome` frequently.
- A process daemon of Chrome instances
- **auto-restart**
- command-line usage
- `async` environment compatible
- Connect to an **existing** Chrome
- Operations on Tabs under stable `websocket`
- Commonly used functions
- `Incognito Mode`
- `ChromeEngine` as the progress pool
- support HTTP `api` router with [FastAPI](https://github.com/tiangolo/fastapi) (EXPERIMENTAL)
- launch the chrome pool with `python -m ichrome.web`
- `python -m ichrome.web --help` for usage
- `Flatten` mode with `sessionId`
- Create only **1** WebSocket connection
- New in version 2.9.0
- [EXPERIMENTAL](https://chromedevtools.github.io/devtools-protocol/tot/Target/#method-attachToTarget)
- Share the same `Websocket` connection and use `sessionId` to distinguish requests
- After v3.0.1
- `AsyncTab._DEFAULT_FLATTEN = True`
- The install script of chromium
- debug mode for sync usage with `ichrome.debugger` >4.0.0 (EXPERIMENTAL)