Skip to content

移动端表单的 CAPTCHA:没有谜题的机器人防护

简短回答: 移动端表单最好的机器人防护应当完全避开图片谜题、体积小巧、能在 WebView 和隐私浏览器中工作,并且永远不会因为指纹信号弱而惩罚用户。Cap 是一个免费、开源、自托管的 CAPTCHA(人机验证)替代方案,正是围绕这些要求构建的:一个只需点按一次的复选框,背后是工作量证明和 instrumentation 质询,而不是谜题或用户画像。

为什么 CAPTCHA 在移动端更糟?

移动端是 CAPTCHA 对转化率伤害最大的地方:

  • 图片网格放不下。 在 6 英寸的屏幕上"选出所有红绿灯",意味着眯眼、缩放和误触。在桌面端只是烦人的重试循环,到了移动端则令人难以忍受。
  • 键盘和自动填充被打断。 表单中途弹出的挑战会让键盘收起、打断自动填充流程、让用户丢失填写进度。
  • "隐形"系统的信号更弱。 指纹和行为系统依赖鼠标移动和稳定的网络身份。移动端没有鼠标,有大量运营商级 NAT(成千上万的用户共用一个 IP),Safari 还有激进的跟踪保护。信号越少,猜错越多,而猜错就意味着谜题或拦截。
  • WebView。 相当大比例的移动流量来自应用内浏览器(Instagram、TikTok、Gmail),在基于指纹的系统看来它们都很"可疑"。
  • 带宽和电量。 在中端手机上用蜂窝网络加载一个 500 KB 以上的 CAPTCHA 脚本,是在用户还没输入任何内容之前就产生的实打实的开销。

移动端友好的机器人防护需要什么

  1. 任何回退条件下都没有视觉谜题。 只要系统可能弹出图片网格,移动端用户迟早会碰上一次。
  2. 对人类的确定性放行。 没有会因运营商 NAT IP 或 WebView 而降级的风险评分。
  3. 小体积。 防护本身的开销不应超过表单本身。
  4. 触屏优先的体验。 最多点按一次,进度反馈清晰,不打断键盘输入。
  5. 可调的成本。 求解时间应当是一个由你控制的旋钮,低端设备不必干等。

Cap 在移动端表单上如何工作

  • 点按一次,然后看进度。 用户点按复选框;工作量证明在浏览器中运行,进度百分比随之增长。没有图片,没有输入,键盘不会被收起。在浮动模式编程模式下,提交之前什么都看不到。
  • 约 20 KB 的验证组件。 一个 Web Component,无框架依赖,蜂窝网络下加载成本低。见基准测试
  • 没有指纹惩罚。 Cap 不在乎访客是否位于运营商 NAT 之后、是否在 Instagram 的 WebView 里、是否用着开启跟踪保护的 iOS Safari。工作量证明对每个人都是同一份计算。
  • 难度由你调节。Standalone 服务端上按站点密钥设置:面向中端安卓设备的消费者结账流量调轻一些,容易被滥用的注册端点调重一些。
  • Instrumentation 依然生效。 Instrumentation 质询验证运行环境是真实浏览器,捕获仅靠 PoW 抓不住的无头自动化,同时不对人类做任何画像。

有一个权衡需要事先说明:工作量证明消耗 CPU 时间,低端手机的求解速度比桌面设备慢。Cap 通过可配置的难度和可见的进度反馈来缓解这一点,而且计算只在每次提交表单时发生一次,而不是每次浏览页面都发生。

各方案在移动端的表现

  • reCAPTCHA v2 / hCaptcha: 图片网格是移动端最糟糕的体验,而两者都会回退到它。reCAPTCHA 的客户端还重达 500 KB 以上。Cap vs reCAPTCHA → · Cap vs hCaptcha →
  • reCAPTCHA v3: 隐形,但基于评分,而移动端薄弱的信号(NAT、WebView)会拉低分数且无处申诉。
  • Turnstile: 隐形且轻量,但由指纹驱动;移动版 Safari 和 WebView 中的隐私功能是众所周知的报错来源,而且你无法推翻它的裁决。Cap vs Turnstile →
  • FriendlyCaptcha: 和 Cap 一样是 PoW,机制上在移动端没有问题,但它是托管服务、按配额计费,且只有 PoW。Cap vs FriendlyCaptcha →
  • SilentShield: 行为分析依赖鼠标、键盘和滚动模式,而这些信号在触屏设备上更稀薄、形态也不同;其在移动端的分类质量本质上难以验证,而且它是闭源、按配额计费的服务。Cap vs SilentShield →

实现注意事项

  • 把验证组件放进你的 <form> 里,Cap 会自动注入 cap-token 字段;无需任何 JavaScript。快速上手 →
  • 对于 SPA 和应用内 WebView,使用 solve 事件或编程模式来完全掌控流程。
  • 在真实的中端安卓设备上用蜂窝网络测试,而不是只在 Wi-Fi 下的旗舰机上测,然后调整难度,直到求解时间对你的用户来说快到无感。
  • 要保护的是原生应用的 API 而不是网页表单?Cap 的 Standalone 服务端可以验证来自任何客户端的令牌,只要该客户端能在 WebView 中运行质询。

常见问题

移动端表单用什么 CAPTCHA 最好?

永远不会显示谜题、也永远不会误判的那种。Cap 的复选框加工作量证明模型是确定性的、约 20 KB,并且为触屏优先设计。

如何阻止移动端表单的垃圾信息?

施加成本,而不是提问。工作量证明让每次提交对大规模运作的机器人来说计算成本高昂,而对人类来说只是轻点一下。

隐形 CAPTCHA 在移动端更好吗?

只有当它的错误率足够低时才成立,而移动端恰恰是指纹和行为信号最薄弱的地方。确定性机制没有这种失败模式。

Cap 能在移动端使用吗?

可以:移动版 Safari、Chrome、Firefox 以及应用内 WebView 都支持。难度可调,在较慢的设备上也能保持较短的求解时间。

哪种 CAPTCHA 的用户摩擦最小?

无谜题的方案:Cap、Turnstile、FriendlyCaptcha、ALTCHA、SilentShield。其中 Cap 是开源、自托管的那一个,它的低摩擦来自机制本身的设计,而不是分类器的裁决。

另请参阅