@pyrokine/mcp-chrome 1.0.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 (100) hide show
  1. package/README.md +333 -0
  2. package/dist/anti-detection/behavior.d.ts +58 -0
  3. package/dist/anti-detection/behavior.d.ts.map +1 -0
  4. package/dist/anti-detection/behavior.js +113 -0
  5. package/dist/anti-detection/behavior.js.map +1 -0
  6. package/dist/anti-detection/index.d.ts +6 -0
  7. package/dist/anti-detection/index.d.ts.map +1 -0
  8. package/dist/anti-detection/index.js +6 -0
  9. package/dist/anti-detection/index.js.map +1 -0
  10. package/dist/anti-detection/injection.d.ts +19 -0
  11. package/dist/anti-detection/injection.d.ts.map +1 -0
  12. package/dist/anti-detection/injection.js +270 -0
  13. package/dist/anti-detection/injection.js.map +1 -0
  14. package/dist/cdp/client.d.ts +73 -0
  15. package/dist/cdp/client.d.ts.map +1 -0
  16. package/dist/cdp/client.js +275 -0
  17. package/dist/cdp/client.js.map +1 -0
  18. package/dist/cdp/index.d.ts +6 -0
  19. package/dist/cdp/index.d.ts.map +1 -0
  20. package/dist/cdp/index.js +6 -0
  21. package/dist/cdp/index.js.map +1 -0
  22. package/dist/cdp/launcher.d.ts +42 -0
  23. package/dist/cdp/launcher.d.ts.map +1 -0
  24. package/dist/cdp/launcher.js +181 -0
  25. package/dist/cdp/launcher.js.map +1 -0
  26. package/dist/core/auto-wait.d.ts +71 -0
  27. package/dist/core/auto-wait.d.ts.map +1 -0
  28. package/dist/core/auto-wait.js +165 -0
  29. package/dist/core/auto-wait.js.map +1 -0
  30. package/dist/core/errors.d.ts +123 -0
  31. package/dist/core/errors.d.ts.map +1 -0
  32. package/dist/core/errors.js +226 -0
  33. package/dist/core/errors.js.map +1 -0
  34. package/dist/core/index.d.ts +10 -0
  35. package/dist/core/index.d.ts.map +1 -0
  36. package/dist/core/index.js +10 -0
  37. package/dist/core/index.js.map +1 -0
  38. package/dist/core/locator.d.ts +130 -0
  39. package/dist/core/locator.d.ts.map +1 -0
  40. package/dist/core/locator.js +402 -0
  41. package/dist/core/locator.js.map +1 -0
  42. package/dist/core/retry.d.ts +27 -0
  43. package/dist/core/retry.d.ts.map +1 -0
  44. package/dist/core/retry.js +51 -0
  45. package/dist/core/retry.js.map +1 -0
  46. package/dist/core/session.d.ts +254 -0
  47. package/dist/core/session.d.ts.map +1 -0
  48. package/dist/core/session.js +893 -0
  49. package/dist/core/session.js.map +1 -0
  50. package/dist/core/types.d.ts +263 -0
  51. package/dist/core/types.d.ts.map +1 -0
  52. package/dist/core/types.js +90 -0
  53. package/dist/core/types.js.map +1 -0
  54. package/dist/index.d.ts +14 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +121 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/tools/browse.d.ts +92 -0
  59. package/dist/tools/browse.d.ts.map +1 -0
  60. package/dist/tools/browse.js +368 -0
  61. package/dist/tools/browse.js.map +1 -0
  62. package/dist/tools/cookies.d.ts +75 -0
  63. package/dist/tools/cookies.d.ts.map +1 -0
  64. package/dist/tools/cookies.js +230 -0
  65. package/dist/tools/cookies.js.map +1 -0
  66. package/dist/tools/evaluate.d.ts +45 -0
  67. package/dist/tools/evaluate.d.ts.map +1 -0
  68. package/dist/tools/evaluate.js +85 -0
  69. package/dist/tools/evaluate.js.map +1 -0
  70. package/dist/tools/extract.d.ts +213 -0
  71. package/dist/tools/extract.d.ts.map +1 -0
  72. package/dist/tools/extract.js +304 -0
  73. package/dist/tools/extract.js.map +1 -0
  74. package/dist/tools/index.d.ts +13 -0
  75. package/dist/tools/index.d.ts.map +1 -0
  76. package/dist/tools/index.js +13 -0
  77. package/dist/tools/index.js.map +1 -0
  78. package/dist/tools/input.d.ts +241 -0
  79. package/dist/tools/input.d.ts.map +1 -0
  80. package/dist/tools/input.js +325 -0
  81. package/dist/tools/input.js.map +1 -0
  82. package/dist/tools/logs.d.ts +57 -0
  83. package/dist/tools/logs.d.ts.map +1 -0
  84. package/dist/tools/logs.js +165 -0
  85. package/dist/tools/logs.js.map +1 -0
  86. package/dist/tools/manage.d.ts +65 -0
  87. package/dist/tools/manage.d.ts.map +1 -0
  88. package/dist/tools/manage.js +270 -0
  89. package/dist/tools/manage.js.map +1 -0
  90. package/dist/tools/schema.d.ts +261 -0
  91. package/dist/tools/schema.d.ts.map +1 -0
  92. package/dist/tools/schema.js +151 -0
  93. package/dist/tools/schema.js.map +1 -0
  94. package/dist/tools/wait.d.ts +203 -0
  95. package/dist/tools/wait.d.ts.map +1 -0
  96. package/dist/tools/wait.js +254 -0
  97. package/dist/tools/wait.js.map +1 -0
  98. package/package.json +43 -0
  99. package/scripts/start-chrome-headless.sh +37 -0
  100. package/scripts/start-chrome.sh +41 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * logs 工具
