关于 Svipall
Svipall 是面向 Agent 和开发者的本地 Rust MCP 服务与命令行工具,可获取、提取、搜索和抓取网页内容。它输出 Markdown 和结构化观察结果,并报告检测到的拦截及提取质量,无需第三方 API 密钥。
主要功能
- 01将网页提取为 Markdown
- 02按配置限制抓取网站
- 03无需 API 密钥进行搜索
- 04评估提取质量并报告拦截
- 05将列表和表格解析为行
- 06提供命令行和本地 REST API
适用场景
- 01阅读并总结带浏览器检测的网页
- 02将文档网站转换为 Markdown 语料
- 03收集列表或表格数据为行
- 04监测网页或 CSS 区域的变化
MCP 相关
它向 MCP 客户端提供网页获取、抓取、搜索、捕获、浏览器交互等工具。工具在本地处理网页内容,并报告检测到的挑战和提取质量标签。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
每道关卡,面孔各异。
在你自己的机器上运行,为 AI Agent 提供网页阅读能力。
这是一个用 Rust 编写的 MCP 服务和命令行工具,可将网页提取为 Markdown,
在配置的限制内抓取网站,无需 API 密钥即可搜索,
并尝试应对支持的挑战,然后明确说明哪些挑战无法通过。
安装 · 使用场景 · 验证 · 工具 · 验证码 · REST API · 对比 · 常见问题

