Tasker入门(3):利用 Tasker 和 bark 实现复制验证码并发送至 iPad
本文最后更新于 1487 天前,其中的信息可能已经有所发展或是发生改变。

0x00 写在前面

最近我把手机的系统换成了 Pixel Experience,由于是原生 Android 系统,自然也没有了 MIUI 提供的各种贴心小功能,其中一个就是验证码的复制。

在 MIUI 中,当手机收到验证码短信时,短信通知里会提供一个「复制」按钮,点击这个按钮就能复制验证码,然后粘贴到其他 App 中。而在 Pixel Experience 中,也不能说没有复制验证码这个功能,只是它不能识别中文的验证码短信,只能识别英文的。可毕竟我用的国内软件肯定远远多于国外的软件,因此对我来说基本就是用不着。

而另一边,iPad 同样也有复制验证码的需求。但是毕竟一个是 Android,一个是 iPadOS,这两个系统根本不相通,如果我想在 iPad 上登录一个应用账号的话,那就必须拿起手机来接收短信,然后手动在 iPad 上输入。这样就非常麻烦。

为了解决这样的问题,我利用 Tasker 和 bark,实现了自动提取验证码短信中的验证码并实现跨平台粘贴验证码的功能。这样一来,当手机收到验证码短信时,我既可以在手机上粘贴,又可以在 iPad 上粘贴,不用再手动输入验证码。

下面我就来介绍一下我是如何通过这两个工具实现这样的功能的。

0x01 部署 bark

bark 是一个可以实现向 iOS / iPadOS 设备推送内容的工具。它分为两部分,一部分是服务器端,一部分是 iPhone 客户端。如果把发送的内容发送到 bark 的服务器端,那么 iPhone 客户端就会弹出推送通知,并且可以将 iPhone 的剪贴板自动设置为复制的内容。

截图来自 App Store
截图来自 App Store

如上图所示,发送内容的方式其实就是访问一个链接。只要访问一下这个链接,iPhone 客户端就会弹出通知,并且可以自己复制链接中所包含的文本信息。

实际上,bark 的开发者也提供了公共的服务器,方便大家使用,因此即使不在自己的服务器上部署 bark,也是可以实现相应功能的。不过毕竟这是个免费的个人开发者作品,我觉得还是尽量不要给别人的服务器增加压力,能自己部署就自己部署。

部署 bark 服务端的方法也非常简单,只要输入这样一条命令:

docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server

再敲一下回车,就能运行 bark 的服务端了。

不过这样其实并不安全,因为所有复制的内容都是明文传输的,所以最好还是加上 SSL,通过 HTTPS 传输,这样安全性更有保障。有关如何开启 HTTPS,可以参考这篇文章:如何在自己的服务器上部署 RSSHub | Maron的自留地

0x02 创建 Tasker 任务

第一步就是判断新收到的短信到底是不是验证码短信。一般来说,验证码短信里都会包含有「验证码」这三个字。如果是国外的应用,可能会说「verification」。当然,也可能有一些奇奇怪怪形式的验证码短信没有被匹配到,这就需要等后面再补充了。

最好中文英文都判断一下
最好中文英文都判断一下

通过了这样的 If 判断,接下来就应该提取验证码了。还是用到「变量搜索替换」动作,将「搜索」设置为 [\d]{6}|[\d]{4},这样就能提取短信中的六位或者四位连续数字。把「忽略大小写」、「多行」和「只匹配一次」钩上,再在「将匹配存储到」输入 %yzm

需要提醒一下,这样的提取方式其实并不完美。因为我曾经遇到了某程序发的验证码短信,它的一段内容是:「您尾号为9876的手机正在登录,验证码是123456」,对于这样的短信,就会提取到9876,而提取不到123456。但对于大多数验证码短信而言,文中介绍的这个规则都够用了。

提取短信验证码

然后就是将 Android 手机的剪贴板内容设置为验证码了。添加「设置剪贴板」动作,并将「文字」设置为 %yzm1。老规矩,不要忘了后面那个 1,不然就会出问题。

设置 Android 手机的剪贴板为验证码
设置 Android 手机的剪贴板为验证码

设置好了以后,最好再提醒一下,这样就知道已经提取到验证码了。添加一个 Toast 动作,显示一下提取到的验证码。

执行到这里,Android 手机已经可以粘贴验证码短信了。接下来就是把验证码发送给 iPad。首先设置一下 iPad 设备的 ID。

设置好 ID 以后,直接访问相应的链接就能实现设置 iPad 的剪贴板内容了。Method 设置为 GET,URL 的内容为:https://bark服务器域名/%deviceId/验证码:%yzm1?automaticallyCopy=1&copy=%yzm1,其他的不用管。

URL 中的 验证码:%yzm1 是推送通知的标题,automaticallyCopy=1 表示会自动复制,copy=%yzm1 表示自动复制的内容为 %yzm1

完整的任务如下图所示。

现在试着向手机发送一条模拟验证码的短信,这时应该就能在 Android 手机和 iPad 上直接粘贴验证码了。

推送消息速度很快,也能正确复制验证码
推送消息速度很快,也能正确复制验证码

0x03 写在后面

对于 Android 10 以上的用户,可能会出现无法复制的问题。这是因为 Android 10 系统限制了应用不能在后台读取和修改剪贴板,而这也就导致了 Tasker 无法在后台设置剪贴板内容。但是获取验证码和发送至 iPad 不受影响。

事实上,针对系统的这个限制,也并非没有解决办法。一种方法,是对于已经 ROOT 的用户,直接按照 Tasker 的提示,授予 Tasker ROOT 权限即可;而对于没有 ROOT 的用户,则需要按照 Tasker 的提示,将手机连接至电脑,并运行一段 ADB 命令即可。不过这种方法相比于 ROOT 的方法来说更麻烦,而且每次重启以后都要重新运行一遍。

对于 MIUI 用户来说,只要把剪贴板权限设为「始终」即可(这样看来 MIUI 还是方便很多)。

本文到此结束。

暂无评论

发送评论 编辑评论

上一篇
下一篇