Leapfrog MCP
问题所在
Playwright MCP 在处理像 Hacker News 这样内容丰富的页面时会发送 ~14,000 个 token。其中大部分是噪音。你的上下文窗口会被填满。你的智能体会被搞糊涂。你还要为此付费。
Leapfrog 发送 ~1,400 个 token。同样的页面。同样的信息。噪音减少高达 10 倍。
┌─────────────────────────────────────────────────────┐
│ Playwright MCP │
│ ████████████████████████████████████████ ~14,000 │
│ │
│ Leapfrog │
│ █████ ~1,400 │
└─────────────────────────────────────────────────────┘
tokens per page (Hacker News, real test)根据页面复杂程度,节省幅度在 2-10 倍之间。内容丰富的页面获益最大。密集表单获益最小。真实网站的平均节省幅度约为 ~4-5 倍。
快速开始
npx leapfrog --doctor # verify everything works
npx leapfrog --stealth-audit # test all 19 stealth patches
npx leapfrog --config # print MCP config to paste添加到 ~/.mcp.json (Claude Code) 或你编辑器的 MCP 配置中:
{
"leapfrog": {
"command": "npx",
"args": ["-y", "leapfrog"],
"env": {
"LEAP_MAX_SESSIONS": "15",
"LEAP_TILE": "true",
"LEAP_HUD": "true",
"LEAP_SOUND": "true",
"LEAP_AUTO_CONSENT": "true"
}
}
}Leapfrog 使用 playwright-core (15MB) 而不是 playwright (1.6GB),并且不捆绑浏览器。你可以:
设置
LEAP_CHANNEL=chrome以使用你已安装的 Chrome/Chromium或者运行
npx playwright-core install chromium来安装捆绑的 Chromium 二进制文件
功能矩阵
Leapfrog | Playwright MCP | agent-browser | |
每页 Token 数 | ~1,200-2,500 | ~3,800-15,000 | ~300 |
并行会话 | 15 | 1 | 1 |
会话隔离 | 是 | 否 | 否 |
多标签页 / 弹窗 | 是 | 否 | 否 |
网络拦截 | 是 | 否 | 否 |
控制台捕获 | 是 | 是 | 否 |
隐身 / 反爬 | 是 | 否 | 否 |
智能等待 (5 种) | 是 | 基础 | 否 |
崩溃恢复 | 是 | 否 | 否 |
批量操作 (100/次) | 是 | 否 | 否 |
初始化脚本注入 | 是 | 是 | 否 |
拖拽 / 上传 / 调整大小 | 是 | 是 | 否 |
会话级代理 | 是 | 否 | 否 |
人性化 (可选) | 是 | 否 | 否 |
认证配置复用 | 是 | 否 | 否 |
Cookie 持久化 | 是 | 否 | 否 |
页面分类 (18 种) | 是 | 否 | 否 |
会话记忆 | 是 | 否 | 否 |
API 智能分析 | 是 | 否 | 否 |
自适应等待 + 自动重试 | 是 | 否 | 否 |
CAPTCHA 自动解决 | 是 | 否 | 否 |
自我改进 (9 个维度) | 是 | 否 | 否 |
录制 / 回放 | 是 | 否 | 否 |
分页提取 | 是 | 否 | 否 |
增量快照 (diff) | 是 | 否 | 否 |
隐身自测 CLI | 是 | 否 | 否 |
SSRF 防护 | 是 | 否 | 否 |
隐身模式
Leapfrog 默认启用了 19 个反检测补丁 (LEAP_STEALTH=true)。这些补丁涵盖了 CreepJS 和 fingerprint-pro 等指纹服务实际检查的向量:
Client Hints 品牌 (移除 HeadlessChrome)
强制将
navigator.webdriver设为undefinedWebGL 供应商/渲染器 (用真实的 GPU 字符串替换 SwiftShader)
连接 RTT (非零)
弹窗关闭计时 (人类速度延迟)
窗口外/内高度偏移
MIME 类型数组填充
基于 User Agent 的平台推断
chrome.app模拟iframe
contentWindow保护媒体编解码器欺骗 (
canPlayType)document.hasFocus()重写移除源 URL 注释
自定义 UA + 隐身共存 (自定义 User Agent 不再禁用隐身上下文)
CDP
Runtime.enable检测 (Error.prepareStackTrace过滤器)Permissions API 欺骗 (20 多种权限类型)
AudioContext 指纹噪声 (
getChannelData/getFloatFrequencyData)WebRTC IP 泄露防护 (ICE 候选过滤)
字体枚举指纹欺骗
会话级隐身控制:在 session_create 中传递 stealth: false 即可为特定会话禁用。
人性化 (实验性)
设置 LEAP_HUMANIZE=true 以启用类人浏览器交互。这是可选功能,以增加延迟为代价换取更真实的行为。包含六个模块:
鼠标 — 带有费茨定律 (Fitts's Law) 计时和微颤抖的贝塞尔曲线路径
打字 — 对数正态分布的按键间延迟 (中位数 200ms)、按键停留时间、双字母组合感知速度、翻转打字
滚动 — 带有加速和动量衰减的惯性模拟 (触摸板/鼠标滚轮物理特性)
暂停 — 模拟动作之间认知间隙的“思考”延迟
指纹 — 一致的浏览器指纹生成 (平台、设备内存、GPU、时区)
工具 — 共享数学原语 (Box-Muller 高斯分布、分布函数)
页面分类
每次 navigate 和 snapshot 调用都会使用加权信号评分自动对页面类型进行分类 (无需 LLM)。共 18 种类型:
login · search-results · product · product-list · checkout · checkout · article · dashboard · form · error · challenge · landing · documentation · profile · media · feed · qa · ecommerce · unknown
分类有助于更智能的快照提取 — 登录页面会突出表单字段,文章页面突出内容,仪表板突出交互元素。
智能监控
监控系统会跟踪会话中的每个操作并对结果进行分类:
操作结果分类 —
SUCCESS,SILENT_CLICK,NAVIGATION,WRONG_ELEMENT,BLOCKED,ERROR,PENDING机器人重定向检测 — 检测网站在操作后是否重定向到挑战或拦截页面
循环检测 — 当智能体陷入重复点击同一元素、在 URL 之间来回跳转或重复操作时发出警告
会话记忆 —
session_memory工具在上下文窗口压缩后回忆操作
Cookie 持久化
持久化浏览器配置现在使用 context.cookies() + addCookies() 而不是 storageState(),后者在持久化上下文中返回为空。认证状态可在会话间保持。
自适应等待 + 隐身升级
当页面加载失败时,导航会自动重试并采用回退策略:
尝试
load(最快) — 如果为空,则重试networkidle(上限 10 秒)如果
networkidle超时 (如 Amazon、广告密集型网站),则回退到domcontentloaded如果被拦截/挑战,升级隐身级别:随机延迟 → 等待 JS 挑战 → 使用新指纹轮换会话
配置文件会话 (已认证) 永远不会销毁会话 — 强制上限为 2 级
在 navigate 中设置 autoRetry: false 可禁用此功能。使用 maxRetryLevel (0-5,默认 3) 控制最大升级级别。
录制 / 回放
将一个会话的操作历史导出为可回放的记录,然后在新的会话中回放:
session_export— 从会话历史创建参数化的 JSON 或 Playwright 脚本。@eN引用解析为稳定的 CSS 选择器。自动检测电子邮件、密码、URL 作为{{placeholders}}。session_replay— 使用参数覆盖回放记录。支持onError: 'stop'或'skip'。
将一次性的智能体工作流转化为可重用的自动化任务。
分页提取
在单次工具调用中跨多个页面提取数据:
点击下一页 — 自动检测“下一页”按钮、分页链接、“加载更多”按钮
无限滚动 — 通过 DOM 哈希比较滚动并等待新内容
URL 模式 — 递增
?page={page}或自定义模式
每页可替代 3-4 次工具调用。上限:50 页,总计 10 万字符。停止条件:无下一页按钮、页面为空、内容重复或检测到机器人。
增量快照
diff 工具仅返回自上次快照以来发生变化的内容 — 添加、删除、修改。对于监控和轮询工作流,可大幅节省 token。
HUD 叠加层 (LEAP_HUD=true)
在有头模式下运行时,Leapfrog 会在每个会话上叠加视觉反馈:
点击涟漪 — 点击坐标处的绿色扩展圆圈 (仅限智能体操作)
缩放至目标 — 浏览器短暂缩放至点击元素的 1.15 倍,以便智能体 (和人类) 可以直观地跟踪平铺窗口中发生的事情
滚动至目标 — 点击前执行 scrollIntoView,以便你可以看到智能体即将点击的内容
设计简洁。无边框、无状态栏、无光标叠加 — 只有重要的反馈。
多终端平铺 (LEAP_TILE=true)
多个 Leapfrog 实例通过基于文件的协调共享屏幕。每个实例跟踪自己的窗口,TilesCoordinator 分配全局网格槽位 — 无重叠,无需手动排列。设置 LEAP_TILE=true (或 LEAP_TILE=master 作为主实例)。平铺之间的间距可通过 LEAP_TILE_PADDING 配置 (默认 8px)。
人工干预
Leapfrog 会自动检测需要人工的情况 — CAPTCHA、登录表单、OAuth 重定向、Cloudflare 挑战 — 并尝试在暂停前自行解决。
优先自动解决: 点击 reCAPTCHA 复选框、Cloudflare 验证按钮、通用验证/继续按钮,然后进行二次重试 — 所有这些都在请求帮助之前完成
外部求解器: 设置
LEAP_CAPTCHA_PROVIDER+LEAP_CAPTCHA_API_KEY以集成 CapSolver, 2Captcha 或 NopeCHA学习有效方法: 记住每个域名成功的方法,并在再次访问时优先尝试已知有效的方法
检测 reCAPTCHA, hCaptcha, Turnstile, 登录表单, OAuth 重定向, Cloudflare 挑战
需要干预时标签页标题变为 "NEEDS HUMAN"
wait_for_human工具 — 智能体在卡住时调用,阻塞直到你解决它或导航离开
Cookie 同意自动关闭 (LEAP_AUTO_CONSENT=true)
自动关闭 10 个框架 (OneTrust, CookieBot, TrustArc, Quantcast, Didomi, Cookielaw, Osano, Usercentrics 等) 以及文本匹配回退的 Cookie 同意横幅。针对每个域名的选择器缓存,以便再次访问时即时重放。
追踪 (LEAP_TRACE=true)
包含截图 + DOM 快照的会话级 Playwright 追踪。通过 session_export_trace 工具导出可在 trace.playwright.dev 查看的 ZIP 文件。会话销毁时自动保存。
自我改进
Leapfrog 从每次访问中学习。每个域名的知识持久化存储在 ~/.leapfrog/domains/{domain}.json 中 — 9 个维度,全部自动完成:
# | 维度 | 功能 |
1 | 等待策略 | 学习每个域名的最佳等待方法 ( |
2 | 隐身层级 | 检测到拦截时自动升级 0→3 级 (1 小时内 2 次以上拦截)。再次访问时从学习到的层级开始 |
3 | 同意选择器 | 记住 Cookie 横幅关闭选择器,再次访问时自动点击 |
4 | 挑战解决 | 记录哪种 CAPTCHA 方法有效 (reCAPTCHA 复选框、Cloudflare 验证等),再次访问时优先尝试 |
5 | 稳定元素抑制 | 识别访问 3 次以上出现的导航/页脚/侧边栏元素,从快照中抑制 (成熟域名节省 30-40% token) |
6 | 选择器修复 | 记住元素指纹 → 选择器,跨访问修复损坏的引用 |
7 | API 端点缓存 | 发现的 API 端点在会话间持久化 |
8 | 交互热图 | 跟踪智能体实际使用的元素,抑制未触及的元素 (即将推出) |
9 | 策略选择 | 用于隐身配置优化的对抗性强盗算法 (EXP3) (即将推出) |
在 500 个域名时进行 LRU 驱逐。使用 domain_knowledge 工具检查。
SSRF 防护
URL 验证会拦截十六进制编码的 IP (0x7f000001)、八进制表示法 (0177.0.0.1)、CGNAT 范围 (100.64.0.0/10) 以及解析为内部地址的重定向链。默认允许本地开发工作流使用 Localhost 和 127.0.0.0/8 — 设置 LEAP_BLOCK_LOCALHOST=true 可拦截它们。
生态系统
Leapfrog 使用池塘隐喻来保持易记性。你的智能体就是青蛙。
概念 | Leapfrog 术语 | 含义 |
会话 | Ponds (池塘) | 隔离的浏览器上下文 — Cookie、存储、状态 |
标签页 | Lily pads (睡莲) | 青蛙在池塘内落脚的地方 |
导航 | Leap (跳跃) | 跳转到 URL,返回紧凑的快照 |
快照 | Surface (表面) | 你在表面看到的内容 — 可交互的 |
网络流量 | Ripple (涟漪) | 在表面下流动的 HTTP 请求 |
控制台错误 | Croak (蛙鸣) | 浏览器中出错了 |
隐身模式 | Camouflage (伪装) | 反爬虫规避补丁 |
全部 36 种工具
池塘管理 (11)
工具 | 功能 |
| 打开一个新池塘 — 隔离的 Cookie、状态、视口、区域设置、时区、隐身、代理 |
| 排干池塘并释放槽位 |
| 查看所有带有 URL 和空闲时间的活跃池塘 |
| 将认证状态保存到磁盘以供未来池塘使用 |
`session_list_ |
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/anthonybono21-cloud/leapfrog'
If you have feedback or need assistance with the MCP directory API, please join our Discord server