惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
博客园 - 聂微东
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
D
Docker
B
Blog
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
月光博客
月光博客
F
Fortinet All Blogs
爱范儿
爱范儿
H
Help Net Security
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
The Cloudflare Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
U
Unit 42

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Mac 自动填充验证码的探索 - 少数派
2022-05-09 · via 少数派

背景

智能手机发展到 2022 年了,不管使用的是 Android 还是 iOS ,当我们收到短信验证码之后,手机会自动提取出其中的验证码并复制出来,如果给的权限够多,它甚至可以帮你自动填充到你正要输入的地方,只是不同系统之间会有些许差别。

这是我们都已知且习惯的操作。

当然,验证码作为当前越来越重要的一种安全验证工具,允许软件如此自由获取到验证码是一件非常危险的事情,所以最好不要允许系统外的第三方后台联网输入法来读取它。

但是,如果你使用的是桌面设备,那如何将手机收到的验证码自动在桌面设备上填充呢?

探索

众所周知,如果恰好同时使用了 Mac 与 iPhone,这个操作 Apple 也已经为你做好了(部分)。

参考将 iPhone 中的短信/彩信转发到 iPad、iPod touch 或 Mac。

当手机收到短信时将会自动同步到同一个 Apple ID 登录的 Mac 上面。

如果你使用的正好是 Mac 自带的 Safari 浏览器来填充验证码,恭喜你,你不用做任何操作,你将可以在 Safari 上面点一下直接填充手机收到的验证码。

延伸

由于 Apple 的隐私限制,在 Safari 之外比如 Chrome 等 Apple 生态外的软件内我们是无法如此方便地填充验证码的。

咋办,有人和我一样懒吗?

有人用 ohtipi 方案,但是好像收费而且仅仅限制在浏览器内。

也有其他脚本方案的。

Bokun 的方案 是做定时器每分钟跑一次,这种不高频的操作做定时器后台一直跑,感觉有点过了,我参考做了个适合我的手动方案。

大致原理

Mac 收到的信息内容会存储在 /Users/${Your Name}/Library/Messages/chat.db 这个文件内,通过脚本读取最近 60 秒的一条信息内容,如果有验证码信息,通过正则筛选出其中的验证码,并复制到剪贴板,成功与否都给出一条系统通知。

步骤

在你喜欢的地方新建一个 shell 脚本文件(比如 /Users/${Your Name}/Shells/AutoCheckCode.sh,文件内容在文末),给此文件授予当前用户读与写的权限(选中文件 ⌘+I)。

测试一下此脚本是否正确,使用系统自带终端或者 iTerm, cd 到存放上一步文件的目录内,执行 ./AutoCheckCode.sh,成功与否都将收到一条提示。到这一步,后面只需要考虑如何以最快速的方式执行这个脚本。

需要注意无论使用自带终端、快捷指令、自动操作、或者 iTerm 等执行此脚本,都需要到系统偏好设置-安全与隐私-隐私-完全磁盘访问权限,打开对应软件的权限。

Mac 上快速执行脚本有很多方式,我也都进行了尝试。

  • 考虑使用 Mac 新版本的快捷指令,运行 Shell 脚本,报错放弃。👎🏻
  • 使用 Mac 的自动操作编写一个快速操作,然后到系统偏好设置-键盘-快捷键-服务-通用,将刚刚写的操作配置一个快捷键,看起来完美。可是运行发现必须要自动操作这个 APP 在前台才能成功,放弃。👎🏻
  • 使用自动操作创建一个应用程序,程序内选择运行 shell 脚本,脚本内容为 sh /Users/${Your Name}/Shells/AutoCheckCode.sh,保存此应用至 Mac 的应用程序目录之内,名称看个人喜欢,比如「复制验证码.app」。同时记得给这个应用完全磁盘访问权限。👍🏻

此时相当于你已经开发打包并安装了一个 Mac 的应用程序,虽然它很简单。

触发这个程序的方式那就更多了,Alfred、HapiGo、Raycast,甚至手动点击一下也是可以的,当 Mac 收到短信的时候,执行一下应用即可。

脚本内容

#!/bin/bash

echo "starting to check code";
  # 路径中的 dufu 记得改成自己电脑的名字
  # 通过 Sqlite3 查 1 条 iMessage 最近 60 秒收到消息(iMessage 收到消息的时间可能有延迟,这里实际冗余多了 2 秒)
  #! /Users/dufu/Library/Messages/chat.db
  #!这个 DB 文件和目录记得给开权限,默认是不给读的。
  result=$(sqlite3 /Users/dufu/Library/Messages/chat.db 'SELECT text FROM message WHERE datetime(date/1000000000 + 978307200,"unixepoch","localtime") > datetime("now","localtime","-60 second") ORDER BY date DESC LIMIT 1;')

  name="验证码";

  # 看下最近有没有收到消息
  if [ ! $result ]; then
      echo "latest not receive code messsages";
      osascript -e "display notification \"最近60秒未收到验证码!\" with title \"提示\"   ";
      return
  fi

#   如果短信中包含验证码则取前 4-6 个数字
  if [[ "$result" =~ "$name" ]]; then
      code=`echo $result | grep -o "[0-9]\{4,6\}"`;
      echo "code is $code";
      # 将获取到的数字输出到剪贴板
      echo "$code" | pbcopy;

      # 发个系统通知,展示内容,同时提醒你可以 Command + v 粘贴了。
      osascript -e "display notification \"$code\" with title \"验证码已复制\"";
  fi

题外

另外也可以使用 Mac 的脚本编辑器,输入以下 AppleScript(我使用了 iTerm),保存时文件格式选择应用程序

tell application "iTerm"
	activate
	create window with default profile command "sh /Users/dufu/Shells/AutoCheckCode.sh"
end tell

如果觉得创建的这个 APP 图标不好看,可以复制一张图片,在访达里选中这个应用,按 ⌘+I,选中应用图标 ⌘+V,将你的应用图标替换。