Skip to main content
Glama

问题所在

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 设为 undefined

  • WebGL 供应商/渲染器 (用真实的 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 高斯分布、分布函数)

页面分类

每次 navigatesnapshot 调用都会使用加权信号评分自动对页面类型进行分类 (无需 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 工具在上下文窗口压缩后回忆操作

持久化浏览器配置现在使用 context.cookies() + addCookies() 而不是 storageState(),后者在持久化上下文中返回为空。认证状态可在会话间保持。

自适应等待 + 隐身升级

当页面加载失败时,导航会自动重试并采用回退策略:

  1. 尝试 load (最快) — 如果为空,则重试 networkidle (上限 10 秒)

  2. 如果 networkidle 超时 (如 Amazon、广告密集型网站),则回退到 domcontentloaded

  3. 如果被拦截/挑战,升级隐身级别:随机延迟 → 等待 JS 挑战 → 使用新指纹轮换会话

  4. 配置文件会话 (已认证) 永远不会销毁会话 — 强制上限为 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 工具 — 智能体在卡住时调用,阻塞直到你解决它或导航离开

自动关闭 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

等待策略

学习每个域名的最佳等待方法 (networkidle vs domcontentloaded vs load) + 运行平均计时

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 (表面)

你在表面看到的内容 — 可交互的 @eN 引用

网络流量

Ripple (涟漪)

在表面下流动的 HTTP 请求

控制台错误

Croak (蛙鸣)

浏览器中出错了

隐身模式

Camouflage (伪装)

反爬虫规避补丁

全部 36 种工具

池塘管理 (11)

工具

功能

session_create

打开一个新池塘 — 隔离的 Cookie、状态、视口、区域设置、时区、隐身、代理

session_destroy

排干池塘并释放槽位

session_list

查看所有带有 URL 和空闲时间的活跃池塘

session_save_profile

将认证状态保存到磁盘以供未来池塘使用

`session_list_

Install Server
A
security – no known vulnerabilities
A
license - permissive license
B
quality - B tier

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