@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
@@ -8,243 +8,309 @@
8
8
  * - viewport: 设置视口
9
9
  * - userAgent: 设置 User-Agent
10
10
  * - emulate: 设备模拟
11
+ * - inputMode: 设置输入模式(stealth/precise)
12
+ * - stealth: 注入反检测脚本
13
+ * - cdp: 发送任意 CDP 命令(高级)
11
14
  */
12
15
  import { z } from 'zod';
13
- import { devices, formatErrorResponse, getSession } from '../core/index.js';
14
- /**
15
- * manage 工具定义
16
- */
17
- export const manageToolDefinition = {
18
- name: 'manage',
19
- description: '页面与环境管理:新建页面、关闭页面、缓存、视口、UA、设备模拟',
20
- inputSchema: {
21
- type: 'object',
22
- properties: {
23
- action: {
24
- type: 'string',
25
- enum: [
26
- 'newPage',
27
- 'closePage',
28
- 'clearCache',
29
- 'viewport',
30
- 'userAgent',
31
- 'emulate',
32
- ],
33
- description: '管理操作',
34
- },
35
- targetId: {
36
- type: 'string',
37
- description: '目标页面 ID(closePage)',
38
- },
39
- cacheType: {
40
- type: 'string',
41
- enum: ['all', 'cookies', 'storage', 'cache'],
42
- description: '清除类型(clearCache)',
43
- },
44
- width: {
45
- type: 'number',
46
- description: '视口宽度(viewport)',
47
- },
48
- height: {
49
- type: 'number',
50
- description: '视口高度(viewport)',
51
- },
52
- userAgent: {
53
- type: 'string',
54
- description: 'User-Agent 字符串(userAgent)',
55
- },
56
- device: {
57
- type: 'string',
58
- description: '设备名称(emulate),如 iPhone 13, iPad Pro',
59
- },
60
- },
61
- required: ['action'],
62
- },
63
- };
16
+ import { devices, formatErrorResponse, formatResponse, getSession, getUnifiedSession } from '../core/index.js';
64
17
  /**
65
18
  * manage 参数 schema
66
19
  */
67
20
  const manageSchema = z.object({
68
21
  action: z.enum([
69
- 'newPage',
70
- 'closePage',
71
- 'clearCache',
72
- 'viewport',
73
- 'userAgent',
74
- 'emulate',
75
- ]),
76
- targetId: z.string().optional(),
77
- cacheType: z.enum(['all', 'cookies', 'storage', 'cache']).optional(),
78
- width: z.number().optional(),
79
- height: z.number().optional(),
80
- userAgent: z.string().optional(),
81
- device: z.string().optional(),
22
+ 'newPage', 'closePage', 'clearCache', 'viewport',
23
+ 'userAgent', 'emulate', 'inputMode', 'stealth', 'cdp',
24
+ ]).describe('管理操作'),
25
+ inputMode: z.enum(['stealth', 'precise']).optional().describe('输入模式(inputMode)。precise=debugger API(默认,可绕过 CSP 但显示调试提示);stealth=JS 事件模拟(不触发调试提示但受 CSP 限制,适用于反检测场景)'),
26
+ cdpMethod: z.string().optional().describe('CDP 方法名(cdp),如 Runtime.evaluate、Page.captureScreenshot'),
27
+ cdpParams: z.record(z.unknown()).optional().describe('CDP 方法参数(cdp)'),
28
+ targetId: z.string().optional().describe('目标页面 ID(closePage)'),
29
+ cacheType: z.enum(['all', 'cookies', 'storage', 'cache']).optional().describe('清除类型(clearCache)'),
30
+ width: z.number().optional().describe('视口宽度(viewport)'),
31
+ height: z.number().optional().describe('视口高度(viewport)'),
32
+ userAgent: z.string().optional().describe('User-Agent 字符串(userAgent)'),
33
+ device: z.string().optional().describe('设备名称(emulate),如 iPhone 13, iPad Pro'),
82
34
  });
83
35
  /**
84
36
  * manage 工具处理器
85
37
  */