根据同一台机器上的真实运行记录重放。记录方式与原始采集数据。
所有操作都在本地运行。没有第三方 API 密钥、付费验证码服务或遥测。 网页请求会发送到你访问的网站,结果则会发送给你连接的 Agent 或客户端。
Svipall 会在本地获取并渲染页面、提取内容,并报告检测到的挑战和内容提取质量标签。有些网站仍会拦截它,而看似成功的响应可能包含不完整记录或只有页面框架。因此,已发布的对比会单独审查有用内容,而不只看 HTTP 状态和工具自身的判断结果。
Why Svipall
| 遇到的问题 | Svipall |
|---|---|
你的 Agent 读到“正在检查浏览器”页面,并把它总结成文章内容。响应状态是 200,所以没有任何警示 | 十二种拦截类型,每种都说明了它意味着什么。检测到的拦截会附带明确判定;分类采用启发式方法 详情 |
| 你抓取了 5,000 个页面,却不知道哪些值得保留 | 经过评估的页面会附带质量和重复情况观察结果;质量标签绝不会丢弃页面 详情 |
| 一个页面的原始 HTML 就有 300,000 个 token。各种修复措施都变成了你现在必须手动完成的四项工作 | 默认输出干净的 Markdown;也可以选择将表格输出为行、通过 out_file 写入磁盘,或抓取网站自己的 JSON API 详情 |
| 你想尝试破解受支持的验证码,但不想使用付费求解服务 | 支持十五种小组件系列和十一种应答方式,全部在本地运行;根据构建版本,可选用视觉模型;还有人工处理未解决挑战的控制面板 详情 |
记录成功访问、失败、不完整提取和被拒绝的更改。历史基准测试日志与当前比较采用不同的评分规则和配置; 结果部分对此作了区分。
Rust · MCP + CLI + REST · 无需 Node、Python 或 API 密钥 · 本地存储与处理
对比表介绍了其他项目文档所述的功能范围。
安装
以下每种方式都会安装最新的发布版本,
该版本由本 README 所描述的代码库构建。svipall doctor 会报告已安装的构建版本在当前机器上的功能。
README 事实核查 记录了本次审查所做的源代码检查、文档更正和审查范围限制。
可选择由 Agent 协助设置、安装 Claude Code 插件,或手动安装。
请你已有的 Agent 协助
将以下内容粘贴到 Claude Code、Cursor、Codex、opencode,或任何能够运行命令的工具中:
Install and configure Svipall by following the instructions here:
https://raw.githubusercontent.com/ilien-dev/svipall/main/docs/install.md
该页面会引导 Agent 检测平台并验证安装,然后询问你想要哪种集成方式:CLI + Skill(推荐,占用上下文较少)或 MCP + Skill(完整的 MCP 工具接口)。 它还会询问是要配置所有项目,还是仅配置当前项目,并验证所选结果,而不是将 Skill 注册误当成 MCP 注册。如果 Svipall 已存在,它会显示已安装版本和最新版本,并在写入集成配置前询问你是要更新共享用户安装,还是保留当前版本。是否能完成取决于 Agent、客户端配置和可用权限。
Claude Code:安装插件
/plugin marketplace add ilien-dev/svipall
/plugin install svipall@svipall
/svipall:setup
/svipall:setup 会在缺少二进制文件时安装它,检查服务是否响应,并询问是否要让 Claude 在每个项目中都通过 Svipall 访问网络。每项操作都会事先征得同意。
/svipall:doctor 会报告安装版本的功能。/svipall:update 会显示已安装版本和最新版本,并且仅在你选择更新时才更新二进制文件。/svipall:uninstall 会提供移除 setup 注册、记忆和严格模式更改的选项。移除二进制文件和数据是两个独立选项。
自行安装
一行命令,无需工具链,也无需编译:
curl -fsSL https://raw.githubusercontent.com/ilien-dev/svipall/main/install.sh | sh # macOS, Linux
irm https://raw.githubusercontent.com/ilien-dev/svipall/main/install.ps1 | iex # Windows
也可以使用包管理器,或容器镜像:
brew install ilien-dev/svipall/svipall # macOS, Linux
scoop bucket add svipall https://github.com/ilien-dev/scoop-svipall && scoop install svipall
docker pull ghcr.io/ilien-dev/svipall:latest # or :slim, the http tier only; see container notes
npx --yes svipall doctor # if node is already there
cargo install svipall # from source; add `svipall models install` for the models
安装程序会在可行时验证校验和,若不匹配就会停止安装。缺少校验和文件、条目或哈希工具时只会发出警告,因此成功退出本身并不能证明归档文件已通过验证:请查看输出。如果目标位置已包含其他版本,安装程序会说明这些二进制文件由所有运行环境共享,并在替换前征求同意。
有新版本时,Svipall 每个会话只会提示一次。一条命令即可使用安装二进制文件时所用的渠道更新两者,并刷新你手动复制的技能:
svipall update # --check only compares versions
然后关闭所有使用 Svipall 的会话,再重新打开。Agent 也可以按照 docs/update.md 执行相同操作。
平台构建、各平台包含的内容、从源代码构建,以及将其接入任意 MCP 客户端的说明,均见 docs/install.md。如果你从未在终端中安装过任何东西,GET-STARTED.md 就是本节的入门版,不会预设你了解任何内容。
然后提出需求
无需粘贴密钥,也无需创建账户。
“阅读此页面并总结定价。” “抓取这些文档,并为我编写一个
llms.txt。” “监控这个商品列表,价格变动时告诉我。” “把那张表的所有行都导出为 CSV。”
助手可以从已公开的工具中进行选择。需要人工判断的受支持挑战会转到人工审核面板 http://localhost:8787/human。
或者通过 Shell 操作
svipall fetch https://example.com/article
svipall fetch https://shop.example/item --query "shipping costs"
svipall fetch https://docs.example/api --schema auto # rows from a listing you've never seen
svipall crawl https://docs.example/ --pages 50 --out pages.csv
svipall search "rust async runtime" --engine all
svipall snapshot https://news.ycombinator.com # the page as roles and refs, not markup
svipall serve --port 8788 # the same server as a local REST API
已完成的数据命令会向 stdout 输出一个 JSON 对象,并将诊断信息写入 stderr,因此可以通过管道传给 jq。serve 是一个长期运行的服务,帮助信息会写入 stderr。
返回内容
以下是一次历史运行 svipall fetch https://example.com 的结果,其中 content 字符串已截短。当前自动抓取还会报告 identity_used;下文所述的回退字段也会在有内容可报告时一并返回:
{
"attempts": ["http: 200 (170ms) OK"],
"chars": 167,
"content": "# Example Domain\n\nThis domain is for use in documentation examples…",
"final_url": "https://example.com/",
"optimization": "ordinary",
"quality": "thin",
"quality_reasons": ["thin_text"],
"status": 200,
"tier_used": "http",
"title": "Example Domain",
"tokens_estimated": 42,
"url": "https://example.com"
}
tier_used 表示它为完成任务尝试的力度,quality 则表示实际收到的内容。如果未能获取页面,同一个对象还会包含 blocked_reason、wall_kind、wall_vendor、wall_evidence,以及告诉 Agent 下一步该做什么的 note。以下内容直接摘自一条已提交的基准测试记录:
{ "wall_kind": "vendor", "wall_vendor": "kpsdk.io", "wall_evidence": "header x-kpsdk-ct" }
检测到拦截时,返回内容会附带判定结果。即使判定结果为通过,也仍需检查内容,因为分类器无法证明请求的记录已完整返回。
实际上可以用它做什么
| 你想要…… | 效果如下 |
|---|---|
| 清晰地阅读单个页面 | web_fetch → Markdown,并通过启发式方法移除模板内容并进行清理;query= 按词汇相关性对文本排序 |
| 将列表转换为行 | schema: "auto" 读取页面自身的重复结构,命名列并返回类型化行;无需模型和 API 调用,一次解析即可完成 |
| 提取数据表 | tables=true → 类型化行;out_file: rows.csv 将其写入磁盘,让成千上万行数据无需进入你的上下文 |
| 阅读视频内容 | web_video → 将字幕和章节整理成一个 [m:ss] 时间轴,支持从观看页面、嵌入播放器的页面、<video> 轨道或流清单提取 |
| 完全跳过抓取 | web_capture 返回页面加载时获取的 JSON,通常是网站的真实 API;?page=2 已为你准备就绪 |
| 将文档网站转为语料库 | web_crawl 支持输出 llms.txt、标记近似重复内容、恢复未完成的爬取,并在词汇覆盖趋于饱和时停止;受页面数、令牌数和流量限制约束 |
| 无需密钥即可搜索 | web_search 抓取 DuckDuckGo、Bing 和 Brave 的结果;engine="all" 会按一致性合并结果 |
| 让 Agent 点击页面元素 | 先用 web_snapshot 获取角色和引用(只需一小部分令牌),再用 web_act 点击、输入、滚动和等待,所有操作均通过模拟真人的输入完成 |
| 尝试通过浏览器挑战 | 自动路由可升级到更耐心的浏览器层级;会报告未解决的挑战和检测到的拦截,但不一定能确定远程原因 |
| 在本地尝试处理验证码 | 支持 15 种组件类型和 11 种应答方式;在可用时支持模型,并提供适合手机使用的人类操作面板。无需付费解题服务;本地预算和远程限制仍然适用 |
| 登录一次并保持登录状态 | web_login 会打开真实窗口;你登录后,Cookie 会保存在可导出的配置文件中 |
| 监控页面 | web_watch 会在服务运行期间检查整个页面或某个 CSS 区域;已保存的选择器指纹有助于应对部分改版 |
| 阅读 PDF 和 Office 文件 | docx、xlsx、pptx、odt、epub、rtf、csv 和 pdf 均会转换为 Markdown,支持从网络或 file:// 读取 |
| 用任意语言驱动它 | svipall serve → 提供 20 个本地 REST 路由,每个工具对应一个路由,并通过自动生成的 Bearer 密钥进行保护 |
适用人群
| 你是…… | Svipall 为你提供…… |
|---|---|
| Claude Code、Claude Desktop 或 Cursor 用户 | 一行配置即可使用,助手会自行选择工具。可用于研究、文档、价格比较和监控 |
| 构建 AI Agent 的开发者 | 本地网络层,支持结构化输出、令牌预算、文件导出和可恢复的爬取;实际网络结果仍然会有所不同 |
| RAG 或数据集构建者 | 有界网站爬取并转换为 Markdown,标记近似重复内容,生成 llms.txt,并提供已评估页面的质量观察结果 |
| 数据或研究人员 | 访问那些被“正在检查你的浏览器”页面挡住的网页;如果你的地址无法打开页面,也会如实告知 |
| 注重隐私的运营人员 | 无抓取 API、无验证码农场、无地理位置查询、无更新检查、无遥测。按需额外下载的内容包括托管浏览器(可禁用自动配置)和你启用的屏蔽列表 |
| 测试自有网站的安全或 QA 工程师 | 可复现的基准测试,其原始运行日志已提交到此代码库;请求日志会标明由哪个层级响应,以及出现了哪种拦截页面 |
Svipall 在你自己的硬件上运行。如果你想要一个可从无服务器函数通过 curl 访问的 URL,
请改用托管抓取服务。如果你想在自己的 Agent 中使用网络,Svipall 会在本地处理;
浏览器流量和可选下载内容详见
隐私与安全。
用通俗的话来说,它是如何工作的
以下步骤介绍了模拟层级。当前的自动策略可以将受支持的模拟路由提升一级,并追加一个符合条件的原生回退方案。墙面判定可能会终止尝试。仅内容质量标签不会触发升级。
- 首次访问新路由时,先通过 HTTP 请求页面。默认引擎会模拟选定的 Chrome 网络特征。在上文历史
public31运行中,93 个单元格有 59 个停在这一层,其中 44 个按照该基准的规则得分为ok。停在这一层的路由不一定已经成功获取页面。 - 如果页面需要 JavaScript,就打开浏览器。无头 Chromium 会运行脚本,并返回渲染后的文档。
- 如果网站会检查机器人,就伪装一下。隐身层会修补已知的浏览器特征,使其与模拟身份相符。离线探测会检查这些特征,但无法证明任意检测器都会接受它们。
- 如果网站希望面对真人,就表现得像真人。
real层使用可见但位于屏幕外的浏览器,并保留持久化配置文件。它会沿曲线移动指针,并使用滚轮滚动。 - 如果遇到验证挑战,就回答或等待其结束。
warm层会在有时限的等待期间运行验证码策略循环,并避免在识别出的自验证拦截页上移动指针。但这不保证能通过验证。 - 将原生方式作为最后手段。符合条件且未超出剩余预算时,尝试一次原生浏览器访问。它会暴露真实设备特征,并报告隐私提示。
- 记住哪些方式有效。两次支持性观察可以将有用的模拟路由提升到更高层级,以便在相同上下文中后续访问。即使原生方式成功,也仍然排在最后。
- 报告观察到的失败。如果可用,被拦截的结果会包含
blocked_reason、分类后的拦截墙、识别出的供应商/证据以及建议的下一步。分类基于启发式规则。传输错误和本地预算导致的延后可能缺少页面证据。
MCP 工具
二十九种工具,全部在本地运行。
| 工具 | 功能 |
|---|---|
web_fetch | 将页面抓取为 Markdown 或结构化 JSON。mode=auto 会逐级尝试。支持 schema(自我修复)、tables、scroll、query、max_tokens/cursor、cache、include_metadata、include_links、include_quality、use_site_template、robots、out_file、mobile、text_only、isolated、css_selector、profile、proxy、method/body/headers。URL 可以是 raw:<html>,也可以是在 local_roots 下的 file:// |
web_fetch_many | 并行抓取多个 URL,并发数有上限;支持与 web_fetch 相同的 schema 和 tables。报告 corroboration(这组结果实际包含多少份不同文档),用 same_text_as 标记每份重复文档,并将不同的文档前移。如果结果顺序有调整,会标记 reordered_for_diversity,因为未说明顺序变化会误导调用方 |
web_search | 无需 API 密钥即可使用 DuckDuckGo / Bing / Brave;engine="all" 会按一致性合并结果 |
web_site_search | 尽可能找到网站的搜索表单,并了解其查询 URL 模式;后续抓取仍遵循常规路由和策略 |
web_crawl | 同域名抓取,支持 robots.txt、去重、移除页眉页脚等无关内容、strategy=dfs、scroll、用于提取行的 schema/tables、llms.txt、文件导出、饱和度停止条件,以及用于恢复抓取的 crawl_id |
web_map | 列出网站 URL,但不抓取内容:robots.txt、站点地图(包括嵌套索引和 .gz 文件)、RSS/Atom 订阅源和首页链接;只需几百个词元即可了解结构,而完整抓取需要数千个词元 |
web_snapshot | 将页面呈现为角色、可访问名称和简短引用,供 web_act 接受。结果具有确定性,不使用视觉模型 |
web_act | click、type、fill、press、hover、select、scroll、wait、eval、goto、screenshot、hold、verify、console;支持的指针/键盘/滚轮操作使用行为层,而 eval 会运行调用方提供的 JavaScript |
web_capture | 在有限时长的浏览器访问期间,观察匹配的 JSON/网络响应;不保证 API 可用性和完整性 |
web_video | 将视频字幕(优先使用人工字幕,否则使用平台自动生成的字幕;可按需指定 lang)和章节整合为一条时间线。读取已知播放器的启动 JSON、JSON-LD VideoObject、<track> 和 HLS/DASH 字幕版本;如果播放器的字幕地址只响应其自身请求,则会在实时页面中借用请求来读取。添加 frames 后,会在画面变化处添加关键帧;关键帧从播放器的故事板中获取,或通过比较采样帧找到,并以 PNG 路径的形式返回在时间线中。每帧都从页面自身的 <video> 元素读取,因此不包含播放器控件和字幕;如果来自其他源的文件禁止这样读取,则改用屏幕截图,并在备注中说明。如果广告先于视频播放,会先静音播放完广告,再截取画面。没有字幕、但有媒体文件的视频会在安装语音模型时由本机转录(svipall models install)。加密流会标记为 drm,绝不会读取,因此不会生成画面 |
browser_open / browser_do / browser_close | 跨调用保留 Cookie 和页面状态的持久会话 |
web_screenshot | 渲染页面的 PNG,支持 full_page 或 mobile |
web_diff | Svipall 上次查看页面后发生的变化 |
web_watch | 持久化监视项,并在服务运行时检查;可通过列出或检查来获取变化。重新设计后恢复区域采用启发式方法 |
web_notes | 生命周期超出当前会话的键值记忆 |
web_log | 按域名记录由哪个层级响应、出现了什么障碍、耗时多久 |
web_login | 提供可见窗口,用于手动登录或应对验证;Cookie 会保存到配置文件中 |
web_route | 按域名设置代理,或使用带 countries 的 proxies 池;子域名会继承设置;exit_strategy 支持粘性或轮询;check=true 会在不使用第三方服务的情况下测试出口(连通性、延迟、DNS 泄漏) |
web_profile | 在不同机器之间导出/导入加密的浏览器配置文件 |
web_status | 已学习的层级、冷却时间、路由、各出口的健康状况和延迟、配置文件、打开的浏览器、求解器统计、哪些模型从何处响应、主机是否有真实 GPU、h3_offered_by |
browser_setup | 下载或管理 Chrome for Testing |
solve_and_continue | 尝试解决被拦截页面上的 CAPTCHA,并返回结果内容或未解决状态 |
solve_image_captcha / solve_recaptcha_v2 / solve_turnstile / solve_hcaptcha / captcha_status / report_captcha | 本地 CAPTCHA 尝试;控制面板也为受支持的任务提供兼容的 in.php / res.php / createTask / getTaskResult 接口。这并不意味着与求解器客户端的所有选项完全兼容 |
CLI
svipall fetch | crawl | snapshot | capture | search | map | log | notes | watch
profile | browser | route | status | serve | doctor | update | hook
config show | set | preset
solver export-corpus
quality ask | export-training | train
一项测试断言用法文本列出了二进制程序响应的每个命令;另一项测试确保 skill/SKILL.md 与二者保持同步。
REST API
通过 HTTP 使用同一服务,因此任何语言都可以驱动它,无需 MCP 客户端或 shell。
svipall serve --port 8788 # the bearer key is printed once, and kept in ~/.svipall/api_key
curl -sH "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"url":"https://example.com","query":"pricing"}' localhost:8788/v1/fetch
设置 rest_port 后,svipall-mcp 会在独立监听器上挂载同一个路由器,并与 MCP 工具共享浏览器池、页面缓存和路由证据。
共 19 个路由,每个工具对应一个路由,请求正文为该工具自己的 JSON:
POST /v1/fetch /v1/fetch_many /v1/crawl | 页面 |
POST /v1/search /v1/site_search /v1/map | 查找内容 |
POST /v1/snapshot /v1/act /v1/capture /v1/screenshot | 真实浏览器 |
POST /v1/solve_and_continue | 验证码,在受阻页面上作答 |
POST /v1/diff /v1/watch /v1/notes /v1/log | 记忆 |
POST /v1/route /v1/profile /v1/browser_setup | 配置 |
GET/POST /v1/status | 此安装已掌握的信息。GET 从设计上就是只读的:三个清除字段只能通过 POST 访问 |
GET /v1/health | 唯一无需密钥的路由,因此容器健康检查不需要密钥 |
受阻页面会返回 200:调用已执行,只是页面未能加载。响应正文中可能会包含 blocked_reason、wall_kind 和 note,与通过 MCP 调用时一样。非 2xx 响应包括正文格式错误(400)、密钥错误(401)、浏览器 Origin 或重新绑定的 Host(403)、正文超过 2 MB(413)或安装损坏(500)。未知作业可能返回 404,路由也可能拒绝不受支持的路径或方法。客户端必须同时检查 HTTP 状态和工具结果,再决定是否重试。
每个工具和作业路由都需要密钥,包括回环地址上的路由。只有 /v1/health 例外。本地端口本身并不构成安全边界:Svipall 携带已登录的配置文件、Cookie 和你的出口地址,因此任何能访问该端口的对象都能以你的身份发起请求。
在密钥验证之前还有两项检查,因为绑定到 127.0.0.1 并不能阻止你浏览器中的页面被提供一个 127.0.0.1 的 DNS 答案并向其发送请求:拒绝任何带有 Origin 标头的请求;绑定到回环地址时,也拒绝任何 Host 非回环地址的请求。这里没有 CORS 层,也不会添加,因为没有任何浏览器页面会作为此 API 的客户端。
有 10 个工具特意不设为路由,分为三组,rest.rs 在每组旁记录了原因:browser_open/browser_do/browser_close,其持久会话生命周期不在当前 REST 接口的设计范围内;web_login,其交互式窗口也不在范围内;以及六个 solve_*/captcha_status/report_captcha 工具,它们已经通过经典求解器线协议在 dashboard 端口上提供响应。29 个工具减去这 10 个,就是上面的 19 个路由。新增 #[tool] 后,必须将其列为路由或具名排除项,否则测试套件就会失败。
长时间爬取会作为作业运行,不会占用连接。"async": true 会返回 202 和一个 ID。使用 GET /v1/jobs/{id} 轮询作业,使用 GET /v1/jobs/{id}/stream 通过 Server-Sent Events 跟踪作业,使用 DELETE 停止作业。该 ID 就是 crawl_id,只需掌握这一种句柄;恢复时使用 {"crawl_id": "…"},这与 MCP 工具和 CLI 使用的名称相同。取消的爬取会在当前页面的链接加入队列之后、下一页开始之前停止,因此会保留待爬取队列。它绝不会被强行中止,因为那会导致浏览器页面泄漏。进程被杀死的作业会变为 interrupted,而 interrupted 状态的作业可以恢复。流的第一帧始终是来自存储的快照,因此在第 40 页才加入的订阅者不会被告知作业从第 0 页开始。若某个站点已有一个正在运行的爬取,该站点排队中的作业就会暂缓执行:同时爬取同一站点会让该主机对一个地址的信誉消耗速度加倍,而信誉正是本地工具最稀缺的资源。完整约定见 docs/rest.md。
Svipall 对比
以下内容描述了截至 2026-09-07 根据主要文档整理的项目范围。 这不是涵盖全部功能的对比,也不是直接性能测试。
| 项目 | 文档所述重点 |
|---|---|
| Svipall | 本地 Rust CLI、MCP 和 REST 服务;有限制的自动路由、内容标签,以及本地挑战尝试失败后转交人工处理 |
| Firecrawl | 网页抓取/爬取 API,提供托管和可自托管选项;开源版与云服务有所不同 |
| Crawl4AI | Python 爬虫,支持浏览器提取,并提供可通过 API 和 MCP 访问的 Docker 服务 |
| Scrapling | Python 自适应解析、抓取器和爬虫,支持会话/代理控制及 MCP 集成 |
| Playwright MCP | 通过 MCP 使用结构化无障碍快照进行浏览器自动化 |
上述历史基准测试不能证明这些项目目前不如本项目。 请根据所需集成方式进行选择,并在自己的目标网页上验证。
其他内容
这是精简版。本文未涵盖的内容都在以下文档中。
| 安装 | 各个平台、不同平台包含的内容、从源代码构建,以及将其接入任意 MCP 客户端 |
| 验证 | 每个已发布的数据,以及可复现数据的命令和日志,包括失败情况 |
| 功能 | 全部功能,逐个工具介绍 |
| 验证码 | 十五类控件、十一种作答方式,以及所有方式都无效时会发生什么 |
| 配置 | ~/.svipall 中的每个键,以及更改它的代价 |
| REST API | 十九个路由、任务路由,以及状态码的含义 |
| 提取 | 页面如何转换为 Markdown,以及通过三个语料库衡量的转换效果 |
| 隐私与安全 | 哪些内容会离开本机,哪些不会 |
| 限制 | 有意列出的限制 |
| 架构 | 各个 crate,以及它们为何彼此独立 |
| 开发 | 构建、测试和基准测试 |
| 常见问题 | |
| 退出码 | 二进制程序为脚本返回的内容 |
| 模型 | 内嵌权重、其许可证和大小 |
| Firefox · HTTP/3 · 基准测试 | 工程说明 |
| 更新日志 · 贡献指南 · CLA · 免责声明 |
名称由来
Svipall 是《Grímnismál》第 47 节中奥丁的一个名字。Bellows 在其译注中将其译为“The Changing”(变化者)。 项目以此为名,借以体现外观的变化,而非承诺隐身。
这也是其模拟身份背后的理念:在会话期间,让机器、浏览器、网络指纹和输入行为保持协调;遭拒后则弃用该会话。 原生回退使用真实的浏览器/设备特征。这两种策略都不能保证网站会接受访问,也不能保证网站无法将其与先前的访问关联起来。
许可证
AGPL-3.0-only,受 LICENSE 中条款约束,包括其分发条件和关于远程网络交互的第 13 条。下文所述的组件许可证和链接例外也适用。本段不能替代这些条款。
提取引擎 crates/svipall-extract 特意采用 MIT OR Apache-2.0 许可,以便任何许可证下的项目都能依赖它。crates/svipall-cdp 保留其上游条款(chromiumoxide,MIT OR Apache-2.0),而 crates/svipall-quic 保留其自身条款(quiche,BSD-2-Clause)。默认构建会在明确的 AGPL 第 7 条链接例外下链接 BoringSSL。相关内容详见 NOTICE 和
THIRD-PARTY-NOTICES.md。
贡献受 CLA.md 约束:贡献者保留其作品的版权,并授予维护者足够广泛的许可,使其也可以按其他条款发布该作品。公开发布的版本仍采用 AGPL-3.0-only 许可。如需采用 AGPL 以外的许可证,请联系 [email protected]。
商标
Svipall 名称和 Svipall 徽标是作者的商标。它们不受 AGPL 许可,本仓库中的任何内容都不授予使用它们的许可。
许可证授予你使用代码的权利,但不授予你使用名称的权利。你可以依据 AGPL 自由运行、研究、修改、分叉和再分发代码。若以其他名称分发修改后的版本,请勿使用徽标,以免下载者误以为该版本由谁制作或其中包含什么。
本项目允许进行描述性提及,例如说明你的项目使用 Svipall、与 Svipall 配合使用或是 Svipall 的分叉,但不得暗示获得了认可。
免责声明
Svipall 按现状提供,不作任何保证,也不承担任何责任,并且不授予你对所指向的任何系统进行操作的授权。遵守法律、数据保护规则和网站条款是操作者的责任,而非作者的责任。对非你所有的对象运行之前,请先阅读 DISCLAIMER.md。
关键词:网页抓取 · 网页爬虫 · MCP 服务 · Model Context Protocol · Claude Code · Claude Desktop · Cursor · AI Agent 工具 · 大模型网页浏览 · 适用于大模型的 Markdown · HTML 转 Markdown · RAG 数据管道 · 反机器人绕过 · Cloudflare 绕过 · Turnstile · Akamai · PerimeterX · DataDome · Kasada · 验证码求解器 · 本地验证码求解 · 无头浏览器 · 隐匿浏览器 · 浏览器指纹 · TLS 指纹 JA4 · Chrome 模拟 · HTTP/3 QUIC · 代理轮换 · Rust · Playwright 替代方案 · Firecrawl 替代方案 · Crawl4AI 替代方案 · Scrapling 替代方案 · 本地优先 · 可自托管 · 隐私 · 无需 API 密钥
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。