Chrome controller for Humans, based on Chrome Devtools Protocol(CDP) and python3.8+. Read Docs
🚀 [NEW] ichrome v6.0.1 is available! Now supporting ichrome.http - a RESTful API server to control Chrome via HTTP requests.
uvx --from ichrome ichrome.http
or
python -m ichrome.http
then view the interactive API docs athttp://localhost:8080/docsWant to add your own endpoints? Wrap tab operations as business logic into HTTP routes. See demo/custom_routes_guide.py for a quick guide.
If you encounter any problems, please let me know through issues; your feedback is valuable for enhancing
ichrome.
Install
pip install ichrome -U
Uninstall & Clear the user data folder
$ python3 -m ichrome --clean
$ pip uninstall ichrome
Quick Start
import asyncio
from ichrome import AsyncChromeDaemon
async 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())
Why?
- In desperate need of a stable toolkit to communicate with Chrome browser (or other Blink-based browsers such as Chromium)
ichromeincludes 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 confusing
- Event-driven architecture (EDA) is not always ideal.
- Selenium is slow
- Webdriver often comes with memory leaks
- PhantomJS development is suspended
- No native coroutine (
asyncio) support
- Webdriver often comes with memory leaks
- Playwright arrived too late
- This may be a good choice for both
syncandasyncusage- The original author of
puppeteerjoined the team.
- The original author of
- But its core code is based on Node.js, which is hard to monkey-patch.
- This may be a good choice for both
Features
As we know,
Javascriptis the first-class citizen of the Browser world, so learn to use it frequently withichrome.
-
A process daemon for Chrome instances
- auto-restart
- command-line usage
asyncenvironment compatible
-
Connect to an existing Chrome
-
Operations on Tabs under stable
websocket- Commonly used functions
Incognito Mode
-
ChromeEngineas the process pool- support HTTP
apirouter with aiohttppython -m ichrome.httporuvx ichrome.httppython -m ichrome.http --helpfor usage
python -m ichrome.web(Removed since v6.0.0)
- support HTTP
-
Flattenmode withsessionId- Create only 1 WebSocket connection
- New in version 2.9.0
- EXPERIMENTAL
- Share the same
Websocketconnection and usesessionIdto 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)
Breaking Changes
- v6.0.0
ichrome.webmodule is removed, use ichrome.http instead.- refactor the
ChromeEnginemethod parameters.- add
waitcondition before engine.do
- add
Metadata
Release files for ichrome 6.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ichrome-6.0.1.tar.gz | 152.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ichrome-6.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 235.4 kB
Release files / ichrome-6.0.1.tar.gz
| Download URL | ichrome-6.0.1.tar.gz |
|---|---|
| Size | 152.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2bf78959a842ef411f335548edefd2f12e7fc181f485717b20fa49feef6e736
|
|
BLAKE2b-256 checksum How to use checksums |
21bfdd5fc17d562752e52fcbcdf8e55fd7029b8f76ea409acac4ffe5b9a9fcd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.33.1
|
Release files / ichrome-6.0.1-py3-none-any.whl
| Download URL | ichrome-6.0.1-py3-none-any.whl |
|---|---|
| Size | 83.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8153458722f3b6653538c18b3fc832f0209c303d3884f238f4b50c1df4c2038a
|
|
BLAKE2b-256 checksum How to use checksums |
60f9a03084d58fe00e3fce81683ee3b331fd48dffbad1d847d700cc3958171f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.33.1
|