mcpField
S
Svipall

Svipall

本地服务
github.com浏览器自动化204 周前更新

关于 Svipall

Svipall 是面向 Agent 和开发者的本地 Rust MCP 服务与命令行工具,可获取、提取、搜索和抓取网页内容。它输出 Markdown 和结构化观察结果,并报告检测到的拦截及提取质量,无需第三方 API 密钥。

主要功能

  1. 01将网页提取为 Markdown
  2. 02按配置限制抓取网站
  3. 03无需 API 密钥进行搜索
  4. 04评估提取质量并报告拦截
  5. 05将列表和表格解析为行
  6. 06提供命令行和本地 REST API

适用场景

  1. 01阅读并总结带浏览器检测的网页
  2. 02将文档网站转换为 Markdown 语料
  3. 03收集列表或表格数据为行
  4. 04监测网页或 CSS 区域的变化

MCP 相关

它向 MCP 客户端提供网页获取、抓取、搜索、捕获、浏览器交互等工具。工具在本地处理网页内容,并报告检测到的挑战和提取质量标签。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmsvipall1.3.1
ocighcr.io/ilien-dev/svipall:1.3.1
cargosvipall1.3.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Svipall:面向 AI Agent 的本地优先网页抓取与浏览 MCP 服务

每道关卡,面孔各异。

在你自己的机器上运行,为 AI Agent 提供网页阅读能力。
这是一个用 Rust 编写的 MCP 服务和命令行工具,可将网页提取为 Markdown,
在配置的限制内抓取网站,无需 API 密钥即可搜索,
并尝试应对支持的挑战,然后明确说明哪些挑战无法通过。

Rust 许可证:AGPL-3.0 MCP 已记录的测试结果 基准测试 无遥测

安装 · 使用场景 · 验证 · 工具 · 验证码 · REST API · 对比 · 常见问题

六条命令及其输出:分级机制通过浏览器应对 Cloudflare 拦截页;无需 API 密钥即可搜索;从列表页推导出模式;将抓取结果写入 CSV;以及 160 项自动化特征探测全部通过。
根据同一台机器上的真实运行记录重放。记录方式与原始采集数据。


所有操作都在本地运行。没有第三方 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 会在本地处理; 浏览器流量和可选下载内容详见 隐私与安全。

用通俗的话来说,它是如何工作的

以下步骤介绍了模拟层级。当前的自动策略可以将受支持的模拟路由提升一级,并追加一个符合条件的原生回退方案。墙面判定可能会终止尝试。仅内容质量标签不会触发升级。

  1. 首次访问新路由时,先通过 HTTP 请求页面。默认引擎会模拟选定的 Chrome 网络特征。在上文历史 public31 运行中,93 个单元格有 59 个停在这一层,其中 44 个按照该基准的规则得分为 ok。停在这一层的路由不一定已经成功获取页面。
  2. 如果页面需要 JavaScript,就打开浏览器。无头 Chromium 会运行脚本,并返回渲染后的文档。
  3. 如果网站会检查机器人,就伪装一下。隐身层会修补已知的浏览器特征,使其与模拟身份相符。离线探测会检查这些特征,但无法证明任意检测器都会接受它们。
  4. 如果网站希望面对真人,就表现得像真人。real 层使用可见但位于屏幕外的浏览器,并保留持久化配置文件。它会沿曲线移动指针,并使用滚轮滚动。
  5. 如果遇到验证挑战,就回答或等待其结束。warm 层会在有时限的等待期间运行验证码策略循环,并避免在识别出的自验证拦截页上移动指针。但这不保证能通过验证。
  6. 将原生方式作为最后手段。符合条件且未超出剩余预算时,尝试一次原生浏览器访问。它会暴露真实设备特征,并报告隐私提示。
  7. 记住哪些方式有效。两次支持性观察可以将有用的模拟路由提升到更高层级,以便在相同上下文中后续访问。即使原生方式成功,也仍然排在最后。
  8. 报告观察到的失败。如果可用,被拦截的结果会包含 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_actclick、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_diffSvipall 上次查看页面后发生的变化
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,提供托管和可自托管选项;开源版与云服务有所不同
Crawl4AIPython 爬虫,支持浏览器提取,并提供可通过 API 和 MCP 访问的 Docker 服务
ScraplingPython 自适应解析、抓取器和爬虫,支持会话/代理控制及 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 密钥

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。