3
+ *
4
+ * 浏览器日志:
5
+ * - console: 控制台日志
6
+ * - network: 网络请求日志
7
+ */
8
+ /**
9
+ * logs 工具定义
10
+ */
11
+ export declare const logsToolDefinition: {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: {
15
+ type: "object";
16
+ properties: {
17
+ type: {
18
+ type: string;
19
+ enum: string[];
20
+ description: string;
21
+ };
22
+ level: {
23
+ type: string;
24
+ enum: string[];
25
+ description: string;
26
+ };
27
+ urlPattern: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ limit: {
32
+ type: string;
33
+ description: string;
34
+ };
35
+ clear: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ output: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ };
44
+ required: string[];
45
+ };
46
+ };
47
+ /**
48
+ * logs 工具处理器
49
+ */
50
+ export declare function handleLogs(params: unknown): Promise<{
51
+ content: Array<{
52
+ type: 'text';
53
+ text: string;
54
+ }>;
55
+ isError?: boolean;
56
+ }>;
57
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC9B,CAAA;AAgBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACvD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CAwHD"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * logs 工具
3
+ *
4
+ * 浏览器日志:
5
+ * - console: 控制台日志
6
+ * - network: 网络请求日志
7
+ */
8
+ import { writeFile } from 'fs/promises';
9
+ import { z } from 'zod';
10
+ import { formatErrorResponse, getSession } from '../core/index.js';
11
+ /**
12
+ * logs 工具定义
13
+ */
14
+ export const logsToolDefinition = {
15
+ name: 'logs',
16
+ description: '浏览器日志:控制台日志、网络请求',
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ type: {
21
+ type: 'string',
22
+ enum: ['console', 'network'],
23
+ description: '日志类型',
24
+ },
25
+ level: {
26
+ type: 'string',
27
+ enum: ['all', 'error', 'warning', 'info', 'debug'],
28
+ description: '日志级别过滤(console)',
29
+ },
30
+ urlPattern: {
31
+ type: 'string',
32
+ description: 'URL 模式过滤(network),支持通配符',
33
+ },
34
+ limit: {
35
+ type: 'number',
36
+ description: '最大返回条数',
37
+ },
38
+ clear: {
39
+ type: 'boolean',
40
+ description: '获取后清除日志',
41
+ },
42
+ output: {
43
+ type: 'string',
44
+ description: '输出文件路径。若指定,日志导出为 JSON 文件',
45
+ },
46
+ },
47
+ required: ['type'],
48
+ },
49
+ };
50
+ /**
51
+ * logs 参数 schema
52
+ */
53
+ const logsSchema = z.object({
54
+ type: z.enum(['console', 'network']),
55
+ level: z.enum(['all', 'error', 'warning', 'info', 'debug']).optional(),
56
+ urlPattern: z.string().optional(),
57
+ limit: z.number().optional(),
58
+ clear: z.boolean().optional(),
59
+ output: z.string().optional(),
60
+ });
61
+ /**
62
+ * logs 工具处理器
63
+ */
64
+ export async function handleLogs(params) {
65
+ try {
66
+ const args = logsSchema.parse(params);
67
+ const session = getSession();
68
+ const limit = args.limit ?? 100;
69
+ switch (args.type) {
70
+ case 'console': {
71
+ const logs = session.getConsoleLogs(args.level, limit);
72
+ if (args.output) {
73
+ await writeFile(args.output, JSON.stringify(logs, null, 2), 'utf-8');
74
+ if (args.clear) {
75
+ session.clearLogs();
76
+ }
77
+ return {
78
+ content: [
79
+ {
80
+ type: 'text',
81
+ text: JSON.stringify({
82
+ success: true,
83
+ type: 'console',
84
+ output: args.output,
85
+ count: logs.length,
86
+ }),
87
+ },
88
+ ],
89
+ };
90
+ }
91
+ if (args.clear) {
92
+ session.clearLogs();
93
+ }
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: JSON.stringify({
99
+ success: true,
100
+ type: 'console',
101
+ logs,
102
+ }, null, 2),
103
+ },
104
+ ],
105
+ };
106
+ }
107
+ case 'network': {
108
+ const requests = session.getNetworkRequests(args.urlPattern, limit);
109
+ if (args.output) {
110
+ await writeFile(args.output, JSON.stringify(requests, null, 2), 'utf-8');
111
+ if (args.clear) {
112
+ session.clearLogs();
113
+ }
114
+ return {
115
+ content: [
116
+ {
117
+ type: 'text',
118
+ text: JSON.stringify({
119
+ success: true,
120
+ type: 'network',
121
+ output: args.output,
122
+ count: requests.length,
123
+ }),
124
+ },
125
+ ],
126
+ };
127
+ }
128
+ if (args.clear) {
129
+ session.clearLogs();
130
+ }
131
+ return {
132
+ content: [
133
+ {
134
+ type: 'text',
135
+ text: JSON.stringify({
136
+ success: true,
137
+ type: 'network',
138
+ requests,
139
+ }, null, 2),
140
+ },
141
+ ],
142
+ };
143
+ }
144
+ default:
145
+ return {
146
+ content: [
147
+ {
148
+ type: 'text',
149
+ text: JSON.stringify({
150
+ error: {
151
+ code: 'INVALID_ARGUMENT',
152
+ message: `未知日志类型: ${args.type}`,
153
+ },
154
+ }),
155
+ },
156
+ ],
157
+ isError: true,
158
+ };
159
+ }
160
+ }
161
+ catch (error) {
162
+ return formatErrorResponse(error);
163
+ }
164
+ }
165
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * manage 工具
3
+ *
4
+ * 页面与环境管理:
5
+ * - newPage: 新建页面
6
+ * - closePage: 关闭页面
7
+ * - clearCache: 清除缓存
8
+ * - viewport: 设置视口
9
+ * - userAgent: 设置 User-Agent
10
+ * - emulate: 设备模拟
11
+ */
12
+ /**
13
+ * manage 工具定义
14
+ */
15
+ export declare const manageToolDefinition: {
16
+ name: string;
17
+ description: string;
18
+ inputSchema: {
19
+ type: "object";
20
+ properties: {
21
+ action: {
22
+ type: string;
23
+ enum: string[];
24
+ description: string;
25
+ };
26
+ targetId: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ cacheType: {
31
+ type: string;
32
+ enum: string[];
33
+ description: string;
34
+ };
35
+ width: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ height: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ userAgent: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ device: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ };
52
+ required: string[];
53
+ };
54
+ };
55
+ /**
56
+ * manage 工具处理器
57
+ */
58
+ export declare function handleManage(params: unknown): Promise<{
59
+ content: Array<{
60
+ type: 'text';
61
+ text: string;
62
+ }>;
63
+ isError?: boolean;
64
+ }>;
65
+ //# sourceMappingURL=manage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../src/tools/manage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ChC,CAAA;AAwBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACzD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CAgMD"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * manage 工具
3
+ *
4
+ * 页面与环境管理:
5
+ * - newPage: 新建页面
6
+ * - closePage: 关闭页面
7
+ * - clearCache: 清除缓存
8
+ * - viewport: 设置视口
9
+ * - userAgent: 设置 User-Agent
10
+ * - emulate: 设备模拟
11
+ */
12
+ 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
+ };
64
+ /**
65
+ * manage 参数 schema
66
+ */
67
+ const manageSchema = z.object({
68
+ 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(),
82
+ });
83
+ /**
84
+ * manage 工具处理器
85
+ */
86
+ export async function handleManage(params) {
87
+ try {
88
+ const args = manageSchema.parse(params);
89
+ const session = getSession();
90
+ switch (args.action) {
91
+ 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
+ };
105
+ }
106
+ 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
+ };
120
+ }
121
+ case 'clearCache': {
122
+ await session.clearCache((args.cacheType ?? 'all'));
123
+ return {
124
+ content: [
125
+ {
126
+ type: 'text',
127
+ text: JSON.stringify({
128
+ success: true,
129
+ action: 'clearCache',
130
+ cacheType: args.cacheType ?? 'all',
131
+ }),
132
+ },
133
+ ],
134
+ };
135
+ }
136
+ 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
+ };
167
+ }
168
+ 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
+ }),
195
+ },
196
+ ],
197
+ };
198
+ }
199
+ 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(', ')}`,
226
+ },
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
+ };
248
+ }
249
+ default:
250
+ return {
251
+ content: [
252
+ {
253
+ type: 'text',
254
+ text: JSON.stringify({
255
+ error: {
256
+ code: 'INVALID_ARGUMENT',
257
+ message: `未知操作: ${args.action}`,
258
+ },
259
+ }),
260
+ },
261
+ ],
262
+ isError: true,
263
+ };
264
+ }
265
+ }
266
+ catch (error) {
267
+ return formatErrorResponse(error);
268
+ }
269
+ }
270
+ //# sourceMappingURL=manage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/tools/manage.ts"],"names":[],"mappings":"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"}