cdpilot 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,22 +37,34 @@ AI agents and developers need browser control that **just works**:
37
37
  - **AI control warning** — Red toast notification appears when you hover during active automation
38
38
  - **Privacy-first** — Everything runs locally. No data leaves your machine
39
39
 
40
- ### Why Brave?
40
+ ### Browser Selection (Workload-Aware Auto-Pick)
41
41
 
42
- cdpilot uses [Brave Browser](https://brave.com) as its engine. Here's why:
42
+ cdpilot picks the right browser for what you're doing. `auto` (default) is a
43
+ two-axis policy — extension workload × platform stability:
43
44
 
44
- | Feature | Brave | Chrome | Why it matters |
45
- |---------|-------|--------|---------------|
46
- | **Built-in ad blocker** | Shields (native) | Extension needed | Pages load faster, less noise in DOM |
47
- | **Tracker blocking** | Default on | Manual config | Cleaner network logs for debugging |
48
- | **Fingerprint protection** | Native | None | Better privacy for automated sessions |
49
- | **Chromium-based** | Full CDP support | Full CDP support | Same DevTools Protocol, same power |
50
- | **Open source** | Yes (MPL 2.0) | Chromium yes, Chrome no | Transparent, auditable |
51
- | **Resource usage** | Lower memory | Higher memory | Better for running alongside your work |
45
+ | Your workload | Auto-pick order |
46
+ |---|---|
47
+ | Has extensions registered (`ext-install`) | vivaldi → brave → edge → chromium → chrome |
48
+ | No extensions (pure automation) | chrome → vivaldi → edge → chromium → brave |
52
49
 
53
- **TL;DR:** Brave = Chrome's power + built-in privacy + less bloat. Perfect for automation.
50
+ Override anytime:
54
51
 
55
- > cdpilot also works with Chrome and Chromium as fallback. Brave is recommended, not required.
52
+ ```bash
53
+ cdpilot browser # show current pick + reason
54
+ cdpilot browser vivaldi # pin to Vivaldi
55
+ cdpilot browser auto # restore smart default
56
+ ```
57
+
58
+ **Why the split?**
59
+ - **Chrome 147+ silently drops `--load-extension`** for unpacked extensions
60
+ (no error, no warning). Verified — `chrome://extensions` shows 0 items.
61
+ - **Vivaldi, Brave, Edge, Chromium** honor `--load-extension` (tested).
62
+ - On **macOS 26 (Tahoe)** Brave 1.89 crashes deterministically at ~7min
63
+ uptime (SIGTRAP in ThreadPoolForegroundWorker). cdpilot detects the OS
64
+ and demotes Brave automatically until a fixed Brave release ships.
65
+
66
+ Each browser gets its own isolated profile (`~/.cdpilot/.../profile-vivaldi`
67
+ etc.) so switching never causes prefs corruption.
56
68
 
57
69
  ## Installation
58
70
 
@@ -187,6 +199,47 @@ cdpilot dialog auto-accept # Auto-accept dialogs
187
199
  cdpilot permission grant geo # Grant geolocation
188
200
  ```
189
201
 
202
+ ### Stealth & CAPTCHA
203
+
204
+ Zero-dependency anti-fingerprint layer — patches `navigator.webdriver`,
205
+ `chrome.runtime`, plugins (proper `PluginArray` inheritance), WebGL
206
+ vendor/renderer, permissions, hardware concurrency, and the `Worker`
207
+ constructor. Injected via `Page.addScriptToEvaluateOnNewDocument` before
208
+ any page script runs. Disabled by default; opt-in.
209
+
210
+ ```bash
211
+ cdpilot stealth on # enable fingerprint patches (opt-in)
212
+ cdpilot stealth off # disable (default)
213
+ cdpilot stealth status # show which patches are applied
214
+
215
+ cdpilot captcha-check # JSON detection of Turnstile/hCaptcha/reCAPTCHA/
216
+ # DataDome/PerimeterX/Arkose/GeeTest. Exit 0/3
217
+ cdpilot captcha-wait [sec] # block until user solves (interactive)
218
+ # or poll with JSON stream (non-interactive)
219
+ ```
220
+
221
+ Verified against public bot-detection panels:
222
+ - **bot.sannysoft.com:** 24/24 PASS (WebDriver, Chrome obj, Plugins as PluginArray, WebGL, PHANTOM_*, HEADCHR_*, SELENIUM_DRIVER)
223
+ - **bot.incolumitas.com** intoli: 6/6 OK — new-tests: 6/7 OK (one FAIL = pure CDP presence, cannot be JS-patched)
224
+ - **nowsecure.nl** (Cloudflare full challenge): passed
225
+ - **arh.antoinevastel.com/areyouheadless:** "You are not Chrome headless"
226
+
227
+ ### Reliability
228
+
229
+ ```bash
230
+ cdpilot browser [name|auto] # workload-aware browser selection
231
+ cdpilot health # JSON: alive, port, tabs, browser, today's crashes
232
+ ```
233
+
234
+ `cdpilot health` is designed for shell watchdogs:
235
+
236
+ ```bash
237
+ until cdpilot health >/dev/null; do cdpilot launch; sleep 2; done
238
+ ```
239
+
240
+ Surfaces today's Brave crash count from `~/Library/Logs/DiagnosticReports/`
241
+ on macOS — spot degradation before your automation silently stalls.
242
+
190
243
  ## Use with AI Agents
191
244
 
192
245
  cdpilot is designed to be called by AI agents as a tool:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdpilot",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Zero-dependency browser automation from your terminal. One command, full control.",
5
5
  "bin": {
6
6
  "cdpilot": "./bin/cdpilot.js",
package/src/cdpilot.py CHANGED
@@ -14,7 +14,7 @@ Environment:
14
14
  CDPILOT_PROFILE Isolated browser profile directory
15
15
  """
16
16
 
17
- __version__ = "0.4.3"
17
+ __version__ = "0.4.4"
18
18
 
19
19
  import asyncio
20
20
  import json