stealth-cli 0.5.0 → 0.5.1

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.
Files changed (2) hide show
  1. package/README.md +234 -146
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,186 +1,250 @@
1
- # 🦊 stealth-cli
1
+ <div align="center">
2
+ <h1>🦊 stealth-cli</h1>
3
+ <p><strong>Anti-detection browser CLI powered by Camoufox</strong></p>
4
+ <p>Browse, search, scrape, and crawl the web with C++ level fingerprint spoofing.<br/>Bypasses Cloudflare, Google, and most bot detection systems.</p>
5
+ <p>
6
+ <a href="https://www.npmjs.com/package/stealth-cli"><img src="https://img.shields.io/npm/v/stealth-cli?color=blue" alt="npm version" /></a>
7
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License" /></a>
8
+ <a href="https://camoufox.com"><img src="https://img.shields.io/badge/engine-Camoufox-red" alt="Camoufox" /></a>
9
+ <img src="https://img.shields.io/badge/node-%3E%3D18-green" alt="Node" />
10
+ <img src="https://img.shields.io/badge/tests-59%20passing-brightgreen" alt="Tests" />
11
+ </p>
12
+ </div>
2
13
 
3
- Anti-detection browser CLI powered by [Camoufox](https://camoufox.com). Browse, screenshot, search, extract, crawl — all with C++ level fingerprint spoofing. Zero JavaScript shims, undetectable by design.
14
+ ---
15
+
16
+ ## Why
4
17
 
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
- [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D18-green.svg)](https://nodejs.org)
18
+ Headless Chrome gets fingerprinted. Playwright gets blocked. Stealth plugins become the fingerprint.
7
19
 
8
- ## Features
20
+ **stealth-cli** uses [Camoufox](https://camoufox.com) — a Firefox fork that patches fingerprint generation at the **C++ implementation level**. No JavaScript shims, no wrappers, no tells. The browser reports spoofed values natively.
9
21
 
10
- - 🛡️ **C++ level anti-detection** Camoufox patches Firefox at native level, not JS shims
11
- - 🔍 **14 search engines** — Google, Bing, DuckDuckGo, YouTube, GitHub, and more
12
- - 🕷️ **Recursive crawler** — Depth control, regex filters, delay, output to JSONL
13
- - 📸 **Screenshots & PDF** — Full page, viewport, custom resolution
14
- - 🧲 **Data extraction** — Links, images, meta, headings, CSS selectors
15
- - 🎭 **Browser profiles** — Persistent fingerprint identities with cookie storage
16
- - 🔄 **Proxy rotation** — Pool management with health checking
17
- - 🤖 **Human simulation** — Bezier mouse curves, natural typing, scroll patterns
18
- - 👻 **Daemon mode** — Background browser for instant command execution
19
- - 🧩 **MCP server** — Plug into Claude Desktop, Cursor, and other AI agents
20
- - 📦 **SDK mode** — Import as a library in your own Node.js projects
22
+ Wrap that in a developer-friendly CLI with 16 commands, and you get a tool that both humans and AI agents can use.
21
23
 
22
24
  ## Install
23
25
 
24
26
  ```bash
25
- git clone https://github.com/Youhai020616/stealth-cli.git
27
+ # From npm (recommended)
28
+ npm install -g stealth-cli
29
+
30
+ # From source
31
+ git clone https://github.com/user/stealth-cli.git
26
32
  cd stealth-cli
27
33
  npm install # Installs deps + downloads Camoufox browser (~300MB)
28
- npm link # Makes 'stealth' command available globally
34
+ npm link # Makes 'stealth' command globally available
29
35
  ```
30
36
 
37
+ > First run downloads the Camoufox browser binary (~300MB). Subsequent runs are instant.
38
+
31
39
  ## Quick Start
32
40
 
33
41
  ```bash
34
- # Browse a page
42
+ # Browse a page with anti-detection
35
43
  stealth browse https://example.com
36
44
 
37
- # Screenshot
45
+ # Take a screenshot
38
46
  stealth screenshot https://example.com -o page.png
39
47
 
40
- # Search with anti-detection
48
+ # Search Google without getting blocked
41
49
  stealth search google "best coffee beans" -f json
42
50
 
43
- # Extract structured data
44
- stealth extract https://example.com --links --format json
51
+ # Extract all links from a page
52
+ stealth extract https://example.com --links
45
53
 
46
54
  # Crawl a site
47
55
  stealth crawl https://example.com --depth 2 --limit 50 -o results.jsonl
48
56
 
49
- # Interactive REPL
57
+ # Interactive browsing (REPL)
50
58
  stealth interactive --url https://example.com
51
59
  ```
52
60
 
53
61
  ## Commands
54
62
 
55
- ### Core
63
+ ### Core (11 commands)
56
64
 
57
65
  | Command | Description |
58
66
  |---------|-------------|
59
- | `stealth browse <url>` | Visit URL, print page content |
60
- | `stealth screenshot <url>` | Take a screenshot |
61
- | `stealth pdf <url>` | Save page as PDF |
62
- | `stealth search <engine> <query>` | Search the web |
63
- | `stealth extract <url>` | Extract structured data |
64
- | `stealth crawl <url>` | Recursive crawling |
65
- | `stealth interactive` | Interactive REPL |
66
- | `stealth batch <file>` | Batch process URLs from file |
67
- | `stealth monitor <url>` | Monitor page for changes |
68
- | `stealth fingerprint` | Show browser fingerprint info |
69
-
70
- ### Management
67
+ | `stealth browse <url>` | Visit URL, print page content (text/json/snapshot) |
68
+ | `stealth screenshot <url>` | Take a screenshot (PNG/JPEG, full page, custom size) |
69
+ | `stealth search <engine> <query>` | Search with anti-detection (14 engines) |
70
+ | `stealth extract <url>` | Extract links, images, meta, headings, CSS selectors |
71
+ | `stealth crawl <url>` | Recursive crawling with depth/filter/delay control |
72
+ | `stealth interactive` | Interactive REPL with 20+ browsing commands |
73
+ | `stealth pdf <url>` | Save page as PDF / full-page screenshot |
74
+ | `stealth batch <file>` | Batch process URLs from a file |
75
+ | `stealth monitor <url>` | Watch a page for changes (price drops, stock alerts) |
76
+ | `stealth fingerprint` | Check browser fingerprint & anti-detection status |
77
+ | `stealth serve` | Start HTTP API server for external integrations |
78
+
79
+ ### Management (5 commands)
71
80
 
72
81
  | Command | Description |
73
82
  |---------|-------------|
74
- | `stealth daemon start` | Start background browser |
75
- | `stealth daemon stop` | Stop background browser |
76
- | `stealth daemon status` | Show daemon status |
77
- | `stealth profile create <name>` | Create browser identity |
78
- | `stealth profile list` | List all profiles |
79
- | `stealth proxy add <url>` | Add proxy to pool |
80
- | `stealth proxy list` | List proxies |
81
- | `stealth proxy test` | Test proxy connectivity |
82
- | `stealth config set <key> <val>` | Set default config |
83
- | `stealth mcp` | Start MCP server for AI agents |
83
+ | `stealth daemon start/stop/status` | Background browser for instant startup (~1s vs ~6s) |
84
+ | `stealth profile create/list/delete` | Persistent browser identities (8 presets + random) |
85
+ | `stealth proxy add/list/test` | Proxy pool with rotation and health checking |
86
+ | `stealth config set/get/list/reset` | Global defaults (~/.stealth/config.json) |
87
+ | `stealth mcp` | MCP server for Claude Desktop / Cursor |
84
88
 
85
89
  ---
86
90
 
87
- ### `stealth browse <url>`
91
+ ## Usage
92
+
93
+ ### Browse
88
94
 
89
95
  ```bash
90
- stealth browse https://example.com # Text content
91
- stealth browse https://example.com -f json # JSON output
96
+ stealth browse https://example.com # Text output
97
+ stealth browse https://example.com -f json # JSON with metadata
92
98
  stealth browse https://example.com -f snapshot # Accessibility tree
99
+ stealth browse https://example.com --humanize # Human behavior simulation
100
+ stealth browse https://example.com --profile us-desktop # Use saved identity
93
101
  stealth browse https://example.com --proxy http://proxy:8080
94
- stealth browse https://example.com --cookies cookies.txt
95
- stealth browse https://example.com --profile us-desktop # Use saved profile
96
- stealth browse https://example.com --humanize # Human behavior
97
102
  ```
98
103
 
99
- ### `stealth screenshot <url>`
104
+ ### Screenshot
100
105
 
101
106
  ```bash
102
- stealth screenshot https://example.com # screenshot.png
103
- stealth screenshot https://example.com -o page.jpg # JPEG output
104
- stealth screenshot https://example.com --full # Full page
107
+ stealth screenshot https://example.com -o page.png
108
+ stealth screenshot https://example.com --full # Full page
105
109
  stealth screenshot https://example.com --width 1920 --height 1080
106
110
  ```
107
111
 
108
- ### `stealth search <engine> <query>`
112
+ ### Search
109
113
 
110
- **Supported engines:** google, bing, duckduckgo, youtube, github, stackoverflow, npmjs, amazon, reddit, wikipedia, twitter, linkedin, tiktok, yelp
114
+ 14 supported engines with structured result extraction.
115
+
116
+ Google uses a special anti-detection flow: visits homepage → types query → presses Enter (not direct URL).
111
117
 
112
118
  ```bash
113
- stealth search google "web scraping tools" -f json
114
- stealth search github "camoufox" --max 20
115
- stealth search duckduckgo "privacy browser" -f markdown
119
+ stealth search google "web scraping tools" -f json # Auto-humanized
120
+ stealth search google "query" -f json --warmup # Extra: visit random site first
121
+ stealth search duckduckgo "privacy browser" -f json
122
+ stealth search bing "anti-detect browser" -f json
123
+ stealth search youtube "tutorial" -f json # Video metadata
124
+ stealth search github "camoufox" -f json # Repo results
125
+ stealth search amazon "mechanical keyboard" -f json
116
126
  ```
117
127
 
118
- ### `stealth extract <url>`
128
+ **All 14 engines:** google, bing, duckduckgo, youtube, github, amazon, reddit, wikipedia, twitter, linkedin, tiktok, stackoverflow, npmjs, yelp
129
+
130
+ ### Extract
119
131
 
120
132
  ```bash
121
133
  stealth extract https://example.com --links # All links
122
134
  stealth extract https://example.com --images # All images
123
- stealth extract https://example.com --meta # Meta & OG tags
135
+ stealth extract https://example.com --meta # Title, description, OG tags
124
136
  stealth extract https://example.com --headers # h1-h6 headings
125
137
  stealth extract https://example.com -s ".price" --all # CSS selector
126
- stealth extract https://example.com -s "a" -a "href" # Attributes
138
+ stealth extract https://example.com -s "a" -a "href" --all # Attributes
127
139
  ```
128
140
 
129
- ### `stealth crawl <url>`
141
+ ### Crawl
130
142
 
131
143
  ```bash
132
- stealth crawl https://example.com -d 2 -l 50 # Depth 2, max 50
133
- stealth crawl https://example.com --delay 2000 # 2s between pages
144
+ stealth crawl https://example.com -d 2 -l 50 # Depth 2, max 50 pages
145
+ stealth crawl https://example.com -o results.jsonl # Save to file
134
146
  stealth crawl https://example.com --include "blog" # URL regex filter
135
147
  stealth crawl https://example.com --exclude "login|admin"
136
- stealth crawl https://example.com -o results.jsonl # Save to file
148
+ stealth crawl https://example.com --delay 2000 --humanize # Human-like crawling
149
+ stealth crawl https://example.com --proxy-rotate # Rotate through proxy pool
150
+ ```
151
+
152
+ ### Monitor
153
+
154
+ Watch pages for changes — ideal for price tracking, stock alerts, content monitoring.
155
+
156
+ ```bash
157
+ stealth monitor https://shop.com/item -s ".price" -i 60 # Check price every 60s
158
+ stealth monitor https://shop.com/item --contains "In Stock"
159
+ stealth monitor https://example.com --not-contains "Sold Out"
160
+ stealth monitor https://example.com --json -n 10 # JSON output, 10 checks max
137
161
  ```
138
162
 
139
- ### `stealth interactive`
163
+ ### Batch
140
164
 
141
- Interactive REPL for manual browsing.
165
+ ```bash
166
+ echo "https://example.com
167
+ https://github.com
168
+ https://httpbin.org/ip" > urls.txt
169
+
170
+ stealth batch urls.txt -c browse --skip-errors # Browse all
171
+ stealth batch urls.txt -c screenshot -o ./screenshots/ # Screenshot all
172
+ stealth batch urls.txt -c extract -s "h1" # Extract from all
173
+ ```
174
+
175
+ ### Fingerprint
142
176
 
143
177
  ```bash
144
- stealth interactive # Start empty
145
- stealth interactive --url https://example.com # Start with a page
146
- stealth interactive --no-headless # Show browser window
178
+ stealth fingerprint # Show current browser fingerprint
179
+ stealth fingerprint --check # Run anti-detection tests (CreepJS, WebDriver)
180
+ stealth fingerprint --compare 3 # Launch 3 times, compare if fingerprints vary
181
+ stealth fingerprint --profile jp-desktop --json
147
182
  ```
148
183
 
149
- REPL commands: `goto`, `search`, `click`, `type`, `snapshot`, `text`, `links`, `screenshot`, `back`, `forward`, `eval`, `help`, `exit`
184
+ ### Interactive REPL
185
+
186
+ ```bash
187
+ stealth interactive --url https://example.com
188
+
189
+ stealth> goto https://google.com
190
+ stealth> search duckduckgo hello world
191
+ stealth> click "button.submit"
192
+ stealth> hclick "a.link" # Human-like click (mouse movement)
193
+ stealth> type "input[name=q]" hello
194
+ stealth> htype "input[name=q]" hello # Human-like typing (variable speed)
195
+ stealth> scroll down 3
196
+ stealth> text # Page text
197
+ stealth> snapshot # Accessibility tree
198
+ stealth> links # All links
199
+ stealth> screenshot page.png
200
+ stealth> eval document.title # Run JavaScript
201
+ stealth> back / forward / reload
202
+ stealth> exit
203
+ ```
204
+
205
+ ---
150
206
 
151
207
  ## Daemon Mode
152
208
 
153
- Keep a browser alive in the background for instant reuse. No cold start.
209
+ Keep a browser alive in the background. Commands reuse it instantly.
154
210
 
155
211
  ```bash
156
212
  stealth daemon start # Start background browser
157
- stealth browse https://example.com # Uses daemon automatically
213
+ stealth browse https://example.com # ~1.2s (vs ~6s cold start)
214
+ stealth browse https://other.com # ~1.2s
158
215
  stealth daemon status # Check status
159
- stealth daemon stop # Shut down
216
+ stealth daemon stop # Shut down (auto-stops after 5min idle)
160
217
  ```
161
218
 
162
- The daemon auto-shuts down after 5 minutes of idle time.
163
-
164
219
  ## Browser Profiles
165
220
 
166
- Create persistent browser identities with unique fingerprints, cookies, and proxy settings.
221
+ Persistent browser identities with unique fingerprints. Cookies auto-save between sessions.
167
222
 
168
223
  ```bash
169
- # Create from preset
170
- stealth profile create mybot --preset us-desktop
171
- stealth profile create jpbot --preset jp-desktop
224
+ stealth profile create work --preset us-desktop
225
+ stealth profile create japan --preset jp-desktop
226
+ stealth profile create rand1 --random # Random fingerprint
227
+ stealth profile list
228
+ stealth profile presets # Show all 8 presets
172
229
 
173
- # Create with random fingerprint
174
- stealth profile create random1 --random
230
+ # Use profile fingerprint + cookies auto-applied
231
+ stealth browse https://example.com --profile work
232
+ # → User-Agent: Windows, locale: en-US, timezone: America/New_York
233
+ ```
175
234
 
176
- # Use profile
177
- stealth browse https://example.com --profile mybot
235
+ **Presets:** `us-desktop` · `us-laptop` · `uk-desktop` · `de-desktop` · `jp-desktop` · `cn-desktop` · `mobile-ios` · `mobile-android`
178
236
 
179
- # Cookies are auto-saved between sessions
180
- stealth profile list
181
- ```
237
+ ## Session Persistence
238
+
239
+ Save and restore browsing sessions (cookies + last URL + history).
240
+
241
+ ```bash
242
+ stealth browse https://example.com --session my-task --profile work
243
+ # → Cookies saved, URL remembered
182
244
 
183
- **Available presets:** `us-desktop`, `us-laptop`, `uk-desktop`, `de-desktop`, `jp-desktop`, `cn-desktop`, `mobile-ios`, `mobile-android`
245
+ # Later: auto-restores cookies and navigates to last URL
246
+ stealth browse https://other.com --session my-task
247
+ ```
184
248
 
185
249
  ## Proxy Support
186
250
 
@@ -188,87 +252,93 @@ stealth profile list
188
252
  # Single proxy
189
253
  stealth browse https://example.com --proxy http://user:pass@host:port
190
254
 
191
- # Proxy pool rotation
192
- stealth proxy add http://proxy1:8080
193
- stealth proxy add http://proxy2:8080
194
- stealth proxy add socks5://proxy3:1080
255
+ # Proxy pool with rotation
256
+ stealth proxy add http://proxy1:8080 --label us --region US
257
+ stealth proxy add http://proxy2:8080 --label eu --region EU
258
+ stealth proxy test # Test all proxies
259
+ stealth proxy list # List with status
195
260
  stealth browse https://example.com --proxy-rotate # Auto-rotate
196
-
197
- # Test proxies
198
- stealth proxy test
261
+ stealth crawl https://example.com --proxy-rotate # Rotate per page
199
262
  ```
200
263
 
201
- When a proxy is used, Camoufox automatically matches locale, timezone, and geolocation to the proxy's exit IP via GeoIP.
264
+ GeoIP: When using a proxy, Camoufox auto-matches locale, timezone, and geolocation to the proxy's exit IP.
202
265
 
203
- ## MCP Server (AI Agent Integration)
266
+ ## Pipe-Friendly
204
267
 
205
- Use stealth-cli as a tool in Claude Desktop, Cursor, or any MCP-compatible AI agent.
268
+ stdout = data, stderr = status. Perfect for Unix pipes:
206
269
 
207
270
  ```bash
208
- stealth mcp # Start MCP server (stdio)
209
- ```
210
-
211
- Add to `claude_desktop_config.json`:
212
-
213
- ```json
214
- {
215
- "mcpServers": {
216
- "stealth": {
217
- "command": "node",
218
- "args": ["/path/to/stealth-cli/bin/stealth.js", "mcp"]
219
- }
220
- }
221
- }
271
+ stealth browse https://api.example.com -f json | jq '.title'
272
+ stealth search google "query" -f json | jq '.results[].url'
273
+ stealth extract https://example.com --links -f json | jq '.data[].url'
274
+ stealth crawl https://example.com -o - | wc -l
222
275
  ```
223
276
 
224
- **Available MCP tools:** `stealth_browse`, `stealth_screenshot`, `stealth_search`, `stealth_extract`, `stealth_click`, `stealth_type`, `stealth_evaluate`
277
+ ## HTTP API Server
225
278
 
226
- ## Pipe-Friendly
279
+ ```bash
280
+ stealth serve --port 9377
227
281
 
228
- stdout = data, stderr = status messages. Perfect for piping:
282
+ # Create tab + browse
283
+ curl -X POST localhost:9377/tabs -H 'Content-Type: application/json' \
284
+ -d '{"url":"https://example.com"}'
229
285
 
230
- ```bash
231
- # Parse with jq
232
- stealth browse https://api.example.com -f json | jq '.title'
286
+ # Get page text
287
+ curl localhost:9377/tabs/tab-1/text
233
288
 
234
- # Chain commands
235
- stealth extract https://example.com --links -f json \
236
- | jq '.[].url' \
237
- | xargs -I {} stealth screenshot {} -o {}.png
289
+ # Screenshot (base64)
290
+ curl localhost:9377/tabs/tab-1/screenshot
238
291
 
239
- # Batch from file
240
- cat urls.txt | xargs -I {} stealth browse {} -f json > output.jsonl
292
+ # All endpoints: /health, /tabs, /tabs/:id/navigate, /tabs/:id/snapshot,
293
+ # /tabs/:id/text, /tabs/:id/screenshot, /tabs/:id/click, /tabs/:id/type,
294
+ # /tabs/:id/evaluate, /tabs/:id/close, /shutdown
241
295
  ```
242
296
 
243
297
  ## As a Library (SDK)
244
298
 
245
299
  ```javascript
246
- import {
247
- launchBrowser, closeBrowser, navigate,
248
- getTextContent, takeScreenshot
249
- } from 'stealth-cli';
300
+ import { launchBrowser, closeBrowser, navigate, getTextContent } from 'stealth-cli';
250
301
 
251
302
  const handle = await launchBrowser({
252
- headless: true,
253
- proxy: 'http://proxy:8080',
254
303
  profile: 'us-desktop',
255
304
  humanize: true,
256
305
  });
257
306
 
258
307
  await navigate(handle, 'https://example.com');
259
308
  const text = await getTextContent(handle);
260
- const screenshot = await takeScreenshot(handle, { path: 'page.png' });
309
+ console.log(text);
261
310
 
262
311
  await closeBrowser(handle);
263
312
  ```
264
313
 
314
+ ## Configuration
315
+
316
+ Set global defaults so you don't repeat flags:
317
+
318
+ ```bash
319
+ stealth config set locale zh-CN # Default Chinese locale
320
+ stealth config set humanize true # Always simulate human behavior
321
+ stealth config set retries 3 # Default 3 retries
322
+ stealth config set format json # Default JSON output
323
+ stealth config list # Show all settings
324
+ stealth config reset # Reset to defaults
325
+ ```
326
+
327
+ Stored at `~/.stealth/config.json`.
328
+
265
329
  ## How Anti-Detection Works
266
330
 
267
- stealth-cli uses [Camoufox](https://github.com/daijro/camoufox), a Firefox fork that patches fingerprint generation at the **C++ level**:
331
+ ```
332
+ stealth-cli
333
+ └── camoufox-js (npm)
334
+ └── Camoufox (C++ Firefox fork)
335
+ └── Fingerprint spoofing at the native level
336
+ ```
268
337
 
269
338
  | Fingerprint Vector | Approach |
270
339
  |---|---|
271
340
  | `navigator.hardwareConcurrency` | Spoofed in C++ |
341
+ | `navigator.webdriver` | Always `false` |
272
342
  | WebGL renderer / vendor | Spoofed in C++ |
273
343
  | AudioContext fingerprint | Spoofed in C++ |
274
344
  | Canvas fingerprint | Spoofed in C++ |
@@ -276,19 +346,37 @@ stealth-cli uses [Camoufox](https://github.com/daijro/camoufox), a Firefox fork
276
346
  | WebRTC leak | Built-in protection |
277
347
  | TLS fingerprint | Firefox native (not Chromium) |
278
348
 
279
- **No JavaScript shims. No detectable wrappers.** The browser reports spoofed values natively.
349
+ No JavaScript shims. No detectable wrappers. The browser reports spoofed values natively.
280
350
 
281
- ## Configuration
351
+ ## Common Options
282
352
 
283
- ```bash
284
- stealth config set headless false # Show browser window by default
285
- stealth config set proxy http://p:8080 # Default proxy
286
- stealth config set humanize true # Always simulate human behavior
287
- stealth config set format json # Default output format
288
- stealth config set retries 3 # Default retry count
289
- ```
353
+ Available on all core commands:
354
+
355
+ | Option | Description |
356
+ |--------|-------------|
357
+ | `--proxy <url>` | Use proxy server |
358
+ | `--proxy-rotate` | Rotate through proxy pool |
359
+ | `--profile <name>` | Use saved browser identity |
360
+ | `--session <name>` | Persist/restore browsing session |
361
+ | `--cookies <file>` | Import Netscape-format cookie file |
362
+ | `--humanize` | Simulate human behavior |
363
+ | `--retries <n>` | Max retries on failure (default: 2) |
364
+ | `--no-headless` | Show browser window |
365
+ | `-f, --format` | Output format: text, json, jsonl, snapshot, markdown |
290
366
 
291
- Config stored at `~/.stealth/config.json`.
367
+ ## Project Stats
368
+
369
+ ```
370
+ Version: 0.5.0
371
+ Commands: 16
372
+ Tests: 59 passing
373
+ Source: 5,700+ lines
374
+ Files: 44
375
+ Extractors: 6 (Google, Bing, DuckDuckGo, YouTube, GitHub, generic)
376
+ Presets: 8 browser profiles
377
+ Engine: Camoufox (C++ Firefox fork)
378
+ License: MIT
379
+ ```
292
380
 
293
381
  ## License
294
382
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stealth-cli",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Anti-detection browser CLI powered by Camoufox. Browse, search, scrape, and crawl the web with C++ level fingerprint spoofing.",
5
5
  "type": "module",
6
6
  "bin": {