86
- export async function handleManage(params) {
38
+ async function handleManage(args) {
87
39
  try {
88
- const args = manageSchema.parse(params);
89
- const session = getSession();
40
+ const unifiedSession = getUnifiedSession();
41
+ const mode = unifiedSession.getMode();
90
42
  switch (args.action) {
91
43
  case 'newPage': {
92
- const target = await session.newPage();
93
- return {
94
- content: [
95
- {
96
- type: 'text',
97
- text: JSON.stringify({
98
- success: true,
99
- action: 'newPage',
100
- target,
101
- }),
102
- },
103
- ],
104
- };
44
+ const target = await unifiedSession.newPage();
45
+ return formatResponse({
46
+ success: true,
47
+ action: 'newPage',
48
+ target,
49
+ mode,
50
+ });
105
51
  }
106
52
  case 'closePage': {
107
- await session.closePage(args.targetId);
108
- return {
109
- content: [
110
- {
111
- type: 'text',
112
- text: JSON.stringify({
113
- success: true,
114
- action: 'closePage',
115
- targetId: args.targetId ?? 'current',
116
- }),
117
- },
118
- ],
119
- };
53
+ await unifiedSession.closePage(args.targetId);
54
+ return formatResponse({
55
+ success: true,
56
+ action: 'closePage',
57
+ targetId: args.targetId ?? 'current',
58
+ mode,
59
+ });
120
60
  }
121
61
  case 'clearCache': {
122
- await session.clearCache((args.cacheType ?? 'all'));
123
- return {
124
- content: [
125
- {
126
- type: 'text',
127
- text: JSON.stringify({
62
+ return await unifiedSession.withTabId(undefined, async () => {
63
+ const cacheType = (args.cacheType ?? 'all');
64
+ if (mode === 'extension') {
65
+ // Extension 模式:只支持 cookies 清除
66
+ if (cacheType === 'all' || cacheType === 'cookies') {
67
+ await unifiedSession.clearCookies();
68
+ }
69
+ if (cacheType === 'storage' || cacheType === 'cache') {
70
+ return formatResponse({
128
71
  success: true,
129
72
  action: 'clearCache',
130
- cacheType: args.cacheType ?? 'all',
131
- }),
132
- },
133
- ],
134
- };
73
+ cacheType,
74
+ mode,
75
+ warning: 'Extension 模式仅支持清除 cookies,storage 和 cache 需要 CDP 模式',
76
+ });
77
+ }
78
+ }
79
+ else {
80
+ const session = getSession();
81
+ await session.clearCache(cacheType);
82
+ }
83
+ return formatResponse({
84
+ success: true,
85
+ action: 'clearCache',
86
+ cacheType,
87
+ mode,
88
+ });
89
+ });
135
90
  }
136
91
  case 'viewport': {
137
- if (args.width === undefined || args.height === undefined) {
138
- return {
139
- content: [
140
- {
141
- type: 'text',
142
- text: JSON.stringify({
143
- error: {
144
- code: 'INVALID_ARGUMENT',
145
- message: '设置视口需要 width 和 height 参数',
146
- },
147
- }),
148
- },
149
- ],
150
- isError: true,
151
- };
152
- }
153
- await session.setViewport(args.width, args.height);
154
- return {
155
- content: [
156
- {
157
- type: 'text',
158
- text: JSON.stringify({
159
- success: true,
160
- action: 'viewport',
161
- width: args.width,
162
- height: args.height,
163
- }),
164
- },
165
- ],
166
- };
92
+ return await unifiedSession.withTabId(undefined, async () => {
93
+ if (args.width === undefined || args.height === undefined) {
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: JSON.stringify({
99
+ error: {
100
+ code: 'INVALID_ARGUMENT',
101
+ message: '设置视口需要 width 和 height 参数',
102
+ },
103
+ }),
104
+ },
105
+ ],
106
+ isError: true,
107
+ };
108
+ }
109
+ if (mode === 'extension') {
110
+ // Extension 模式:使用 debugger API 设置视口
111
+ await unifiedSession.sendCdpCommand('Emulation.setDeviceMetricsOverride', {
112
+ width: args.width,
113
+ height: args.height,
114
+ deviceScaleFactor: 1,
115
+ mobile: false,
116
+ });
117
+ }
118
+ else {
119
+ const session = getSession();
120
+ await session.setViewport(args.width, args.height);
121
+ }
122
+ // 触发 resize 事件(Emulation API 不会自动触发)
123
+ await unifiedSession.evaluate('window.dispatchEvent(new Event("resize"))');
124
+ return formatResponse({
125
+ success: true,
126
+ action: 'viewport',
127
+ width: args.width,
128
+ height: args.height,
129
+ mode,
130
+ });
131
+ });
167
132
  }
168
133
  case 'userAgent': {
169
- if (!args.userAgent) {
170
- return {
171
- content: [
172
- {
173
- type: 'text',
174
- text: JSON.stringify({
175
- error: {
176
- code: 'INVALID_ARGUMENT',
177
- message: '设置 User-Agent 需要 userAgent 参数',
178
- },
179
- }),
180
- },
181
- ],
182
- isError: true,
183
- };
184
- }
185
- await session.setUserAgent(args.userAgent);
186
- return {
187
- content: [
188
- {
189
- type: 'text',
190
- text: JSON.stringify({
191
- success: true,
192
- action: 'userAgent',
193
- userAgent: args.userAgent,
194
- }),
134
+ return await unifiedSession.withTabId(undefined, async () => {
135
+ if (!args.userAgent) {
136
+ return {
137
+ content: [
138
+ {
139
+ type: 'text',
140
+ text: JSON.stringify({
141
+ error: {
142
+ code: 'INVALID_ARGUMENT',
143
+ message: '设置 User-Agent 需要 userAgent 参数',
144
+ },
145
+ }),
146
+ },
147
+ ],
148
+ isError: true,
149
+ };
150
+ }
151
+ if (mode === 'extension') {
152
+ // Extension 模式:使用 debugger API 设置 UA
153
+ await unifiedSession.sendCdpCommand('Emulation.setUserAgentOverride', {
154
+ userAgent: args.userAgent,
155
+ });
156
+ }
157
+ else {
158
+ const session = getSession();
159
+ await session.setUserAgent(args.userAgent);
160
+ }
161
+ return formatResponse({
162
+ success: true,
163
+ action: 'userAgent',
164
+ userAgent: args.userAgent,
165
+ mode,
166
+ });
167
+ });
168
+ }
169
+ case 'inputMode': {
170
+ if (!args.inputMode) {
171
+ // 返回当前模式
172
+ return formatResponse({
173
+ success: true,
174
+ action: 'inputMode',
175
+ currentMode: unifiedSession.getInputMode(),
176
+ availableModes: ['stealth', 'precise'],
177
+ description: {
178
+ stealth: 'JS 事件模拟,不触发调试提示,但受 CSP 限制(evaluate 可能失败)',
179
+ precise: 'debugger API,可绕过 CSP,但显示"扩展程序正在调试此浏览器"',
195
180
  },
196
- ],
197
- };
181
+ });
182
+ }
183
+ unifiedSession.setInputMode(args.inputMode);
184
+ return formatResponse({
185
+ success: true,
186
+ action: 'inputMode',
187
+ inputMode: args.inputMode,
188
+ mode,
189
+ });
198
190
  }
199
191
  case 'emulate': {
200
- if (!args.device) {
201
- // 列出可用设备
202
- return {
203
- content: [
204
- {
205
- type: 'text',
206
- text: JSON.stringify({
207
- success: true,
208
- action: 'emulate',
209
- availableDevices: Object.keys(devices),
210
- }),
211
- },
212
- ],
213
- };
214
- }
215
- const device = devices[args.device];
216
- if (!device) {
217
- return {
218
- content: [
219
- {
220
- type: 'text',
221
- text: JSON.stringify({
222
- error: {
223
- code: 'INVALID_ARGUMENT',
224
- message: `未知设备: ${args.device}`,
225
- suggestion: `可用设备: ${Object.keys(devices).join(', ')}`,
192
+ return await unifiedSession.withTabId(undefined, async () => {
193
+ if (!args.device) {
194
+ // 列出可用设备
195
+ return formatResponse({
196
+ success: true,
197
+ action: 'emulate',
198
+ availableDevices: Object.keys(devices),
199
+ });
200
+ }
201
+ const device = devices[args.device];
202
+ if (!device) {
203
+ return {
204
+ content: [
205
+ {
206
+ type: 'text',
207
+ text: JSON.stringify({
208
+ error: {
209
+ code: 'INVALID_ARGUMENT',
210
+ message: `未知设备: ${args.device}`,
211
+ suggestion: `可用设备: ${Object.keys(devices)
212
+ .join(', ')}`,
213
+ },
214
+ }),
215
+ },
216
+ ],
217
+ isError: true,
218
+ };
219
+ }
220
+ if (mode === 'extension') {
221
+ // Extension 模式:使用 debugger API
222
+ await unifiedSession.sendCdpCommand('Emulation.setDeviceMetricsOverride', {
223
+ width: device.viewport.width,
224
+ height: device.viewport.height,
225
+ deviceScaleFactor: device.viewport.deviceScaleFactor || 1,
226
+ mobile: device.viewport.isMobile || false,
227
+ });
228
+ await unifiedSession.sendCdpCommand('Emulation.setUserAgentOverride', {
229
+ userAgent: device.userAgent,
230
+ });
231
+ }
232
+ else {
233
+ const session = getSession();
234
+ await session.setViewport(device.viewport.width, device.viewport.height);
235
+ await session.setUserAgent(device.userAgent);
236
+ }
237
+ // 触发 resize 事件(Emulation API 不会自动触发)
238
+ await unifiedSession.evaluate('window.dispatchEvent(new Event("resize"))');
239
+ return formatResponse({
240
+ success: true,
241
+ action: 'emulate',
242
+ device: args.device,
243
+ viewport: device.viewport,
244
+ mode,
245
+ });
246
+ });
247
+ }
248
+ case 'stealth': {
249
+ return await unifiedSession.withTabId(undefined, async () => {
250
+ await unifiedSession.injectStealth();
251
+ return formatResponse({
252
+ success: true,
253
+ action: 'stealth',
254
+ mode,
255
+ note: '已注入反检测脚本',
256
+ });
257
+ });
258
+ }
259
+ case 'cdp': {
260
+ return await unifiedSession.withTabId(undefined, async () => {
261
+ if (!args.cdpMethod) {
262
+ return {
263
+ content: [
264
+ {
265
+ type: 'text',
266
+ text: JSON.stringify({
267
+ error: {
268
+ code: 'INVALID_ARGUMENT',
269
+ message: '缺少 cdpMethod 参数',
270
+ suggestion: '请指定 CDP 方法名,如 Runtime.evaluate、Page.captureScreenshot',
271
+ },
272
+ }),
273
+ },
274
+ ],
275
+ isError: true,
276
+ };
277
+ }
278
+ try {
279
+ const result = await unifiedSession.sendCdpCommand(args.cdpMethod, args.cdpParams);
280
+ return formatResponse({
281
+ success: true,
282
+ action: 'cdp',
283
+ method: args.cdpMethod,
284
+ result,
285
+ mode,
286
+ });
287
+ }
288
+ catch (error) {
289
+ const errorMessage = error instanceof Error ? error.message : String(error);
290
+ // Extension 模式下某些 CDP 域不支持
291
+ if (mode ===
292
+ 'extension' &&
293
+ (errorMessage.includes('not supported') || errorMessage.includes('not found'))) {
294
+ const domain = args.cdpMethod.split('.')[0];
295
+ return {
296
+ content: [
297
+ {
298
+ type: 'text',
299
+ text: JSON.stringify({
300
+ error: {
301
+ code: 'CDP_DOMAIN_NOT_SUPPORTED',
302
+ message: `Extension 模式不支持 ${domain} 域`,
303
+ suggestion: 'Extension 模式可用域:Page、Runtime、Emulation、DOM、Input、Network。如需完整 CDP 支持,请使用 CDP 模式(browse action="launch")',
304
+ },
305
+ }),
226
306
  },
227
- }),
228
- },
229
- ],
230
- isError: true,
231
- };
232
- }
233
- await session.setViewport(device.viewport.width, device.viewport.height);
234
- await session.setUserAgent(device.userAgent);
235
- return {
236
- content: [
237
- {
238
- type: 'text',
239
- text: JSON.stringify({
240
- success: true,
241
- action: 'emulate',
242
- device: args.device,
243
- viewport: device.viewport,
244
- }),
245
- },
246
- ],
247
- };
307
+ ],
308
+ isError: true,
309
+ };
310
+ }
311
+ return formatErrorResponse(error);
312
+ }
313
+ });
248
314
  }
249
315
  default:
250
316
  return {
@@ -267,4 +333,13 @@ export async function handleManage(params) {
267
333
  return formatErrorResponse(error);
268
334
  }
269
335
  }
336
+ /**
337
+ * 注册 manage 工具
338
+ */
339
+ export function registerManageTool(server) {
340
+ server.registerTool('manage', {
341
+ description: '页面与环境管理:新建页面、关闭页面、缓存、视口、UA、设备模拟',
342
+ inputSchema: manageSchema,
343
+ }, (args) => handleManage(args));
344
+ }
270
345
  //# sourceMappingURL=manage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/tools/manage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/tools/manage.ts"],"names":[],"mappings":"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"}