veddata 0.1.0__tar.gz
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.
- veddata-0.1.0/LICENSE +21 -0
- veddata-0.1.0/PKG-INFO +198 -0
- veddata-0.1.0/README.md +169 -0
- veddata-0.1.0/pyproject.toml +51 -0
- veddata-0.1.0/setup.cfg +4 -0
- veddata-0.1.0/src/veddata/__init__.py +15 -0
- veddata-0.1.0/src/veddata/browser.py +364 -0
- veddata-0.1.0/src/veddata/chromium.py +321 -0
- veddata-0.1.0/src/veddata/dom.py +298 -0
- veddata-0.1.0/src/veddata/downloads.py +193 -0
- veddata-0.1.0/src/veddata/export.py +221 -0
- veddata-0.1.0/src/veddata/gate.py +173 -0
- veddata-0.1.0/src/veddata/limits.py +188 -0
- veddata-0.1.0/src/veddata/naming.py +111 -0
- veddata-0.1.0/src/veddata/network_monitor.py +565 -0
- veddata-0.1.0/src/veddata/observation.py +181 -0
- veddata-0.1.0/src/veddata/paths.py +131 -0
- veddata-0.1.0/src/veddata/requester.py +129 -0
- veddata-0.1.0/src/veddata/scripts.py +167 -0
- veddata-0.1.0/src/veddata/server.py +113 -0
- veddata-0.1.0/src/veddata/state.py +76 -0
- veddata-0.1.0/src/veddata/tools/__init__.py +0 -0
- veddata-0.1.0/src/veddata/tools/act.py +207 -0
- veddata-0.1.0/src/veddata/tools/chain.py +372 -0
- veddata-0.1.0/src/veddata/tools/chain_tool.py +80 -0
- veddata-0.1.0/src/veddata/tools/discover.py +936 -0
- veddata-0.1.0/src/veddata/tools/navigate.py +389 -0
- veddata-0.1.0/src/veddata/tools/observe.py +402 -0
- veddata-0.1.0/src/veddata/tools/scan.py +172 -0
- veddata-0.1.0/src/veddata/watch_engine.py +359 -0
- veddata-0.1.0/src/veddata/watch_policy.py +106 -0
- veddata-0.1.0/src/veddata.egg-info/PKG-INFO +198 -0
- veddata-0.1.0/src/veddata.egg-info/SOURCES.txt +52 -0
- veddata-0.1.0/src/veddata.egg-info/dependency_links.txt +1 -0
- veddata-0.1.0/src/veddata.egg-info/entry_points.txt +2 -0
- veddata-0.1.0/src/veddata.egg-info/requires.txt +6 -0
- veddata-0.1.0/src/veddata.egg-info/top_level.txt +1 -0
- veddata-0.1.0/tests/test_act_selector.py +87 -0
- veddata-0.1.0/tests/test_chain.py +177 -0
- veddata-0.1.0/tests/test_chromium.py +102 -0
- veddata-0.1.0/tests/test_chromium_cleanup.py +93 -0
- veddata-0.1.0/tests/test_download_dir_edges.py +56 -0
- veddata-0.1.0/tests/test_downloads.py +107 -0
- veddata-0.1.0/tests/test_gate.py +120 -0
- veddata-0.1.0/tests/test_limits.py +137 -0
- veddata-0.1.0/tests/test_naming.py +62 -0
- veddata-0.1.0/tests/test_observation.py +71 -0
- veddata-0.1.0/tests/test_paths.py +161 -0
- veddata-0.1.0/tests/test_reporting_tails.py +36 -0
- veddata-0.1.0/tests/test_scripts_lazy_debugger.py +55 -0
- veddata-0.1.0/tests/test_scripts_source_order.py +97 -0
- veddata-0.1.0/tests/test_tools_smoke.py +47 -0
- veddata-0.1.0/tests/test_watch_engine.py +237 -0
- veddata-0.1.0/tests/test_watch_policy.py +89 -0
veddata-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ShanZhi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
veddata-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: veddata
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: MCP server for web API & DOM discovery
|
|
5
|
+
Author-email: ShanZhi <SanZiNEO@outlook.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/SanZiNEO/veddata
|
|
8
|
+
Project-URL: Repository, https://github.com/SanZiNEO/veddata.git
|
|
9
|
+
Project-URL: Issues, https://github.com/SanZiNEO/veddata/issues
|
|
10
|
+
Keywords: mcp,scraping,web,api-discovery,automation
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: playwright>=1.48
|
|
24
|
+
Requires-Dist: httpx>=0.27
|
|
25
|
+
Requires-Dist: fastmcp>=2.0
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# 斥候(veddata)
|
|
31
|
+
|
|
32
|
+
一个模型上下文协议(MCP)服务器:在网页上做数据源发现 —— 捕获网络请求、提取内嵌数据、分析脚本,并通过交互与监测点跟踪数据流向。
|
|
33
|
+
|
|
34
|
+
[English](README.en.md)
|
|
35
|
+
|
|
36
|
+
## 功能
|
|
37
|
+
|
|
38
|
+
- **网络数据源**:页面发出的全部请求与响应,按接口归并并给出字段结构
|
|
39
|
+
- **内嵌数据**:`<script>` 标签里的 JSON 与 `window` 全局变量
|
|
40
|
+
- **脚本分析**:列出与搜索已加载脚本、读取源码、追踪一个值出现在哪些位置
|
|
41
|
+
- **交互**:点击、输入、选择、滚动,按可见文本或 `css=`、`//`(XPath)选择器定位
|
|
42
|
+
- **监测点**:请求监测(匹配到指定模式即记录)与 JS 断点监测(命中时抓取作用域变量快照)
|
|
43
|
+
- **文档结构**:DOM 树快照、关键词定位、按路径定位,全部在服务端内存中完成
|
|
44
|
+
- **工具链**:一次调用顺序执行多个工具(支持等待与重复),并为每个动作给出因果差分
|
|
45
|
+
- **页面事实**:地址、标题、正文长度、关键词命中的原文片段、可见与隐藏的组件
|
|
46
|
+
- **下载**:发生下载时在消息中给出文件名、保存路径、状态与大小
|
|
47
|
+
- **服务端留存**:结果留在服务端,返回压缩摘要,明细随时按需获取
|
|
48
|
+
|
|
49
|
+
## 环境要求
|
|
50
|
+
|
|
51
|
+
- Python 3.10 及以上
|
|
52
|
+
- Chrome 或 Edge(默认以有窗口模式启动,并使用持久化配置目录保留登录状态)
|
|
53
|
+
|
|
54
|
+
## 快速开始
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
uv venv
|
|
58
|
+
uv pip install -e ".[dev]"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
客户端配置(标准输入输出):
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"mcpServers": {
|
|
66
|
+
"veddata": {
|
|
67
|
+
"command": "E:\\path\\to\\veddata\\.venv\\Scripts\\python.exe",
|
|
68
|
+
"args": ["-m", "veddata.server",
|
|
69
|
+
"--profile-dir", "E:\\path\\to\\profile",
|
|
70
|
+
"--response-dir", "E:\\path\\to\\out"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 配置项
|
|
77
|
+
|
|
78
|
+
| 参数 | 说明 |
|
|
79
|
+
|------|------|
|
|
80
|
+
| `--profile-dir <目录>` | 浏览器配置目录(持久化,保留登录状态)。默认 `<用户数据根>/veddata/profile` |
|
|
81
|
+
| `--response-dir <目录>` | `ved_export`、`ved_screenshot` 的落盘目录。未配置时这两个工具在写盘时报错 |
|
|
82
|
+
|
|
83
|
+
| 环境变量 | 说明 |
|
|
84
|
+
|----------|------|
|
|
85
|
+
| `HEADLESS=true` | 无窗口模式(默认为有窗口) |
|
|
86
|
+
| `BROWSER_PATH <路径>` | 指定浏览器可执行文件(填 `edge` 表示使用 Edge) |
|
|
87
|
+
| `BROWSER_ADDRESS <地址>` | 接管已在运行的浏览器(调试协议地址),而不是自行启动 |
|
|
88
|
+
|
|
89
|
+
## 工具
|
|
90
|
+
|
|
91
|
+
### 会话与标签页
|
|
92
|
+
|
|
93
|
+
- **ved_open** — 启动会话(自行启动一个普通 Chrome 并通过调试协议接管)
|
|
94
|
+
- **ved_status** — 当前页面事实、标签页清单、已捕获条数、状态账本
|
|
95
|
+
- **ved_tabs**、**ved_tab_switch**、**ved_tab_close** — 标签页清单、切换、关闭
|
|
96
|
+
- **ved_close** — 关闭浏览器并清空捕获数据
|
|
97
|
+
|
|
98
|
+
### 导航与读取
|
|
99
|
+
|
|
100
|
+
- **ved_goto** — 导航,返回文档结构、数据源预览与页面事实
|
|
101
|
+
- **ved_fetch** — 取当前页正文(分页)
|
|
102
|
+
- **ved_dom_tree**、**ved_dom_search**、**ved_dom_locate** — 树快照、关键词、路径
|
|
103
|
+
- **ved_console** — 执行 JS 或读取控制台消息
|
|
104
|
+
- **ved_cookies**、**ved_screenshot** — cookie 与截图落盘
|
|
105
|
+
|
|
106
|
+
### 交互
|
|
107
|
+
|
|
108
|
+
- **ved_act** — `input`、`click`、`select`、`scroll`;可单步或链式;`target` 支持可见文本、`css=` 或 `//`
|
|
109
|
+
|
|
110
|
+
### 数据源
|
|
111
|
+
|
|
112
|
+
- **ved_apis**、**ved_inspect** — 捕获清单与单条详情(请求头、响应体、字段结构)
|
|
113
|
+
- **ved_export**、**ved_export_all** — 导出到磁盘(原始或精简)
|
|
114
|
+
- **ved_peek** — 打开网址并直接返回数据源清单
|
|
115
|
+
- **ved_request** — 重放已捕获的接口或发送自定义请求(自动带上 cookie)
|
|
116
|
+
- **ved_search**、**ved_context**、**ved_trace_value** — 跨网络、内嵌、脚本、全局变量的搜索与追踪
|
|
117
|
+
|
|
118
|
+
### 脚本
|
|
119
|
+
|
|
120
|
+
- **ved_list_scripts**、**ved_search_scripts**、**ved_script_source** — 清单、搜索、源码
|
|
121
|
+
|
|
122
|
+
### 监测点
|
|
123
|
+
|
|
124
|
+
- **ved_watch** — 注册、列表、收集、删除;分为请求与 JS 两类;命中快照留在服务端
|
|
125
|
+
|
|
126
|
+
### 扫描
|
|
127
|
+
|
|
128
|
+
- **ved_scan** — 一次性汇总网络、文档结构与内嵌数据
|
|
129
|
+
|
|
130
|
+
### 工具链
|
|
131
|
+
|
|
132
|
+
- **ved_chain** — 顺序执行多个工具;等待支持毫秒、网络命中、网络静默、元素可见性;重复块支持一层
|
|
133
|
+
|
|
134
|
+
## 行为说明
|
|
135
|
+
|
|
136
|
+
- **只陈述事实**:输出说明有什么,不含判断与下一步提示;页面状态以地址、标题、正文长度、关键词命中片段、可见组件等事实呈现。
|
|
137
|
+
- **结果留在服务端**:返回压缩摘要与分页页脚,明细用 `ved_apis`、`ved_inspect`、`ved_watch(collect)` 等按需获取。
|
|
138
|
+
- **状态观测**:发生在工具之外的变化(页面自行跳转、标签页增删)之后,依赖活状态的工具会返回一条事实说明而不执行;`ved_status`、`ved_tabs` 会重新建立观测。
|
|
139
|
+
- **人机协作**:界面可见,登录或验证由用户在窗口中完成;工具照实报告当前页面事实。
|
|
140
|
+
- **浏览器生命周期**:自行启动的浏览器由 `ved_close` 关闭;通过 `BROWSER_ADDRESS` 接管的仅断开连接。
|
|
141
|
+
|
|
142
|
+
发布到 PyPI 之后,也可以直接运行,不用克隆仓库:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"mcpServers": {
|
|
147
|
+
"veddata": {
|
|
148
|
+
"command": "uvx",
|
|
149
|
+
"args": ["veddata", "--response-dir", "E:\\path\\to\\out"]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## 示例:没有接口文档的站点,怎么拿到下载直链
|
|
156
|
+
|
|
157
|
+
以 svgrepo 为例(该站点没有公开接口文档,AI 只能自己侦察)。一条工具链跑完:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
[
|
|
161
|
+
{"tool": "ved_open"},
|
|
162
|
+
{"tool": "ved_goto", "args": {"url": "https://www.svgrepo.com/vectors/arrow/"}},
|
|
163
|
+
{"tool": "ved_goto", "args": {"url": "https://www.svgrepo.com/svg/535197/arrow-u-up-left"}},
|
|
164
|
+
{"tool": "ved_act", "args": {"action": "click", "target": "css=a[href*='/download/']"}}
|
|
165
|
+
]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
消息里直接给出事实(动作、因果、落盘位置):
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
[click] Clicked 'css=a[href*='/download/']' → +1 new APIs
|
|
172
|
+
GET https://www.svgrepo.com/_next/data/XJiZPe18H5paekHV…/tools.json
|
|
173
|
+
download: arrow-u-up-left-svgrepo-com.svg → E:\Downloads\arrow-u-up-left-svgrepo-com.svg (completed, 399 B)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 开发
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
pytest tests -q
|
|
180
|
+
python scripts/smoke.py
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 许可
|
|
184
|
+
|
|
185
|
+
MIT License,详见 [LICENSE](LICENSE)。
|
|
186
|
+
|
|
187
|
+
## 免责声明
|
|
188
|
+
|
|
189
|
+
本项目仅用于学习、研究、技术交流与合法合规的自动化测试,**不得用于任何违法、侵权或违背公序良俗的用途**。使用前请完整阅读本声明;**下载、安装、运行或以任何方式使用本项目,即视为已阅读、理解并同意本声明的全部内容**。如不同意,请立即停止使用并删除本项目。
|
|
190
|
+
|
|
191
|
+
1. **合规责任由使用者自负**。使用者应自行确认并遵守:目标网站的服务条款、`robots.txt` 与使用规则;所在国家或地区的法律法规(包括但不限于网络安全、数据安全、个人信息保护、著作权、反不正当竞争、计算机信息系统相关法律);以及任何适用的行业规范与合同约定。
|
|
192
|
+
2. **禁止用途**。不得用于:未经授权访问、干扰或破坏他人系统与数据;绕过技术保护措施或访问控制;大规模抓取、囤积或转售他人数据;侵犯他人知识产权、商业秘密或个人隐私;任何形式的欺诈、骚扰、垃圾信息或其他恶意行为。
|
|
193
|
+
3. **风险自担**。使用本项目可能导致账号被封禁、访问受限、服务中断、数据丢失或其他损失,上述风险与后果由使用者自行承担。
|
|
194
|
+
4. **无担保**。本项目按「原样」(AS IS)提供,作者不对其适用性、可靠性、准确性、安全性或不侵权作出任何明示或默示的担保,也不承诺任何功能可用、持续可用或不会被目标站点检测。
|
|
195
|
+
5. **责任限制**。在适用法律允许的最大范围内,作者与贡献者不对因使用或无法使用本项目而产生的任何直接、间接、附带、特殊、惩罚性或后果性损害(包括但不限于利润损失、数据丢失、业务中断、第三方索赔、行政处罚或法律责任)承担任何责任。
|
|
196
|
+
6. **不构成法律意见**。本项目不提供任何法律意见或合规承诺;涉及合规判断请咨询专业律师。
|
|
197
|
+
7. **对第三方的主张由使用者承担**。因使用者的行为引发的任何第三方主张、争议、投诉或索赔,由使用者自行处理并承担全部责任,与作者及贡献者无关。
|
|
198
|
+
8. **权利保留**。作者保留随时修改、暂停或终止本项目的权利,且无需事先通知;本声明亦可随时更新,更新后的版本自发布之日起生效。
|
veddata-0.1.0/README.md
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# 斥候(veddata)
|
|
2
|
+
|
|
3
|
+
一个模型上下文协议(MCP)服务器:在网页上做数据源发现 —— 捕获网络请求、提取内嵌数据、分析脚本,并通过交互与监测点跟踪数据流向。
|
|
4
|
+
|
|
5
|
+
[English](README.en.md)
|
|
6
|
+
|
|
7
|
+
## 功能
|
|
8
|
+
|
|
9
|
+
- **网络数据源**:页面发出的全部请求与响应,按接口归并并给出字段结构
|
|
10
|
+
- **内嵌数据**:`<script>` 标签里的 JSON 与 `window` 全局变量
|
|
11
|
+
- **脚本分析**:列出与搜索已加载脚本、读取源码、追踪一个值出现在哪些位置
|
|
12
|
+
- **交互**:点击、输入、选择、滚动,按可见文本或 `css=`、`//`(XPath)选择器定位
|
|
13
|
+
- **监测点**:请求监测(匹配到指定模式即记录)与 JS 断点监测(命中时抓取作用域变量快照)
|
|
14
|
+
- **文档结构**:DOM 树快照、关键词定位、按路径定位,全部在服务端内存中完成
|
|
15
|
+
- **工具链**:一次调用顺序执行多个工具(支持等待与重复),并为每个动作给出因果差分
|
|
16
|
+
- **页面事实**:地址、标题、正文长度、关键词命中的原文片段、可见与隐藏的组件
|
|
17
|
+
- **下载**:发生下载时在消息中给出文件名、保存路径、状态与大小
|
|
18
|
+
- **服务端留存**:结果留在服务端,返回压缩摘要,明细随时按需获取
|
|
19
|
+
|
|
20
|
+
## 环境要求
|
|
21
|
+
|
|
22
|
+
- Python 3.10 及以上
|
|
23
|
+
- Chrome 或 Edge(默认以有窗口模式启动,并使用持久化配置目录保留登录状态)
|
|
24
|
+
|
|
25
|
+
## 快速开始
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
uv venv
|
|
29
|
+
uv pip install -e ".[dev]"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
客户端配置(标准输入输出):
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"mcpServers": {
|
|
37
|
+
"veddata": {
|
|
38
|
+
"command": "E:\\path\\to\\veddata\\.venv\\Scripts\\python.exe",
|
|
39
|
+
"args": ["-m", "veddata.server",
|
|
40
|
+
"--profile-dir", "E:\\path\\to\\profile",
|
|
41
|
+
"--response-dir", "E:\\path\\to\\out"]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 配置项
|
|
48
|
+
|
|
49
|
+
| 参数 | 说明 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| `--profile-dir <目录>` | 浏览器配置目录(持久化,保留登录状态)。默认 `<用户数据根>/veddata/profile` |
|
|
52
|
+
| `--response-dir <目录>` | `ved_export`、`ved_screenshot` 的落盘目录。未配置时这两个工具在写盘时报错 |
|
|
53
|
+
|
|
54
|
+
| 环境变量 | 说明 |
|
|
55
|
+
|----------|------|
|
|
56
|
+
| `HEADLESS=true` | 无窗口模式(默认为有窗口) |
|
|
57
|
+
| `BROWSER_PATH <路径>` | 指定浏览器可执行文件(填 `edge` 表示使用 Edge) |
|
|
58
|
+
| `BROWSER_ADDRESS <地址>` | 接管已在运行的浏览器(调试协议地址),而不是自行启动 |
|
|
59
|
+
|
|
60
|
+
## 工具
|
|
61
|
+
|
|
62
|
+
### 会话与标签页
|
|
63
|
+
|
|
64
|
+
- **ved_open** — 启动会话(自行启动一个普通 Chrome 并通过调试协议接管)
|
|
65
|
+
- **ved_status** — 当前页面事实、标签页清单、已捕获条数、状态账本
|
|
66
|
+
- **ved_tabs**、**ved_tab_switch**、**ved_tab_close** — 标签页清单、切换、关闭
|
|
67
|
+
- **ved_close** — 关闭浏览器并清空捕获数据
|
|
68
|
+
|
|
69
|
+
### 导航与读取
|
|
70
|
+
|
|
71
|
+
- **ved_goto** — 导航,返回文档结构、数据源预览与页面事实
|
|
72
|
+
- **ved_fetch** — 取当前页正文(分页)
|
|
73
|
+
- **ved_dom_tree**、**ved_dom_search**、**ved_dom_locate** — 树快照、关键词、路径
|
|
74
|
+
- **ved_console** — 执行 JS 或读取控制台消息
|
|
75
|
+
- **ved_cookies**、**ved_screenshot** — cookie 与截图落盘
|
|
76
|
+
|
|
77
|
+
### 交互
|
|
78
|
+
|
|
79
|
+
- **ved_act** — `input`、`click`、`select`、`scroll`;可单步或链式;`target` 支持可见文本、`css=` 或 `//`
|
|
80
|
+
|
|
81
|
+
### 数据源
|
|
82
|
+
|
|
83
|
+
- **ved_apis**、**ved_inspect** — 捕获清单与单条详情(请求头、响应体、字段结构)
|
|
84
|
+
- **ved_export**、**ved_export_all** — 导出到磁盘(原始或精简)
|
|
85
|
+
- **ved_peek** — 打开网址并直接返回数据源清单
|
|
86
|
+
- **ved_request** — 重放已捕获的接口或发送自定义请求(自动带上 cookie)
|
|
87
|
+
- **ved_search**、**ved_context**、**ved_trace_value** — 跨网络、内嵌、脚本、全局变量的搜索与追踪
|
|
88
|
+
|
|
89
|
+
### 脚本
|
|
90
|
+
|
|
91
|
+
- **ved_list_scripts**、**ved_search_scripts**、**ved_script_source** — 清单、搜索、源码
|
|
92
|
+
|
|
93
|
+
### 监测点
|
|
94
|
+
|
|
95
|
+
- **ved_watch** — 注册、列表、收集、删除;分为请求与 JS 两类;命中快照留在服务端
|
|
96
|
+
|
|
97
|
+
### 扫描
|
|
98
|
+
|
|
99
|
+
- **ved_scan** — 一次性汇总网络、文档结构与内嵌数据
|
|
100
|
+
|
|
101
|
+
### 工具链
|
|
102
|
+
|
|
103
|
+
- **ved_chain** — 顺序执行多个工具;等待支持毫秒、网络命中、网络静默、元素可见性;重复块支持一层
|
|
104
|
+
|
|
105
|
+
## 行为说明
|
|
106
|
+
|
|
107
|
+
- **只陈述事实**:输出说明有什么,不含判断与下一步提示;页面状态以地址、标题、正文长度、关键词命中片段、可见组件等事实呈现。
|
|
108
|
+
- **结果留在服务端**:返回压缩摘要与分页页脚,明细用 `ved_apis`、`ved_inspect`、`ved_watch(collect)` 等按需获取。
|
|
109
|
+
- **状态观测**:发生在工具之外的变化(页面自行跳转、标签页增删)之后,依赖活状态的工具会返回一条事实说明而不执行;`ved_status`、`ved_tabs` 会重新建立观测。
|
|
110
|
+
- **人机协作**:界面可见,登录或验证由用户在窗口中完成;工具照实报告当前页面事实。
|
|
111
|
+
- **浏览器生命周期**:自行启动的浏览器由 `ved_close` 关闭;通过 `BROWSER_ADDRESS` 接管的仅断开连接。
|
|
112
|
+
|
|
113
|
+
发布到 PyPI 之后,也可以直接运行,不用克隆仓库:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"mcpServers": {
|
|
118
|
+
"veddata": {
|
|
119
|
+
"command": "uvx",
|
|
120
|
+
"args": ["veddata", "--response-dir", "E:\\path\\to\\out"]
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 示例:没有接口文档的站点,怎么拿到下载直链
|
|
127
|
+
|
|
128
|
+
以 svgrepo 为例(该站点没有公开接口文档,AI 只能自己侦察)。一条工具链跑完:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
[
|
|
132
|
+
{"tool": "ved_open"},
|
|
133
|
+
{"tool": "ved_goto", "args": {"url": "https://www.svgrepo.com/vectors/arrow/"}},
|
|
134
|
+
{"tool": "ved_goto", "args": {"url": "https://www.svgrepo.com/svg/535197/arrow-u-up-left"}},
|
|
135
|
+
{"tool": "ved_act", "args": {"action": "click", "target": "css=a[href*='/download/']"}}
|
|
136
|
+
]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
消息里直接给出事实(动作、因果、落盘位置):
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
[click] Clicked 'css=a[href*='/download/']' → +1 new APIs
|
|
143
|
+
GET https://www.svgrepo.com/_next/data/XJiZPe18H5paekHV…/tools.json
|
|
144
|
+
download: arrow-u-up-left-svgrepo-com.svg → E:\Downloads\arrow-u-up-left-svgrepo-com.svg (completed, 399 B)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 开发
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
pytest tests -q
|
|
151
|
+
python scripts/smoke.py
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 许可
|
|
155
|
+
|
|
156
|
+
MIT License,详见 [LICENSE](LICENSE)。
|
|
157
|
+
|
|
158
|
+
## 免责声明
|
|
159
|
+
|
|
160
|
+
本项目仅用于学习、研究、技术交流与合法合规的自动化测试,**不得用于任何违法、侵权或违背公序良俗的用途**。使用前请完整阅读本声明;**下载、安装、运行或以任何方式使用本项目,即视为已阅读、理解并同意本声明的全部内容**。如不同意,请立即停止使用并删除本项目。
|
|
161
|
+
|
|
162
|
+
1. **合规责任由使用者自负**。使用者应自行确认并遵守:目标网站的服务条款、`robots.txt` 与使用规则;所在国家或地区的法律法规(包括但不限于网络安全、数据安全、个人信息保护、著作权、反不正当竞争、计算机信息系统相关法律);以及任何适用的行业规范与合同约定。
|
|
163
|
+
2. **禁止用途**。不得用于:未经授权访问、干扰或破坏他人系统与数据;绕过技术保护措施或访问控制;大规模抓取、囤积或转售他人数据;侵犯他人知识产权、商业秘密或个人隐私;任何形式的欺诈、骚扰、垃圾信息或其他恶意行为。
|
|
164
|
+
3. **风险自担**。使用本项目可能导致账号被封禁、访问受限、服务中断、数据丢失或其他损失,上述风险与后果由使用者自行承担。
|
|
165
|
+
4. **无担保**。本项目按「原样」(AS IS)提供,作者不对其适用性、可靠性、准确性、安全性或不侵权作出任何明示或默示的担保,也不承诺任何功能可用、持续可用或不会被目标站点检测。
|
|
166
|
+
5. **责任限制**。在适用法律允许的最大范围内,作者与贡献者不对因使用或无法使用本项目而产生的任何直接、间接、附带、特殊、惩罚性或后果性损害(包括但不限于利润损失、数据丢失、业务中断、第三方索赔、行政处罚或法律责任)承担任何责任。
|
|
167
|
+
6. **不构成法律意见**。本项目不提供任何法律意见或合规承诺;涉及合规判断请咨询专业律师。
|
|
168
|
+
7. **对第三方的主张由使用者承担**。因使用者的行为引发的任何第三方主张、争议、投诉或索赔,由使用者自行处理并承担全部责任,与作者及贡献者无关。
|
|
169
|
+
8. **权利保留**。作者保留随时修改、暂停或终止本项目的权利,且无需事先通知;本声明亦可随时更新,更新后的版本自发布之日起生效。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "veddata"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "MCP server for web API & DOM discovery"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "ShanZhi", email = "SanZiNEO@outlook.com"},
|
|
14
|
+
]
|
|
15
|
+
keywords = ["mcp", "scraping", "web", "api-discovery", "automation"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
25
|
+
"Topic :: Software Development :: Libraries",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
dependencies = [
|
|
29
|
+
"playwright>=1.48",
|
|
30
|
+
"httpx>=0.27",
|
|
31
|
+
"fastmcp>=2.0",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
[project.optional-dependencies]
|
|
35
|
+
dev = [
|
|
36
|
+
"pytest>=7.0",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Homepage = "https://github.com/SanZiNEO/veddata"
|
|
41
|
+
Repository = "https://github.com/SanZiNEO/veddata.git"
|
|
42
|
+
Issues = "https://github.com/SanZiNEO/veddata/issues"
|
|
43
|
+
|
|
44
|
+
[project.scripts]
|
|
45
|
+
veddata = "veddata.server:main"
|
|
46
|
+
|
|
47
|
+
[tool.setuptools.package-dir]
|
|
48
|
+
"" = "src"
|
|
49
|
+
|
|
50
|
+
[tool.setuptools.packages.find]
|
|
51
|
+
where = ["src"]
|
veddata-0.1.0/setup.cfg
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""veddata(斥候)— 给 AI 用的网页数据源发现的 MCP 服务。
|
|
2
|
+
|
|
3
|
+
中文名「斥候」取自古代军事侦察兵;英文名 veddata = ved(vedette,军事术语
|
|
4
|
+
"骑马斥候")+ data,表示"派出去把数据来源摸清楚"。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
# 单一真源:安装元数据(来自 pyproject.toml 的 version)
|
|
11
|
+
__version__ = version("veddata")
|
|
12
|
+
except PackageNotFoundError: # 未安装时(直接从源码运行)
|
|
13
|
+
__version__ = "1.0.0"
|
|
14
|
+
|
|
15
|
+
__all__ = ["__version__"]
|