Pourtype

网页禁止粘贴怎么办?Mac 上的几种输入方法

作者:Leonard Chow(Pourtype 开发者) · 更新于 · Pourtype 的逐字输入已在 macOS 27.0.1 上测试,测试对象是 Safari 中一个禁止粘贴的网页表单。
利益相关:我是 Pourtype 的开发者。本文列出所有方法,包括免费的。

简短回答

先试免费办法:确认不是剪贴板的问题,再让密码管理器自动填充;少量文字直接手打最省事。如果一个禁止粘贴的输入框要填很长的内容,可以用 Pourtype:复制好文字,点进输入框,按 ⌘⇧V,它把剪贴板里的内容当作键盘按键逐字输入。

本文列出 Mac 上的各种办法,包括免费的,并写明各自的限制。我是 Pourtype 的作者;它目前在 App Review 中,尚未上架。

为什么有的输入框禁止粘贴

网页通常用 JavaScript 的事件处理(如 onpaste)拦截粘贴动作。这是网站自己的设置,和你的 Mac 无关。

不过,美国 NIST 的数字身份指南(SP 800-63-4,第 3.1.1.2 节)写道:验证方「应当(SHOULD)允许用户在输入密码时使用粘贴功能」,以便使用密码管理器。也就是说,对密码框禁止粘贴并不是业界推荐的做法。

常见的禁止粘贴场景是注册页的「确认邮箱」「确认密码」、后台管理页和一些企业内部表单。

先确认不是剪贴板本身的问题

先排除自己这边的原因,花不了一分钟:

用密码管理器自动填充

如果被拦的是登录框或密码框,优先让密码管理器直接填入,而不是粘贴。NIST 的那句话也提到:粘贴是为了在「自动填充接口不可用」时方便密码管理器。

能不能自动填充,取决于网站和你用的密码管理器,需要自己试一次。限制很明确:它只适合账号密码这类已保存的内容,不能用来填一段任意的长文字。

对该网站禁用 JavaScript,或使用扩展(以及可能的副作用)

这是中文技术博客里最常见的办法。腾讯云开发者社区一篇 2019 年的文章写道:多数限制是用 JavaScript 实现的,因此直接禁用 JavaScript 就可以;具体做法是打开浏览器开发者工具,在设置里勾选「Disable JavaScript」,用完要记得恢复。

Chrome 也可以只对单个网站调整:点击地址栏左侧的网站信息图标,选择「网站设置」,再修改 JavaScript 的权限(来源:Google Chrome 帮助)。

副作用要想清楚。Chrome 帮助页说明,JavaScript 负责网页上的交互功能,包括网页表单。关掉它以后,提交按钮、校验、下拉菜单等都可能失效,所以有些表单粘贴上去了却没法提交。它也不保证一定有效:如果拦截不是靠 JavaScript 实现的,就没有用。

至于专门解除粘贴限制的浏览器扩展,我没有逐个核实,不在此推荐具体产品;安装前请自行确认来源和权限。

让 Mac 按键输入(Keyboard Maestro、Hammerspoon)

另一类办法是让 Mac 自己敲键盘。Keyboard Maestro 有「Insert Text by Typing」动作,Hammerspoon 有 hs.eventtap.keyStrokes(官方说明:为给定文字生成并发出按键事件)。

它们的限制也要知道。Keyboard Maestro 的官方 Wiki 说,这个动作处理大量文字时很慢,不能输入 emoji 之类的特殊字符,适合不超过三四十个字符的短文字。Hammerspoon 和 Keyboard Maestro 都需要你自己配置动作或写脚本。

用脚本输入中文等非英文文字的表现各不相同,请先用自己的文字测试一下再用。

Pourtype:⌘⇧V 把剪贴板逐字输入当前输入框

Pourtype 是 macOS 14 及以上的菜单栏 App,作者 Leonard Chow。复制好文字,点进目标输入框,按 ⌘⇧V,它会把剪贴板内容作为真实的按键,一个字一个字输入进去,所以对禁止粘贴的输入框也可用。

价格是 Mac App Store 一次性买断 2.99 美元,但目前仍在 App Review 中,尚未上架,所以现在还不能购买。源码在 GitHub,采用 PolyForm Noncommercial 1.0.0 协议:源码可见(source-available),不是开源。

各方法对比

方法适用场合需要限制
手动输入几个到几十个字无文字长时费时,容易出错
密码管理器自动填充账号、密码框已保存的登录信息不能填任意文字;是否生效取决于网站
禁用 JavaScript(开发者工具或网站设置)靠 JavaScript 拦截的网页浏览器,几步设置可能让表单其他功能失效,不保证有效,用完要恢复
Keyboard Maestro / Hammerspoon较短的英文文字安装软件,自己配置或写脚本官方说明长文字慢、不能输入 emoji;其他语言先自己测试
Pourtype ⌘⇧V禁止粘贴的输入框,长文字、中日韩文macOS 14+,辅助功能和屏幕录制权限目前尚未上架(App Review 中);输入期间键鼠被接管

哪些场合不应该这样做

如果平台明确规定不能粘贴,请遵守规定。考试、测评、作业和在线课程平台往往出于公平考虑禁止粘贴,这类场合不要用本文的任何方法绕过。

本文适合的是正常的表单场景:自己的内容、自己有权填写的页面,只是网站的粘贴限制妨碍了操作。

常见问题

能输入中文吗?

可以。Pourtype 能输入中文、日文、韩文和 emoji。

怎么中途停止?

按 Esc 立即停止。如果有别的 App 来到前台,它也会自动停下。在密码框里按 Control-Option-Command-句号停止。

密码框可以吗?

可以。在密码框(Secure Input)里,Pourtype 改为普通输入,不接管键盘和鼠标。

会上传我的文字吗?

不会。Pourtype 在本机运行,不发起网络请求,也不收集数据。

远程桌面能用吗?

未测试,不作承诺。

为什么不直接禁用 JavaScript?

可以试,但它可能让同一页面的提交按钮、校验等功能一起失效,并且只对靠 JavaScript 拦截粘贴的网页有效。

相关指南

参考来源