网页禁止粘贴怎么办?Mac 上的几种输入方法
先试免费办法:确认不是剪贴板的问题,再让密码管理器自动填充;少量文字直接手打最省事。如果一个禁止粘贴的输入框要填很长的内容,可以用 Pourtype:复制好文字,点进输入框,按 ⌘⇧V,它把剪贴板里的内容当作键盘按键逐字输入。
本文列出 Mac 上的各种办法,包括免费的,并写明各自的限制。我是 Pourtype 的作者;它目前在 App Review 中,尚未上架。
为什么有的输入框禁止粘贴
网页通常用 JavaScript 的事件处理(如 onpaste)拦截粘贴动作。这是网站自己的设置,和你的 Mac 无关。
不过,美国 NIST 的数字身份指南(SP 800-63-4,第 3.1.1.2 节)写道:验证方「应当(SHOULD)允许用户在输入密码时使用粘贴功能」,以便使用密码管理器。也就是说,对密码框禁止粘贴并不是业界推荐的做法。
常见的禁止粘贴场景是注册页的「确认邮箱」「确认密码」、后台管理页和一些企业内部表单。
先确认不是剪贴板本身的问题
先排除自己这边的原因,花不了一分钟:
- 按 Command-C 重新拷贝一次,再在备忘录等 App 里按 Command-V,看内容能否粘出来。
- 在输入框里试一下菜单栏「编辑」>「粘贴」,Apple 的说明里除了 Command-V,还有「编辑」菜单这条路径。
- 换一个浏览器、换一个输入框试试。如果别处能粘贴、只有这一个框不行,那就是网站拦截了粘贴。
用密码管理器自动填充
如果被拦的是登录框或密码框,优先让密码管理器直接填入,而不是粘贴。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,它会把剪贴板内容作为真实的按键,一个字一个字输入进去,所以对禁止粘贴的输入框也可用。
- 输入时,屏幕会被磨砂遮罩盖住,只露出目标窗口,键盘和鼠标暂时被接管;按 Esc 立即停止。
- 如果有别的 App 跳到前台,它会自动停下;按键只发给目标 App。
- 输入过程中按上下方向键调速度(每秒 3 到 150 个字符),按左右方向键调节奏,从匀速到随机。
- 可以输入中文、日文、韩文和 emoji。
- 在密码框(Secure Input)里,它改为普通输入,不接管键盘鼠标;按 Control-Option-Command-句号 可停止。
- 快捷键可在设置里修改。程序在本机运行,不发起网络请求,不收集数据。需要「辅助功能」和「屏幕录制」权限。
价格是 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 拦截粘贴的网页有效。