You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pydoll automates Chromium-based browsers (Chrome, Edge) by connecting directly to the Chrome DevTools Protocol over WebSocket. No WebDriver binary, no `navigator.webdriver` flag, no compatibility issues.
25
+
Pydoll automates Chromium-based browsers (Chrome, Edge) by connecting directly to the Chrome DevTools Protocol over WebSocket. **No WebDriver binary, no `navigator.webdriver` flag, no compatibility issues.**
26
26
27
-
It combines a high-level API for common tasks with low-level CDP access for fine-grained control over network, fingerprinting, and browser behavior. The entire codebase is async-native and fully type-checked with mypy.
27
+
It combines a high-level API for stealthy automation with low-level CDP access for fine-grained control over network, fingerprinting, and browser behavior. And with its new **Pydantic-powered extraction engine**, it maps the DOM directly to structured Python objects, delivering an unmatched Developer Experience (DX).
28
28
29
29
### Top Sponsors
30
30
@@ -48,11 +48,11 @@ It combines a high-level API for common tasks with low-level CDP access for fine
48
48
49
49
### Why Pydoll
50
50
51
-
-**Stealth-first**: Human-like mouse movement, realistic typing, and granular [browser preference](https://pydoll.tech/docs/features/configuration/browser-preferences/) control for fingerprint management.
51
+
-**Structured extraction**: Define a [Pydantic](https://docs.pydantic.dev/) model, call `tab.extract()`, get typed and validated data back. No manual element-by-element querying.
52
52
-**Async and typed**: Built on `asyncio` from the ground up, 100% type-checked with `mypy`. Full IDE autocompletion and static error checking.
53
+
-**Stealth built in**: Human-like mouse movement, realistic typing, and granular [browser preference](https://pydoll.tech/docs/features/configuration/browser-preferences/) control for fingerprint management.
53
54
-**Network control**: [Intercept](https://pydoll.tech/docs/features/network/interception/) requests to block ads/trackers, [monitor](https://pydoll.tech/docs/features/network/monitoring/) traffic for API discovery, and make [authenticated HTTP requests](https://pydoll.tech/docs/features/network/http-requests/) that inherit the browser session.
54
55
-**Shadow DOM and iframes**: Full support for [shadow roots](https://pydoll.tech/docs/deep-dive/architecture/shadow-dom/) (including closed) and cross-origin iframes. Discover, query, and interact with elements inside them using the same API.
55
-
-**Ergonomic API**: `tab.find()` for most cases, `tab.query()` for complex [CSS/XPath selectors](https://pydoll.tech/docs/deep-dive/guides/selectors-guide/).
56
56
57
57
## Installation
58
58
@@ -62,55 +62,124 @@ pip install pydoll-python
62
62
63
63
No WebDriver binaries or external dependencies required.
64
64
65
-
## What's New
65
+
## Getting Started
66
66
67
-
<details>
68
-
<summary><b>HAR Network Recording</b></summary>
69
-
<br>
67
+
### 1. Stateful Automation & Evasion
70
68
71
-
Record network activity during a browser session and export as HAR 1.2. Replay recorded requests to reproduce exact API sequences.
69
+
When you need to navigate, bypass challenges, or interact with dynamic UI, Pydoll's imperative API handles it with humanized timing by default.
72
70
73
71
```python
74
-
from pydoll.browser.chromium import Chrome
72
+
import asyncio
73
+
from pydoll.browser import Chrome
74
+
from pydoll.constants import Key
75
75
76
-
asyncwith Chrome() as browser:
77
-
tab =await browser.start()
76
+
asyncdefgoogle_search(query: str):
77
+
asyncwith Chrome() as browser:
78
+
tab =await browser.start()
79
+
await tab.go_to('https://www.google.com')
78
80
79
-
asyncwith tab.request.record() as capture:
80
-
await tab.go_to('https://example.com')
81
+
# Find elements and interact with human-like timing
Once you reach the target page, switch to the declarative engine. Define what you want with a model, and Pydoll extracts it — typed, validated, and ready to use.
89
100
90
101
```python
91
-
from pydoll.protocol.network.types import ResourceType
102
+
from pydoll.browser.chromium import Chrome
103
+
from pydoll.extractor import ExtractionModel, Field
Save the current page and all its assets (CSS, JS, images, fonts) as a `.zip` bundle for offline viewing. Optionally inline everything into a single HTML file.
162
+
Mouse operations produce human-like cursor movement by default:
163
+
164
+
-**Bezier curve paths** with asymmetric control points
165
+
-**Fitts's Law timing**: duration scales with distance
Save the current page and all its assets (CSS, JS, images, fonts) as a `.zip` bundle for offline viewing. Optionally inline everything into a single HTML file.
0 commit comments