世界上最遥远的距离,可能是手机屏幕和电脑之间的距离:有时候,你得手机扫码登录,不能使用帐号密码;另一些时候,你一边盯着手机屏幕,一边在电脑上输入验证码。
手机与电脑之间的龃龉太多,本文挑其中一个下手,试图解决转发手机验证码到电脑的问题。已有不少自动转发手机验证码到电脑的方法,可一旦把场景缩小到 iPhone 和 Mac,剩下的方案就寥寥无几。官方答案是开启 iMessage 消息同步,但我并不使用这个服务;第三方的野路子1,往往要使用来路不明的软件,显然和验证码的敏感特征不符。这篇文章里,我尝试使用 Shortcuts 自动转发验证码给电脑,在实现自动操作的同时,只使用原生软件,尽可能确保安全。
自动转发验证码短信本身是一个历史比较久的需求,所以我就开门见山,直接分析如何实现,如果对于这一需求感到莫名其妙,那也可以看一下文章后半段的“为什么”部分。
如何实现自动转发
用 Shortcuts 自动转发二维码的基本思路是:(1)在手机上准备个人自动化,(2)在电脑上打开 SSH 端口,以便接收快捷指令发来的通知;只要验证码短信一来,就会自动发送到电脑上。这个方法最大的局限在于需要通过 SSH 传输数据,基本意味着电脑和手机需要在同一个 Wi-Fi 网络中,好在转发验证码本来就对安全性有要求,如果设备不在一个网络中、甚至不在身边,我绝对不希望数据传过去。
首先需要在苹果电脑上配置 SSH 传输。这是一种“遥控”电脑的手段,只要知道帐号和密码,基本就能执行任何操作,所以配置需谨慎。
- 在分享设置中,开启远程登录(Remote Login);
- 记住右图“2”标记处的 SSH 登录地址,为保护隐私,我已将图中信息打码;
- 保持其他配置不动,因为系统默认会给一个最低权限,既不允许访问整个磁盘上的文件,也不允许您以外的帐号登录。
然后,准备个人自动化,在收到短信后就向电脑发送消息。个人自动化由三部分组成,第一部分是一个触发机制,收到包含“验证码”三个字的短信就启动。本文只想转发验证码,不关心其他类型的短信,以免无关信息打搅工作。第二步则是从短信中提取验证码数字,其实这一步并非必要,你也可以把整条短信原模原样传送给电脑。最后一步就是通过 SSH 模块给电脑发送一条通知,通知内容为刚刚提取的验证码。这一步细节较多:
- 用于发送通知的命令已经填写好,你也可以自行更改
验证码:match
部分,把消息改为其他文字; - Host 为主机名,填写配置 SSH 时记下的登录地址;
- User 是电脑的登录用户名,注意是电脑而不是手机或 iCloud;
- Password 也是电脑的登录密码。2
考虑到个人自动化无法直接分享,我把其中的代码粘贴在下方,便于大家复制使用:
osascript -e "display notification \"$(echo 验证码:【match 变量请自行设定】)\""
全部配置完成后,先试着运行一下,第一次尝试连接电脑时会有安全提示,同意即可,随后电脑应该就可以正常收到消息。为了让整个过程更加无痕,建议关掉运行前询问的选项,但是建议保留通知,这样就知道 Shortcuts 什么时候运行过,有个记录。
为什么要自动转发
消息转发的功能,历史悠久,大家也有各自的理由。早在功能机时代就已有相关的电信服务;在 iPhone 尚不支持双卡的时候,就有人在折腾消息转发,把专门用于接收验证码的手机卡插在安卓手机上,利用上面各种神奇的软件,自动把短信验证码转发给 iPhone,只要随身带一台手机就能接受两台甚至多台手机的消息。类似的,还有用微信接收 QQ 消息,这样就可以少装一个软件,或者在一个地方查看各路消息。
而在转发手机验证码到电脑这个场景下,主要的目的可能是保持专注。用电脑时基本是在工作,这时候如果为了看验证码而拿起手机,很有可能刷出一堆与工作无关的通知,然后忍不住点进去,时间就此在不知不觉中被偷走。有些对自己要求严格的人,甚至会在工作时间把手机锁死或者打开一个种树软件,不让自己碰手机。但查看验证码又是一个非常正当的需求,明显不是为了玩手机——那么就要用某种方法,把验证码专门挑出来发到电脑上。