@pyrokine/mcp-chrome 1.0.0 → 1.3.0

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 (115) hide show
  1. package/README.md +236 -96
  2. package/dist/anti-detection/behavior.d.ts +0 -8
  3. package/dist/anti-detection/behavior.d.ts.map +1 -1
  4. package/dist/anti-detection/behavior.js +0 -16
  5. package/dist/anti-detection/behavior.js.map +1 -1
  6. package/dist/cdp/client.d.ts +10 -2
  7. package/dist/cdp/client.d.ts.map +1 -1
  8. package/dist/cdp/client.js +76 -61
  9. package/dist/cdp/client.js.map +1 -1
  10. package/dist/cdp/launcher.d.ts +1 -8
  11. package/dist/cdp/launcher.d.ts.map +1 -1
  12. package/dist/cdp/launcher.js +18 -24
  13. package/dist/cdp/launcher.js.map +1 -1
  14. package/dist/core/auto-wait.d.ts +8 -1
  15. package/dist/core/auto-wait.d.ts.map +1 -1
  16. package/dist/core/auto-wait.js +15 -5
  17. package/dist/core/auto-wait.js.map +1 -1
  18. package/dist/core/errors.d.ts +11 -13
  19. package/dist/core/errors.d.ts.map +1 -1
  20. package/dist/core/errors.js +50 -31
  21. package/dist/core/errors.js.map +1 -1
  22. package/dist/core/index.d.ts +1 -0
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +1 -0
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/locator.d.ts +17 -6
  27. package/dist/core/locator.d.ts.map +1 -1
  28. package/dist/core/locator.js +137 -28
  29. package/dist/core/locator.js.map +1 -1
  30. package/dist/core/retry.d.ts.map +1 -1
  31. package/dist/core/retry.js +1 -1
  32. package/dist/core/retry.js.map +1 -1
  33. package/dist/core/session.d.ts +71 -16
  34. package/dist/core/session.d.ts.map +1 -1
  35. package/dist/core/session.js +365 -124
  36. package/dist/core/session.js.map +1 -1
  37. package/dist/core/types.d.ts +15 -0
  38. package/dist/core/types.d.ts.map +1 -1
  39. package/dist/core/types.js +11 -2
  40. package/dist/core/types.js.map +1 -1
  41. package/dist/core/unified-session.d.ts +418 -0
  42. package/dist/core/unified-session.d.ts.map +1 -0
  43. package/dist/core/unified-session.js +1044 -0
  44. package/dist/core/unified-session.js.map +1 -0
  45. package/dist/extension/bridge.d.ts +203 -0
  46. package/dist/extension/bridge.d.ts.map +1 -0
  47. package/dist/extension/bridge.js +375 -0
  48. package/dist/extension/bridge.js.map +1 -0
  49. package/dist/extension/http-server.d.ts +60 -0
  50. package/dist/extension/http-server.d.ts.map +1 -0
  51. package/dist/extension/http-server.js +319 -0
  52. package/dist/extension/http-server.js.map +1 -0
  53. package/dist/extension/index.d.ts +7 -0
  54. package/dist/extension/index.d.ts.map +1 -0
  55. package/dist/extension/index.js +6 -0
  56. package/dist/extension/index.js.map +1 -0
  57. package/dist/extension/native-host-installer.d.ts +21 -0
  58. package/dist/extension/native-host-installer.d.ts.map +1 -0
  59. package/dist/extension/native-host-installer.js +147 -0
  60. package/dist/extension/native-host-installer.js.map +1 -0
  61. package/dist/extension/socket-server.d.ts +32 -0
  62. package/dist/extension/socket-server.d.ts.map +1 -0
  63. package/dist/extension/socket-server.js +177 -0
  64. package/dist/extension/socket-server.js.map +1 -0
  65. package/dist/extension/ws-server.d.ts +40 -0
  66. package/dist/extension/ws-server.d.ts.map +1 -0
  67. package/dist/extension/ws-server.js +246 -0
  68. package/dist/extension/ws-server.js.map +1 -0
  69. package/dist/index.js +16 -67
  70. package/dist/index.js.map +1 -1
  71. package/dist/native-host/index.js +280 -0
  72. package/dist/native-host/mcp-chrome-host +2 -0
  73. package/dist/tools/browse.d.ts +3 -76
  74. package/dist/tools/browse.d.ts.map +1 -1
  75. package/dist/tools/browse.js +193 -237
  76. package/dist/tools/browse.js.map +1 -1
  77. package/dist/tools/cookies.d.ts +6 -66
  78. package/dist/tools/cookies.d.ts.map +1 -1
  79. package/dist/tools/cookies.js +129 -125
  80. package/dist/tools/cookies.js.map +1 -1
  81. package/dist/tools/evaluate.d.ts +3 -37
  82. package/dist/tools/evaluate.d.ts.map +1 -1
  83. package/dist/tools/evaluate.js +68 -55
  84. package/dist/tools/evaluate.js.map +1 -1
  85. package/dist/tools/extract.d.ts +3 -200
  86. package/dist/tools/extract.d.ts.map +1 -1
  87. package/dist/tools/extract.js +287 -238
  88. package/dist/tools/extract.js.map +1 -1
  89. package/dist/tools/index.d.ts +9 -9
  90. package/dist/tools/index.d.ts.map +1 -1
  91. package/dist/tools/index.js +9 -9
  92. package/dist/tools/index.js.map +1 -1
  93. package/dist/tools/input.d.ts +3 -228
  94. package/dist/tools/input.d.ts.map +1 -1
  95. package/dist/tools/input.js +190 -129
  96. package/dist/tools/input.js.map +1 -1
  97. package/dist/tools/logs.d.ts +3 -47
  98. package/dist/tools/logs.d.ts.map +1 -1
  99. package/dist/tools/logs.js +100 -127
  100. package/dist/tools/logs.js.map +1 -1
  101. package/dist/tools/manage.d.ts +6 -51
  102. package/dist/tools/manage.d.ts.map +1 -1
  103. package/dist/tools/manage.js +284 -209
  104. package/dist/tools/manage.js.map +1 -1
  105. package/dist/tools/schema.d.ts +75 -168
  106. package/dist/tools/schema.d.ts.map +1 -1
  107. package/dist/tools/schema.js +276 -126
  108. package/dist/tools/schema.js.map +1 -1
  109. package/dist/tools/wait.d.ts +3 -191
  110. package/dist/tools/wait.d.ts.map +1 -1
  111. package/dist/tools/wait.js +298 -155
  112. package/dist/tools/wait.js.map +1 -1
  113. package/package.json +4 -5
  114. package/scripts/start-chrome-headless.sh +0 -37
  115. package/scripts/start-chrome.sh +0 -41
