web-fetcher-mcp 1.0.9 → 1.0.13
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 +312 -98
- package/dist/index.js +550 -3
- package/dist/index.js.map +1 -1
- package/dist/tools/click-element.d.ts +1 -1
- package/dist/tools/click-element.d.ts.map +1 -1
- package/dist/tools/click-element.js +219 -4
- package/dist/tools/click-element.js.map +1 -1
- package/dist/tools/execute-js.d.ts +16 -0
- package/dist/tools/execute-js.d.ts.map +1 -0
- package/dist/tools/execute-js.js +79 -0
- package/dist/tools/execute-js.js.map +1 -0
- package/dist/tools/get-console-logs.d.ts +6 -0
- package/dist/tools/get-console-logs.d.ts.map +1 -0
- package/dist/tools/get-console-logs.js +85 -0
- package/dist/tools/get-console-logs.js.map +1 -0
- package/dist/tools/get-element-attributes.d.ts +10 -0
- package/dist/tools/get-element-attributes.d.ts.map +1 -0
- package/dist/tools/get-element-attributes.js +90 -0
- package/dist/tools/get-element-attributes.js.map +1 -0
- package/dist/tools/get-page-info.d.ts +14 -0
- package/dist/tools/get-page-info.d.ts.map +1 -0
- package/dist/tools/get-page-info.js +163 -0
- package/dist/tools/get-page-info.js.map +1 -0
- package/dist/tools/hover-element.d.ts +9 -0
- package/dist/tools/hover-element.d.ts.map +1 -0
- package/dist/tools/hover-element.js +90 -0
- package/dist/tools/hover-element.js.map +1 -0
- package/dist/tools/navigate-history.d.ts +8 -0
- package/dist/tools/navigate-history.d.ts.map +1 -0
- package/dist/tools/navigate-history.js +45 -0
- package/dist/tools/navigate-history.js.map +1 -0
- package/dist/tools/open-devtools.d.ts +18 -0
- package/dist/tools/open-devtools.d.ts.map +1 -0
- package/dist/tools/open-devtools.js +64 -0
- package/dist/tools/open-devtools.js.map +1 -0
- package/dist/tools/scroll-page.d.ts +11 -0
- package/dist/tools/scroll-page.d.ts.map +1 -0
- package/dist/tools/scroll-page.js +85 -0
- package/dist/tools/scroll-page.js.map +1 -0
- package/dist/tools/select-option.d.ts +12 -0
- package/dist/tools/select-option.d.ts.map +1 -0
- package/dist/tools/select-option.js +197 -0
- package/dist/tools/select-option.js.map +1 -0
- package/dist/tools/upload-file.d.ts +10 -0
- package/dist/tools/upload-file.d.ts.map +1 -0
- package/dist/tools/upload-file.js +99 -0
- package/dist/tools/upload-file.js.map +1 -0
- package/dist/tools/wait-for-element.d.ts +11 -0
- package/dist/tools/wait-for-element.d.ts.map +1 -0
- package/dist/tools/wait-for-element.js +68 -0
- package/dist/tools/wait-for-element.js.map +1 -0
- package/dist/tools/web-page-fetcher.js +1 -1
- package/dist/tools/web-page-fetcher.js.map +1 -1
- package/dist/types/index.d.ts +111 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/browser.d.ts.map +1 -1
- package/dist/utils/browser.js +12 -11
- package/dist/utils/browser.js.map +1 -1
- package/dist/utils/console-logger.d.ts +27 -0
- package/dist/utils/console-logger.d.ts.map +1 -0
- package/dist/utils/console-logger.js +274 -0
- package/dist/utils/console-logger.js.map +1 -0
- package/dist/utils/html-skeleton.d.ts +6 -0
- package/dist/utils/html-skeleton.d.ts.map +1 -0
- package/dist/utils/html-skeleton.js +63 -0
- package/dist/utils/html-skeleton.js.map +1 -0
- package/dist/utils/page-content.d.ts.map +1 -1
- package/dist/utils/page-content.js +9 -55
- package/dist/utils/page-content.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
一个通用的 MCP 工具,可以获取任意网页的内容(包括文字和图片),支持需要登录的页面。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 安装
|
|
6
6
|
|
|
7
7
|
### 方式一:全局安装(推荐)
|
|
8
8
|
|
|
@@ -37,28 +37,11 @@ npm install -g web-fetcher-mcp
|
|
|
37
37
|
|
|
38
38
|
### 各编辑器配置位置
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
设置 → MCP → 添加服务器
|
|
46
|
-
|
|
47
|
-
#### VSCode + Cline/Roo Code
|
|
48
|
-
在插件设置中找到 MCP 配置
|
|
49
|
-
|
|
50
|
-
#### 完整配置示例
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"mcpServers": {
|
|
55
|
-
"web-fetcher": {
|
|
56
|
-
"command": "npx",
|
|
57
|
-
"args": ["-y", "web-fetcher-mcp"]
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
```
|
|
40
|
+
| 编辑器 | 配置位置 |
|
|
41
|
+
|--------|----------|
|
|
42
|
+
| Claude Desktop | `%APPDATA%\Claude\claude_desktop_config.json` (Windows) / `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) |
|
|
43
|
+
| Cursor | 设置 → MCP → 添加服务器 |
|
|
44
|
+
| VSCode + Cline/Roo Code | 插件设置中找到 MCP 配置 |
|
|
62
45
|
|
|
63
46
|
---
|
|
64
47
|
|
|
@@ -69,14 +52,25 @@ npm install -g web-fetcher-mcp
|
|
|
69
52
|
- 支持需要登录的页面
|
|
70
53
|
- 自动保存和复用登录状态(Cookie)
|
|
71
54
|
- 可自定义内容选择器,精准提取页面特定区域
|
|
55
|
+
- 页面滚动和导航控制
|
|
56
|
+
- 鼠标悬停、表单填写、下拉选择等交互操作
|
|
57
|
+
- 文件上传支持
|
|
58
|
+
- 元素属性获取和等待
|
|
59
|
+
|
|
60
|
+
## 系统要求
|
|
72
61
|
|
|
73
|
-
|
|
62
|
+
- Node.js 18+
|
|
63
|
+
- Google Chrome 浏览器
|
|
64
|
+
|
|
65
|
+
---
|
|
74
66
|
|
|
75
|
-
|
|
67
|
+
## 工具列表
|
|
68
|
+
|
|
69
|
+
### 1. fetch-web-page
|
|
76
70
|
|
|
77
71
|
获取网页内容(文字和图片)
|
|
78
72
|
|
|
79
|
-
|
|
73
|
+
#### 参数说明
|
|
80
74
|
|
|
81
75
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
82
76
|
|------|------|------|--------|------|
|
|
@@ -85,17 +79,21 @@ npm install -g web-fetcher-mcp
|
|
|
85
79
|
| downloadImages | boolean | 否 | true | 是否下载图片 |
|
|
86
80
|
| loginMode | string | 否 | 'skip' | 登录模式:skip/auto/manual |
|
|
87
81
|
| waitForLogin | boolean | 否 | false | 检测到需要登录时是否等待用户手动登录 |
|
|
88
|
-
| includeHtmlSkeleton | boolean | 否 | false | 是否返回 HTML
|
|
82
|
+
| includeHtmlSkeleton | boolean | 否 | false | 是否返回 HTML 骨架结构 |
|
|
83
|
+
|
|
84
|
+
#### 登录模式说明
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
| 模式 | 说明 |
|
|
87
|
+
|------|------|
|
|
88
|
+
| skip (默认) | 不检测登录状态,直接获取页面内容 |
|
|
89
|
+
| auto | 使用保存的 Cookie 自动登录 |
|
|
90
|
+
| manual | 打开浏览器等待用户手动完成登录 |
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
- **auto**: 使用保存的 Cookie 自动登录
|
|
94
|
-
- **manual**: 打开浏览器等待用户手动完成登录
|
|
92
|
+
#### 示例
|
|
95
93
|
|
|
96
|
-
|
|
94
|
+
<details>
|
|
95
|
+
<summary>普通网页抓取</summary>
|
|
97
96
|
|
|
98
|
-
#### 普通网页抓取
|
|
99
97
|
```json
|
|
100
98
|
{
|
|
101
99
|
"name": "fetch-web-page",
|
|
@@ -104,8 +102,11 @@ npm install -g web-fetcher-mcp
|
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
```
|
|
105
|
+
</details>
|
|
106
|
+
|
|
107
|
+
<details>
|
|
108
|
+
<summary>抓取特定区域内容</summary>
|
|
107
109
|
|
|
108
|
-
#### 抓取特定区域内容
|
|
109
110
|
```json
|
|
110
111
|
{
|
|
111
112
|
"name": "fetch-web-page",
|
|
@@ -115,8 +116,11 @@ npm install -g web-fetcher-mcp
|
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
```
|
|
119
|
+
</details>
|
|
120
|
+
|
|
121
|
+
<details>
|
|
122
|
+
<summary>需要登录的页面(首次)</summary>
|
|
118
123
|
|
|
119
|
-
#### 需要登录的页面(首次)
|
|
120
124
|
```json
|
|
121
125
|
{
|
|
122
126
|
"name": "fetch-web-page",
|
|
@@ -127,8 +131,11 @@ npm install -g web-fetcher-mcp
|
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
133
|
```
|
|
134
|
+
</details>
|
|
135
|
+
|
|
136
|
+
<details>
|
|
137
|
+
<summary>需要登录的页面(后续)</summary>
|
|
130
138
|
|
|
131
|
-
#### 需要登录的页面(后续)
|
|
132
139
|
```json
|
|
133
140
|
{
|
|
134
141
|
"name": "fetch-web-page",
|
|
@@ -138,10 +145,11 @@ npm install -g web-fetcher-mcp
|
|
|
138
145
|
}
|
|
139
146
|
}
|
|
140
147
|
```
|
|
148
|
+
</details>
|
|
141
149
|
|
|
142
150
|
---
|
|
143
151
|
|
|
144
|
-
###
|
|
152
|
+
### 2. focus-input-element
|
|
145
153
|
|
|
146
154
|
获取页面输入框焦点,支持通过 CSS 选择器定位元素。
|
|
147
155
|
|
|
@@ -150,97 +158,303 @@ npm install -g web-fetcher-mcp
|
|
|
150
158
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
151
159
|
|------|------|------|--------|------|
|
|
152
160
|
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
153
|
-
| selector | string | 是 | - | CSS
|
|
161
|
+
| selector | string | 是 | - | CSS 选择器 |
|
|
154
162
|
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
155
163
|
|
|
156
|
-
####
|
|
164
|
+
#### 示例
|
|
157
165
|
|
|
158
|
-
##### 通过 ID 获取焦点
|
|
159
166
|
```json
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
167
|
+
// 通过 ID
|
|
168
|
+
{ "selector": "#username" }
|
|
169
|
+
|
|
170
|
+
// 通过类名
|
|
171
|
+
{ "selector": ".search-input" }
|
|
172
|
+
|
|
173
|
+
// 通过属性
|
|
174
|
+
{ "selector": "input[name='email']" }
|
|
166
175
|
```
|
|
167
176
|
|
|
168
|
-
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
### 3. type-input-element
|
|
180
|
+
|
|
181
|
+
在指定的输入框中输入文本内容
|
|
182
|
+
|
|
183
|
+
#### 参数说明
|
|
184
|
+
|
|
185
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
186
|
+
|------|------|------|--------|------|
|
|
187
|
+
| selector | string | 是 | - | CSS 选择器 |
|
|
188
|
+
| text | string | 是 | - | 要输入的文本 |
|
|
189
|
+
| clearFirst | boolean | 否 | true | 是否先清空输入框 |
|
|
190
|
+
| pressEnter | boolean | 否 | false | 输入后是否按回车 |
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### 4. click-element
|
|
195
|
+
|
|
196
|
+
点击页面上的指定元素
|
|
197
|
+
|
|
198
|
+
#### 参数说明
|
|
199
|
+
|
|
200
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
201
|
+
|------|------|------|--------|------|
|
|
202
|
+
| selector | string | 是 | - | CSS 选择器 |
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### 5. capture-element
|
|
207
|
+
|
|
208
|
+
截取网页或指定元素的截图
|
|
209
|
+
|
|
210
|
+
#### 参数说明
|
|
211
|
+
|
|
212
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
213
|
+
|------|------|------|--------|------|
|
|
214
|
+
| selector | string | 否 | - | CSS 选择器,不传则全屏截图 |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
### 6. get-page-info
|
|
219
|
+
|
|
220
|
+
获取当前页面的信息(HTML骨架、文本内容等)
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### 7. open-devtools
|
|
225
|
+
|
|
226
|
+
打开浏览器开发者工具
|
|
227
|
+
|
|
228
|
+
#### 参数说明
|
|
229
|
+
|
|
230
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
231
|
+
|------|------|------|--------|------|
|
|
232
|
+
| mobileMode | boolean | 否 | false | 是否开启手机设备模拟模式 |
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### 8. get-console-logs
|
|
237
|
+
|
|
238
|
+
获取浏览器控制台日志
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
### 9. scroll-page
|
|
243
|
+
|
|
244
|
+
滚动页面到指定位置或元素
|
|
245
|
+
|
|
246
|
+
#### 参数说明
|
|
247
|
+
|
|
248
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
249
|
+
|------|------|------|--------|------|
|
|
250
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
251
|
+
| direction | string | 否 | 'down' | 滚动方向:up/down/left/right |
|
|
252
|
+
| amount | number | 否 | 500 | 滚动的像素量 |
|
|
253
|
+
| selector | string | 否 | - | CSS 选择器,提供后则滚动到该元素位置 |
|
|
254
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
255
|
+
|
|
256
|
+
#### 示例
|
|
257
|
+
|
|
169
258
|
```json
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
259
|
+
// 向下滚动 500px
|
|
260
|
+
{ "direction": "down", "amount": 500 }
|
|
261
|
+
|
|
262
|
+
// 滚动到指定元素
|
|
263
|
+
{ "selector": "#footer" }
|
|
176
264
|
```
|
|
177
265
|
|
|
178
|
-
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
### 10. wait-for-element
|
|
269
|
+
|
|
270
|
+
等待指定元素出现在页面上
|
|
271
|
+
|
|
272
|
+
#### 参数说明
|
|
273
|
+
|
|
274
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
275
|
+
|------|------|------|--------|------|
|
|
276
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
277
|
+
| selector | string | 是 | - | CSS 选择器 |
|
|
278
|
+
| timeout | number | 否 | 30000 | 超时时间(毫秒) |
|
|
279
|
+
| state | string | 否 | 'visible' | 等待状态:attached/visible/hidden |
|
|
280
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
281
|
+
|
|
282
|
+
#### 示例
|
|
283
|
+
|
|
179
284
|
```json
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
285
|
+
// 等待元素可见
|
|
286
|
+
{ "selector": ".result-item", "timeout": 10000 }
|
|
287
|
+
|
|
288
|
+
// 等待元素消失(如 loading)
|
|
289
|
+
{ "selector": ".loading", "state": "hidden" }
|
|
186
290
|
```
|
|
187
291
|
|
|
188
|
-
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
### 11. hover-element
|
|
295
|
+
|
|
296
|
+
鼠标悬停在指定元素上
|
|
297
|
+
|
|
298
|
+
#### 参数说明
|
|
299
|
+
|
|
300
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
301
|
+
|------|------|------|--------|------|
|
|
302
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
303
|
+
| selector | string | 是 | - | CSS 选择器 |
|
|
304
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
305
|
+
|
|
306
|
+
#### 示例
|
|
307
|
+
|
|
189
308
|
```json
|
|
190
|
-
{
|
|
191
|
-
"name": "focus-input-element",
|
|
192
|
-
"arguments": {
|
|
193
|
-
"url": "https://example.com/login",
|
|
194
|
-
"selector": "#password"
|
|
195
|
-
}
|
|
196
|
-
}
|
|
309
|
+
{ "selector": ".dropdown-trigger" }
|
|
197
310
|
```
|
|
198
311
|
|
|
199
|
-
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
### 12. get-element-attributes
|
|
200
315
|
|
|
201
|
-
|
|
316
|
+
获取页面元素的属性值
|
|
317
|
+
|
|
318
|
+
#### 参数说明
|
|
319
|
+
|
|
320
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
321
|
+
|------|------|------|--------|------|
|
|
322
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
323
|
+
| selector | string | 是 | - | CSS 选择器 |
|
|
324
|
+
| attributes | string[] | 否 | [] | 要获取的属性名列表,为空则获取所有属性 |
|
|
325
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
326
|
+
|
|
327
|
+
#### 示例
|
|
328
|
+
|
|
329
|
+
```json
|
|
330
|
+
// 获取所有属性
|
|
331
|
+
{ "selector": "#my-link" }
|
|
332
|
+
|
|
333
|
+
// 获取指定属性
|
|
334
|
+
{ "selector": "#my-link", "attributes": ["href", "data-id", "class"] }
|
|
202
335
|
```
|
|
203
|
-
✅ 成功获取焦点!
|
|
204
336
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
### 13. select-option
|
|
340
|
+
|
|
341
|
+
选择下拉菜单的选项,支持原生 select 和常见 UI 框架自定义下拉
|
|
342
|
+
|
|
343
|
+
#### 参数说明
|
|
344
|
+
|
|
345
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
346
|
+
|------|------|------|--------|------|
|
|
347
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
348
|
+
| selector | string | 是 | - | CSS 选择器,指向 select 元素或自定义下拉触发元素 |
|
|
349
|
+
| value | string | 否 | - | 按 option 的 value 属性选择 |
|
|
350
|
+
| label | string | 否 | - | 按 option 的显示文本选择 |
|
|
351
|
+
| index | number | 否 | - | 按索引选择(从 0 开始) |
|
|
352
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
353
|
+
|
|
354
|
+
#### 示例
|
|
355
|
+
|
|
356
|
+
```json
|
|
357
|
+
// 按 value 选择
|
|
358
|
+
{ "selector": "#country", "value": "cn" }
|
|
359
|
+
|
|
360
|
+
// 按显示文本选择
|
|
361
|
+
{ "selector": "#country", "label": "中国" }
|
|
362
|
+
|
|
363
|
+
// 按索引选择
|
|
364
|
+
{ "selector": "#country", "index": 0 }
|
|
213
365
|
```
|
|
214
366
|
|
|
215
|
-
|
|
367
|
+
---
|
|
216
368
|
|
|
217
|
-
|
|
218
|
-
- **图片存储位置**: `~/.web-fetcher-mcp/images/`
|
|
369
|
+
### 14. navigate-history
|
|
219
370
|
|
|
220
|
-
|
|
371
|
+
浏览器前进或后退导航
|
|
221
372
|
|
|
222
|
-
|
|
223
|
-
- Google Chrome 浏览器
|
|
373
|
+
#### 参数说明
|
|
224
374
|
|
|
225
|
-
|
|
375
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
376
|
+
|------|------|------|--------|------|
|
|
377
|
+
| direction | string | 否 | 'back' | 导航方向:back(后退) / forward(前进) |
|
|
226
378
|
|
|
227
|
-
|
|
228
|
-
# 安装依赖
|
|
229
|
-
npm install
|
|
379
|
+
#### 示例
|
|
230
380
|
|
|
231
|
-
|
|
232
|
-
|
|
381
|
+
```json
|
|
382
|
+
// 后退
|
|
383
|
+
{ "direction": "back" }
|
|
233
384
|
|
|
234
|
-
|
|
235
|
-
|
|
385
|
+
// 前进
|
|
386
|
+
{ "direction": "forward" }
|
|
236
387
|
```
|
|
237
388
|
|
|
238
|
-
|
|
389
|
+
---
|
|
239
390
|
|
|
240
|
-
|
|
391
|
+
### 15. upload-file
|
|
241
392
|
|
|
242
|
-
|
|
243
|
-
|
|
393
|
+
上传文件到页面上的文件输入框
|
|
394
|
+
|
|
395
|
+
#### 参数说明
|
|
396
|
+
|
|
397
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
398
|
+
|------|------|------|--------|------|
|
|
399
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
400
|
+
| selector | string | 是 | - | CSS 选择器,指向 input[type="file"] 元素 |
|
|
401
|
+
| filePath | string | 是 | - | 要上传的文件的绝对路径 |
|
|
402
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
403
|
+
|
|
404
|
+
#### 示例
|
|
405
|
+
|
|
406
|
+
```json
|
|
407
|
+
{
|
|
408
|
+
"selector": "input[type='file']",
|
|
409
|
+
"filePath": "C:/Users/test/document.pdf"
|
|
410
|
+
}
|
|
244
411
|
```
|
|
245
412
|
|
|
246
|
-
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
### 16. execute-js
|
|
416
|
+
|
|
417
|
+
在页面中执行任意 JavaScript 代码并返回结果。可以用于执行复杂的 DOM 操作、获取数据、调用页面上的函数等。
|
|
418
|
+
|
|
419
|
+
#### 参数说明
|
|
420
|
+
|
|
421
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
422
|
+
|------|------|------|--------|------|
|
|
423
|
+
| url | string | 否 | 'current' | 网页 URL,使用 'current' 则操作当前已打开的页面 |
|
|
424
|
+
| script | string | 是 | - | 要执行的 JavaScript 代码 |
|
|
425
|
+
| useExistingPage | boolean | 否 | true | 是否使用已存在的页面 |
|
|
426
|
+
|
|
427
|
+
#### 示例
|
|
428
|
+
|
|
429
|
+
```json
|
|
430
|
+
// 点击元素
|
|
431
|
+
{ "script": "document.getElementById('btn').click()" }
|
|
432
|
+
|
|
433
|
+
// 获取元素文本
|
|
434
|
+
{ "script": "document.querySelector('.title').textContent" }
|
|
435
|
+
|
|
436
|
+
// 滚动到底部
|
|
437
|
+
{ "script": "window.scrollTo(0, document.body.scrollHeight)" }
|
|
438
|
+
|
|
439
|
+
// 获取所有链接
|
|
440
|
+
{ "script": "Array.from(document.querySelectorAll('a')).map(a => ({text: a.textContent, href: a.href}))" }
|
|
441
|
+
|
|
442
|
+
// 修改元素样式
|
|
443
|
+
{ "script": "document.body.style.backgroundColor = 'lightblue'" }
|
|
444
|
+
|
|
445
|
+
// 获取页面数据
|
|
446
|
+
{ "script": "JSON.stringify({title: document.title, url: location.href, cookies: document.cookie})" }
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## 数据存储
|
|
452
|
+
|
|
453
|
+
| 数据类型 | 存储位置 |
|
|
454
|
+
|----------|----------|
|
|
455
|
+
| Cookie | `~/.web-fetcher-mcp/cookies.json` |
|
|
456
|
+
| 图片 | `~/.web-fetcher-mcp/images/` |
|
|
457
|
+
|
|
458
|
+
## License
|
|
459
|
+
|
|
460
|
+
MIT
|