package/README.md CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  English | [中文](README_zh.md)
4
4
 
5
- Chrome browser automation MCP Server using Chrome DevTools Protocol (CDP).
5
+ Chrome browser automation MCP Server with dual-mode architecture: **Extension mode** (recommended) controls your
6
+ existing browser, **CDP mode** (fallback) launches a dedicated instance.
6
7
 
7
8
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
8
9
  [![Node](https://img.shields.io/badge/node-%3E%3D18-green.svg)](https://nodejs.org/)
@@ -10,12 +11,18 @@ Chrome browser automation MCP Server using Chrome DevTools Protocol (CDP).
10
11
 
11
12
  ## Features
12
13
 
13
- - **Native CDP**: Direct Chrome DevTools Protocol communication, no Puppeteer/Playwright dependency
14
- - **8 Unified Tools**: Reduced from 30+ granular tools to 8 action-based tools
15
- - **Semantic Targeting**: 10 ways to locate elements (role, text, label, css, xpath, coordinates, etc.)
16
- - **Auto-Wait**: Built-in clickability and input-ready detection
17
- - **Structured Errors**: Every error includes code, message, suggestion, and context
14
+ - **Dual Mode**: Extension mode shares your login sessions; CDP mode for headless/isolated scenarios
15
+ - **8 Unified Tools**: Action-based design covering browse, input, extract, wait, evaluate, manage, cookies, logs
16
+ - **Multi-Tab Parallel**: `tabId` parameter enables operations on any tab without switching focus
17
+ - **iframe Penetration**: `frame` parameter targets elements inside iframes (CSS selector or index, Extension mode)
18
+ - **Semantic Targeting**: 11 ways to locate elements (role, text, label, css, css+text combo, xpath, coordinates, etc.)
19
+ - **Auto-Wait**: Built-in clickability and input-ready detection with deadline-based timeout budget
20
+ - **Dual Input Mode**: `precise` (debugger API, bypasses CSP) or `stealth` (JS injection, no debug banner)
21
+ - **Smart Output**: Bare `return` auto-wrapped in IIFE; large results (>100KB) auto-saved to file; `output` writes raw
22
+ text for strings
23
+ - **Multi-Server**: Extension auto-discovers and connects to multiple MCP Server instances simultaneously
18
24
  - **Anti-Detection**: Optional fingerprint masking and behavior simulation
25
+ - **Structured Errors**: Every error includes code, message, suggestion, and context
19
26
 
20
27
  ## Compatible Clients
21
28
 
@@ -29,6 +36,12 @@ Chrome browser automation MCP Server using Chrome DevTools Protocol (CDP).
29
36
 
30
37
  ## Installation
31
38
 
39
+ ```bash
40
+ npm install -g @pyrokine/mcp-chrome
41
+ ```
42
+
43
+ Or from source:
44
+
32
45
  ```bash
33
46
  git clone https://github.com/Pyrokine/claude-mcp-tools.git
34
47
  cd claude-mcp-tools/mcp-chrome
@@ -38,30 +51,26 @@ npm run build
38
51
 
39
52
  ## Quick Start
40
53
 
41
- ### 1. Start Chrome with Remote Debugging
42
-
43
- ```bash
44
- # With UI
45
- ./scripts/start-chrome.sh
54
+ ### Mode 1: Extension Mode (Recommended)
46
55
 
47
- # Headless mode
48
- ./scripts/start-chrome-headless.sh
56
+ Extension mode controls your existing Chrome — shares login sessions, cookies, and browsing context.
49
57
 
50
- # Or manually:
51
- google-chrome --remote-debugging-port=9222
52
- ```
58
+ **Step 1: Install Chrome Extension**
53
59
 
54
- ### 2. Configure MCP Client
60
+ 1. Open `chrome://extensions/` in Chrome
61
+ 2. Enable "Developer mode" (top-right toggle)
62
+ 3. Click "Load unpacked" → select `mcp-chrome/extension/dist/` directory
63
+ 4. The MCP Chrome icon appears in the toolbar
55
64
 
56
- #### Claude Code
65
+ **Step 2: Configure MCP Client**
57
66
 
58
67
  ```bash
68
+ # Claude Code
59
69
  claude mcp add chrome -- node /path/to/mcp-chrome/dist/index.js
60
70
  ```
61
71
 
62
- #### Claude Desktop / Other Clients
63
-
64
72
  ```json
73
+ // Claude Desktop / Other Clients
65
74
  {
66
75
  "mcpServers": {
67
76
  "chrome": {
@@ -72,29 +81,53 @@ claude mcp add chrome -- node /path/to/mcp-chrome/dist/index.js
72
81
  }
73
82
  ```
74
83
 
84
+ **Step 3: Connect**
85
+
86
+ The Extension auto-connects to the MCP Server via HTTP/WebSocket (port 19222-19299). Click the toolbar icon to verify
87
+ connection status.
88
+
89
+ ```
90
+ browse(action="list") // List all tabs
91
+ browse(action="open", url="https://example.com")
92
+ extract(type="screenshot")
93
+ ```
94
+
95
+ ### Mode 2: CDP Mode (Fallback)
96
+
97
+ CDP mode launches or connects to a dedicated Chrome instance. Used when the Extension is not installed, or for
98
+ headless/isolated scenarios.
99
+
100
+ ```bash
101
+ # Start Chrome with remote debugging
102
+ google-chrome --remote-debugging-port=9222
103
+ ```
104
+
105
+ ```
106
+ browse(action="connect", port=9222)
107
+ browse(action="open", url="https://example.com")
108
+ ```
109
+
110
+ > When the Extension is connected, all tools use Extension mode automatically. CDP mode activates only when the
111
+ > Extension is unavailable.
112
+
75
113
  ## Available Tools (8 Tools)
76
114
 
77
115
  ### browse - Browser Management & Navigation
78
116
 
79
- | Action | Description |
80
- |-----------|--------------------------------------------------------------|
81
- | `launch` | Launch new Chrome instance |
82
- | `connect` | Connect to running Chrome (requires --remote-debugging-port) |
83
- | `list` | List all available pages/targets |
84
- | `attach` | Attach to a specific page |
85
- | `open` | Navigate to URL |
86
- | `back` | Go back in history |
87
- | `forward` | Go forward in history |
88
- | `refresh` | Reload page |
89
- | `close` | Close browser |
90
-
91
- **Anti-detection modes** (for `launch`/`connect`):
92
-
93
- | Mode | Description |
94
- |--------------|-----------------------------------------------------------------------|
95
- | `off` | Disabled - pure mode for testing/CI |
96
- | `safe` | Minimal changes (default) - removes webdriver flag, cleans CDP traces |
97
- | `aggressive` | Full masking - plugins, WebGL, languages (may have side effects) |
117
+ | Action | Description |
118
+ |-----------|---------------------------------------|
119
+ | `launch` | Launch new Chrome instance (CDP mode) |
120
+ | `connect` | Connect to running Chrome (CDP mode) |
121
+ | `list` | List all pages/tabs |
122
+ | `attach` | Attach to a specific page/tab |
123
+ | `open` | Navigate to URL |
124
+ | `back` | Go back in history |
125
+ | `forward` | Go forward in history |
126
+ | `refresh` | Reload page |
127
+ | `close` | Close browser connection |
128
+
129
+ Extension-specific: `list` returns `managed` field (whether tab is in MCP Chrome group) and `isActive` field (whether
130
+ it's the current operation target). `open` auto-creates tab group (cyan color).
98
131
 
99
132
  ### input - Keyboard & Mouse Input
100
133
 
@@ -110,6 +143,9 @@ Event sequence model supporting arbitrary combinations:
110
143
  | `type` | Type text |
111
144
  | `wait` | Pause between events |
112
145
 
146
+ Parameters: `humanize` enables Bézier curve movement and random delays. `tabId` targets a specific tab. `frame` targets
147
+ an iframe (CSS selector or index). Both Extension mode only.
148
+
113
149
  ### extract - Content Extraction
114
150
 
115
151
  | Type | Description |
@@ -120,6 +156,9 @@ Event sequence model supporting arbitrary combinations:
120
156
  | `screenshot` | Take screenshot |
121
157
  | `state` | Get page state (URL, title, interactive elements) |
122
158
 
159
+ Parameters: `output` saves result to file. `tabId` targets a specific tab. `frame` targets an iframe. Both Extension
160
+ mode only.
161
+
123
162
  ### wait - Wait for Conditions
124
163
 
125
164
  | For | Description |
@@ -129,16 +168,37 @@ Event sequence model supporting arbitrary combinations:
129
168
  | `time` | Fixed delay |
130
169
  | `idle` | Wait for network idle |
131
170
 
171
+ Parameters: `tabId` targets a specific tab. `frame` targets an iframe. Both Extension mode only.
172
+
173
+ ### evaluate - JavaScript Execution
174
+
175
+ Execute JavaScript in page context.
176
+
177
+ | Parameter | Description |
178
+ |-----------|---------------------------------------------------------------------------|
179
+ | `script` | JavaScript code (required). Bare `return` statements auto-wrapped in IIFE |
180
+ | `args` | Arguments passed to script (script must be a function expression) |
181
+ | `mode` | `precise` (default, debugger API) or `stealth` (JS injection) |
182
+ | `output` | Save result to file (strings written as raw text, others as JSON) |
183
+ | `tabId` | Target a specific tab (Extension mode) |
184
+ | `frame` | Target an iframe by CSS selector or index (Extension mode) |
185
+ | `timeout` | End-to-end budget (ms) |
186
+
187
+ Results >100KB are auto-saved to `/tmp/` with a structured hint returned.
188
+
132
189
  ### manage - Page & Environment Management
133
190
 
134
- | Action | Description |
135
- |--------------|---------------------------------------|
136
- | `newPage` | Create new page/tab |
137
- | `closePage` | Close page |
138
- | `clearCache` | Clear cache/cookies/storage |
139
- | `viewport` | Set viewport size |
140
- | `userAgent` | Set User-Agent |
141
- | `emulate` | Device emulation (iPhone, iPad, etc.) |
191
+ | Action | Description |
192
+ |--------------|----------------------------------------------------------|
193
+ | `newPage` | Create new page/tab |
194
+ | `closePage` | Close page |
195
+ | `clearCache` | Clear cache/cookies/storage |
196
+ | `viewport` | Set viewport size |
197
+ | `userAgent` | Set User-Agent |
198
+ | `emulate` | Device emulation (iPhone, iPad, etc.) |
199
+ | `inputMode` | Query or set input mode (`precise` / `stealth`) |
200
+ | `stealth` | Inject anti-detection scripts |
201
+ | `cdp` | Send raw CDP command (advanced, e.g. `Runtime.evaluate`) |
142
202
 
143
203
  ### logs - Browser Logs
144
204
 
@@ -147,6 +207,9 @@ Event sequence model supporting arbitrary combinations:
147
207
  | `console` | Console logs (with level filter) |
148
208
  | `network` | Network request logs (with URL filter) |
149
209
 
210
+ Parameters: `output` saves result to file. `tabId` targets a specific tab (Extension mode). `frame` is not applicable
211
+ for logs.
212
+
150
213
  ### cookies - Cookie Management
151
214
 
152
215
  | Action | Description |
@@ -156,52 +219,90 @@ Event sequence model supporting arbitrary combinations:
156
219
  | `delete` | Delete cookie |
157
220
  | `clear` | Clear all cookies |
158
221
 
159
- ### evaluate - JavaScript Execution
160
-
161
- Execute arbitrary JavaScript in page context.
162
-
163
222
  ## Target: Unified Element Locator
164
223
 
165
224
  All tools use a unified `Target` type for element location:
166
225
 
167
226
  ```typescript
168
227
  // By accessibility (recommended - most stable)
169
- { role: "button", name: "Submit" }
228
+ {
229
+ role: "button", name
230
+ :
231
+ "Submit"
232
+ }
170
233
 
171
234
  // By text content
172
- { text: "Click here", exact: true }
235
+ {
236
+ text: "Click here", exact
237
+ :
238
+ true
239
+ }
173
240
 
174
241
  // By form label
175
- { label: "Email" }
242
+ {
243
+ label: "Email"
244
+ }
176
245
 
177
246
  // By placeholder
178
- { placeholder: "Enter your name" }
247
+ {
248
+ placeholder: "Enter your name"
249
+ }
179
250
 
180
251
  // By title attribute
181
- { title: "Close dialog" }
252
+ {
253
+ title: "Close dialog"
254
+ }
182
255
 
183
256
  // By alt text (images)
184
- { alt: "Profile picture" }
257
+ {
258
+ alt: "Profile picture"
259
+ }
185
260
 
186
261
  // By test ID
187
- { testId: "submit-button" }
262
+ {
263
+ testId: "submit-button"
264
+ }
188
265
 
189
266
  // By CSS selector
190
- { css: "#login-form .submit-btn" }
267
+ {
268
+ css: "#login-form .submit-btn"
269
+ }
270
+
271
+ // Disambiguate multiple matches (0-based)
272
+ {
273
+ css: ".ant-select-input", nth
274
+ :
275
+ 1
276
+ }
277
+
278
+ // By CSS + text (filter by text content)
279
+ {
280
+ css: "button", text
281
+ :
282
+ "Submit", exact
283
+ :
284
+ true
285
+ }
191
286
 
192
287
  // By XPath
193
- { xpath: "//button[@type='submit']" }
288
+ {
289
+ xpath: "//button[@type='submit']"
290
+ }
194
291
 
195
292
  // By coordinates
196
- { x: 100, y: 200 }
293
+ {
294
+ x: 100, y
295
+ :
296
+ 200
297
+ }
197
298
  ```
198
299
 
199
300
  ## Usage Examples
200
301
 
201
- ### Basic: Connect and Navigate
302
+ ### Basic: List Tabs and Navigate
202
303
 
203
304
  ```
204
- browse(action="connect", port=9222)
305
+ browse(action="list")
205
306
  browse(action="open", url="https://example.com")
206
307
  extract(type="state")
207
308
  ```
@@ -225,15 +326,12 @@ input(events=[
225
326
  ])
226
327
  ```
227
328
 
228
- ### Complex: Ctrl+Click with Human-like Movement
329
+ ### Multi-Tab Operation (Extension Mode)
229
330
 
230
331
  ```
231
- input(events=[
232
- { type: "keydown", key: "Control" },
233
- { type: "mousedown", target: { css: ".item" }, button: "left" },
234
- { type: "mouseup" },
235
- { type: "keyup", key: "Control" }
236
- ], humanize=true)
332
+ // Operate on a specific tab without switching focus
333
+ extract(type="screenshot", tabId="12345")
334
+ evaluate(script="document.title", tabId="12345")
237
335
  ```
238
336
 
239
337
  ### Screenshot
@@ -242,8 +340,28 @@ input(events=[
242
340
  // Full page
243
341
  extract(type="screenshot", fullPage=true)
244
342
 
245
- // Specific element
246
- extract(type="screenshot", target={ css: "#chart" })
343
+ // JPEG with quality (smaller file)
344
+ extract(type="screenshot", format="jpeg", quality=80, output="/tmp/screenshot.jpg")
345
+
346
+ // Save to file
347
+ extract(type="screenshot", output="/tmp/screenshot.png")
348
+ ```
349
+
350
+ ### iframe Operations (Extension Mode)
351
+
352
+ ```
353
+ // Target iframe by CSS selector
354
+ evaluate(script="document.title", frame="iframe#main")
355
+
356
+ // Target iframe by index
357
+ extract(type="text", frame=0)
358
+
359
+ // Input inside iframe
360
+ input(events=[
361
+ { type: "mousedown", target: { label: "Username" } },
362
+ { type: "mouseup" },
363
+ { type: "type", text: "admin" }
364
+ ], frame="iframe.login-frame")
247
365
  ```
248
366
 
249
367
  ### Wait for Element
@@ -255,25 +373,32 @@ wait(for="element", target={ text: "Loading complete" }, state="visible")
255
373
  ## Architecture
256
374
 
257
375
  ```
258
- ┌─────────────────┐
259
- MCP Client
260
- (Claude, etc.)
261
- └────────┬────────┘
262
- │ stdio (JSON-RPC)
263
-
264
- ┌─────────────────┐
265
- MCP-Chrome
266
- (8 tools)
267
- │ ├─ core/ Session, Locator, AutoWait
268
- │ ├─ cdp/ │ Native CDP client
269
- └─ tools/ Tool implementations
270
- └────────┬────────┘
271
- │ WebSocket (CDP)
272
-
273
- ┌─────────────────┐
274
- Chrome Browser
275
- │ (port 9222) │
276
- └─────────────────┘
376
+ ┌───────────────────┐
377
+ MCP Client
378
+ (Claude, etc.)
379
+ └─────────┬─────────┘
380
+ │ stdio (JSON-RPC)
381
+
382
+ ┌───────────────────┐
383
+ MCP-Chrome
384
+ (8 tools)
385
+ │ ├─ core/ UnifiedSession, Locator, AutoWait
386
+ │ ├─ cdp/ │ Native CDP client
387
+ ├─ extension/ Extension bridge (HTTP + WebSocket)
388
+ │ └─ tools/ │ Tool implementations
389
+ └────┬─────────┬────┘
390
+
391
+ │ HTTP/WS │ WebSocket (CDP)
392
+
393
+ ▼ ▼
394
+ ┌──────────┐ ┌──────────────────┐
395
+ │ Extension│ │ Chrome (CDP) │
396
+ │ (19222+) │ │ (port 9222) │
397
+ │ │ │ Dedicated browser│
398
+ │ Controls │ └──────────────────┘
399
+ │ user's │
400
+ │ browser │
401
+ └──────────┘
277
402
  ```
278
403
 
279
404
  ## Project Structure
@@ -293,18 +418,29 @@ mcp-chrome/
293
418
  │ │ ├── evaluate.ts
294
419
  │ │ └── schema.ts # Shared JSON Schema (Target oneOf)
295
420
  │ ├── core/ # Core abstractions
296
- │ │ ├── session.ts # Session management
297
- │ │ ├── locator.ts # Element locator
421
+ │ │ ├── unified-session.ts # Dual-mode session (Extension + CDP)
422
+ │ │ ├── session.ts # CDP session management
423
+ │ │ ├── locator.ts # Element locator (deadline-based timeout)
298
424
  │ │ ├── auto-wait.ts # Auto-wait mechanism
299
425
  │ │ ├── retry.ts # Retry logic
300
426
  │ │ ├── types.ts # Type definitions
301
427
  │ │ └── errors.ts # Error types
428
+ │ ├── extension/ # Extension bridge
429
+ │ │ ├── bridge.ts # High-level Extension API
430
+ │ │ └── http-server.ts # HTTP + WebSocket server
302
431
  │ ├── cdp/ # CDP layer
303
432
  │ │ ├── client.ts # WebSocket CDP client
304
433
  │ │ └── launcher.ts # Chrome launcher
305
434
  │ └── anti-detection/ # Anti-detection (optional)
306
435
  │ ├── injection.ts
307
436
  │ └── behavior.ts
437
+ ├── extension/ # Chrome Extension (Manifest V3)
438
+ │ ├── manifest.json
439
+ │ ├── src/
440
+ │ │ ├── background/ # Service Worker
441
+ │ │ ├── content/ # Content scripts
442
+ │ │ └── popup/ # Popup UI
443
+ │ └── dist/ # Built extension (load this in Chrome)
308
444
  ├── scripts/
309
445
  │ ├── start-chrome.sh
310
446
  │ └── start-chrome-headless.sh
@@ -313,15 +449,19 @@ mcp-chrome/
313
449
 
314
450
  ## Security Notes
315
451
 
316
- - CDP provides full browser control - use only on trusted machines
317
- - Default debugging port binds to 127.0.0.1 only
452
+ - Extension mode: shares your browser sessions only use on trusted machines
453
+ - CDP mode: provides full browser control via DevTools Protocol
454
+ - Default ports bind to 127.0.0.1 only (localhost)
318
455
  - The `evaluate` tool can execute arbitrary JavaScript
456
+ - The `manage cdp` action can send arbitrary CDP commands
319
457
  - Network logs may contain sensitive information
320
458
 
321
459
  ## Known Limitations
322
460
 
323
- - **Single session**: Currently supports one browser session at a time
324
461
  - **Chrome only**: Only supports Chrome/Chromium browsers (no Firefox/Safari)
462
+ - **Single CDP session**: CDP mode supports one browser session at a time
463
+ - **Extension mode requires Chrome**: Extension is Manifest V3, Chrome-specific
464
+ - **iframe**: Only single-level iframe targeting (no nested `>>` syntax); Extension mode only
325
465
 
326
466
  ## License
327
467
 
@@ -46,13 +46,5 @@ export declare class BehaviorSimulator {
46
46
  * 更新当前鼠标位置
47
47
  */
48
48
  setCurrentPosition(point: Point): void;
49
- /**
50
- * 生成人类化的鼠标移动路径
51
- */
52
- generateHumanMousePath(to: Point): Point[];
53
- /**
54
- * 生成人类化的打字延迟序列
55
- */
56
- generateTypingDelays(textLength: number, baseDelay?: number): number[];
57
49
  }
58
50
  //# sourceMappingURL=behavior.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../src/anti-detection/behavior.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAE3C;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,KAAK,EACT,KAAK,CAAC,EAAE,MAAM,GACf,KAAK,EAAE,CA4BT;AAwBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,GAAE,MAAY,GAAG,MAAM,CAI9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,eAAe,CAAsB;IAE7C;;OAEG;IACH,kBAAkB,IAAI,KAAK;IAI3B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAItC;;OAEG;IACH,sBAAsB,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE;IAI1C;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,EAAE;CAO9E"}
1
+ {"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../src/anti-detection/behavior.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAE3C;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,KAAK,EACT,KAAK,CAAC,EAAE,MAAM,GACf,KAAK,EAAE,CA4BT;AAwBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,GAAE,MAAY,GAAG,MAAM,CAI9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,eAAe,CAAsB;IAE7C;;OAEG;IACH,kBAAkB,IAAI,KAAK;IAI3B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAIzC"}
@@ -93,21 +93,5 @@ export class BehaviorSimulator {
93
93
  setCurrentPosition(point) {
94
94
  this.currentPosition = { ...point };
95
95
  }
96
- /**
97
- * 生成人类化的鼠标移动路径
98
- */
99
- generateHumanMousePath(to) {
100
- return generateBezierPath(this.currentPosition, to);
101
- }
102
- /**
103
- * 生成人类化的打字延迟序列
104
- */
105
- generateTypingDelays(textLength, baseDelay = 100) {
106
- const delays = [];
107
- for (let i = 0; i < textLength; i++) {
108
- delays.push(getTypingDelay(baseDelay));
109
- }
110
- return delays;
111
- }
112
96
  }
113
97
  //# sourceMappingURL=behavior.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"behavior.js","sourceRoot":"","sources":["../../src/anti-detection/behavior.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"behavior.js","sourceRoot":"","sources":["../../src/anti-detection/behavior.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,7 @@ export declare class CDPClient extends EventEmitter {
19
19
  private callbacks;
20
20
  private nextId;
21
21
  private eventListeners;
22
- private _endpoint;
23
- get endpoint(): string;
22
+ private activeEventWaiters;
24
23
  get isConnected(): boolean;
25
24
  /**
26
25
  * 连接到 CDP 端点
@@ -40,16 +39,25 @@ export declare class CDPClient extends EventEmitter {
40
39
  offEvent(event: string, listener: CDPEventListener): void;
41
40
  /**
42
41
  * 等待特定事件
42
+ *
43
+ * close()/handleClose() 会立即 reject 所有活跃的等待者,不必等 timer 超时。
43
44
  */
44
45
  waitForEvent<T = unknown>(event: string, predicate?: (params: T) => boolean, timeout?: number): Promise<T>;
45
46
  /**
46
47
  * 关闭连接
48
+ *
49
+ * 立即 reject 所有 pending callbacks 和 waitForEvent,
50
+ * 然后发出 'disconnected' 信号供外部等待者(如 waitForAnyEvent)清理。
47
51
  */
48
52
  close(): void;
49
53
  /**
50
54
  * 处理收到的消息
51
55
  */
52
56
  private handleMessage;
57
+ /**
58
+ * 立即 reject 所有 pending callbacks 和 waitForEvent 等待者
59
+ */
60
+ private rejectAllPending;
53
61
  /**
54
62
  * 处理连接关闭
55
63
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cdp/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAA;AAanC;;GAEG;AACH,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAElD;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACvC,aAAa;IACb,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IACvD,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,cAAc,CAAiD;IAEvE,OAAO,CAAC,SAAS,CAAgB;IAEjC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/D;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,MAA0C,GACpD,OAAO,CAAC,CAAC,CAAC;IAoCb;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAOxD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAOzD;;OAEG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,EAClC,OAAO,SAAQ,GAChB,OAAO,CAAC,CAAC,CAAC;IAmBb;;OAEG;IACH,KAAK,IAAI,IAAI;IAeb;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,OAAO,CAAC,WAAW;CAQtB;AAKD;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA6B,GACvC,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA6B,GACvC,OAAO,CACN,KAAK,CAAC;IACF,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,MAAM,CAAC;CAChC,CAAC,CACL,CA8BA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cdp/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAA;AAwBnC;;GAEG;AACH,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAElD;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACvC,aAAa;IACb,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAkB;IACjE,OAAO,CAAC,EAAE,CAA4C;IACtD,OAAO,CAAC,SAAS,CAAmE;IACpF,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,cAAc,CAAoE;IAC1F,OAAO,CAAC,kBAAkB,CAA8C;IAExE,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CzE;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,MAA0C,GACpD,OAAO,CAAC,CAAC,CAAC;IA6Cb;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAOxD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAOzD;;;;OAIG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,EAClC,OAAO,SAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IA8Bb;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,WAAW;CAStB;AAgCD;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA6B,GACvC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA6B,GACvC,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAExG"}