短信验证码手机电脑同步教程
教程信息
- 适用Tasker版本: 6.7.3-beta(建议使用6.x版本)
- 适用Python版本: 3.8+
- 最后更新: 2026年5月27日
- 生成工具: Trae AI 代码助手
- 官方网站: taskerm.com
- 微信公众号: taskerm
- QQ交流群: 请访问官网获取最新群号
- 说明: 本教程力求详尽,但可能存在说明不够清晰之处。如果遇到问题,请参考文末的故障排除指南或在Tasker社区提问。
将手机收到的验证码短信自动同步到电脑剪贴板,支持加密传输,安全便捷。
实现原理
手机端:Tasker 监听短信 → AES加密 → HTTP发送到ntfy服务器
电脑端:Python监听ntfy → AES解密 → 提取验证码 → 复制到剪贴板
关键词:Tasker、Python、AES加密、ntfy
一、准备工作
1.1 手机端
- Android 手机(iOS不支持,某些品牌手机如360、魅族、坚果可能无法直接读取短信内容)
- 安装 Tasker 应用(推荐版本 6.x)
- 手机网络正常
1.2 电脑端
- Windows 电脑(也支持macOS/Linux,需稍作修改)
- Python 3.8+(下载地址)
- 电脑网络正常
二、电脑端配置
2.1 安装 Python
- 访问 Python 官网下载安装包
- 运行安装程序,务必勾选 “Add Python to PATH”
- 点击 Install Now 完成安装
2.2 安装依赖
在项目文件夹打开命令提示符(在文件夹路径处输入 cmd 回车),执行:
1 | pip install requests pyperclip plyer pystray pillow |
国内用户可使用镜像源加速:
1 | pip install requests pyperclip plyer pystray pillow -i https://pypi.tuna.tsinghua.edu.cn/simple |
2.3 修改配置
用记事本或其他文本编辑器打开 main.py,修改以下配置:
1 | # 加密配置(必须修改!) |
⚠️ 重要:密码必须与手机端一致,建议使用16位以上随机字符串
2.4 可选的公共ntfy服务器
以下是社区提供的公共ntfy服务器,可根据网络情况选择:
| URL | 国家 | 备注 |
|---|---|---|
https://ntfy.sh |
🇺🇸 美国 | 官方服务器 |
https://ntfy.tedomum.fr |
🇫🇷 法国 | 社区服务器 |
https://ntfy.jae.fi |
🇫🇮 芬兰 | 社区服务器 |
https://ntfy.adminforge.de |
🇩🇪 德国 | 社区服务器 |
https://ntfy.envs.net |
🇩🇪 德国 | 社区服务器(本教程默认使用) |
https://ntfy.mzte.de |
🇩🇪 德国 | 社区服务器 |
https://ntfy.hostux.net |
🇫🇷 法国 | 社区服务器 |
https://ntfy.fossman.de |
🇩🇪 德国 | 社区服务器 |
2.5 启动程序
方式一:双击 ntfy.vbs(推荐)
启动后系统托盘会出现绿色图标,右键可查看日志或退出。
方式二:命令行启动
1 | python main.py |
2.6 管理命令
| 文件 | 功能 |
|---|---|
start.vbs |
启动程序(隐藏窗口) |
stop.vbs |
停止程序 |
check_running.vbs |
检查运行状态 |
2.7 查看状态和日志
- 检查运行状态:双击
check_running.vbs - 查看日志:右键托盘图标 → 显示日志,或直接打开
start_log.txt - 退出程序:右键托盘图标 → 退出,或双击
stop.vbs
三、手机端配置
3.1 安装 Tasker
从 Google Play 或应用商店下载安装 Tasker(推荐版本 6.x)。
3.2 关键权限设置(重要!)
Tasker 需要以下权限才能正常工作:
3.2.1 基础权限
- 读取短信权限
- 网络访问权限
- 通知使用权
3.2.2 保活设置(防止被系统杀死)
这是最关键的一步,设置不当会导致Tasker无法正常工作!
防止系统清理:进入系统最近任务界面,点击Tasker应用旁边的小锁,锁定Tasker不被系统清理
忽略电池优化:
- 依次打开系统设置 → 应用和通知 → 应用管理 → 设置 → 特殊访问权限 → 忽略电池优化
- 允许忽略Tasker
设置启动管理:
- 依次打开系统设置 → 电池 → 启动管理
- 关闭Tasker自动管理
- 在弹出的对话框中选中:允许自启动、允许关联启动、允许后台活动
3.2.3 高级权限(AI添加的内容,在部分手机上无效)
如果需要更高级的功能,可以通过ADB授予特殊权限:
1 | 需要先在电脑上安装ADB工具 |
3.3 导入配置文件
方法一:通过文件导入(推荐)
- 将
短信验证码同步到电脑剪贴板(加密版).prf.xml文件传输到手机 - 在文件管理器中找到该文件,复制到手机内存卡根目录下的
Tasker/profiles文件夹 - 打开Tasker应用,点击底部的”配置文件”标签
- 长按或点击菜单,选择”导入”
- 在文件选择界面找到并选择配置文件
方法二:通过链接导入
如果配置文件提供了分享链接,可以直接点击链接导入(需要Google Play服务)。
3.4 修改配置变量
在Tasker主界面找到刚导入的Profile(配置)
长按Profile,选择”编辑”
找到”配置变量”选项,修改以下内容:
%ntfy_url- 与电脑端main.py中的NTFY_URL一致(推荐使用https://ntfy.envs.net/test/json)%encryption_password- 与电脑端main.py中的ENCRYPTION_PASSWORD一致
3.5 启用配置
点击Profile旁边的开关,确保它处于开启状态。Tasker会询问是否启用,点击确认。
四、测试验证
4.1 发送测试短信
发送一条包含验证码的短信到你的手机,例如:
1 | 【测试应用】您的验证码是 123456,5分钟内有效。 |
4.2 检查结果
手机端:
- Tasker应检测到短信并触发任务
- 可以在Tasker的”运行日志”中查看执行情况
电脑端:
- 系统托盘图标显示运行中(绿色对勾)
- 收到验证码时会弹出桌面通知
- 验证码已自动复制到剪贴板,可直接 Ctrl+V 粘贴
4.3 查看运行日志
电脑端日志
打开 start_log.txt 文件,正常运行应该看到:
1 | [2026-05-27 10:00:00] 服务已启动(已启用加密) |
Tasker日志
在Tasker中:
- 点击右上角菜单
- 选择”运行日志”
- 可以查看任务的执行情况和可能的错误信息
五、常见问题与故障排除
5.1 电脑端连接超时
现象:日志显示 “HTTPSConnectionPool… Read timed out”
原因:网络不稳定或ntfy服务器不可用
解决:
- 检查网络连接是否正常
- 尝试更换ntfy服务器(参考2.4节的公共服务器列表)
- 关闭防火墙测试
- 尝试使用手机热点连接测试
5.2 手机发送但电脑未收到
原因:密码或地址不匹配、网络问题
解决:
- 确认密码一致:检查两端密码是否完全相同(注意大小写)
- 确认地址一致:检查ntfy地址是否完全相同
- 检查手机网络:确保手机网络正常
- 查看Tasker日志:检查任务是否正常触发
5.3 收到消息但未提取验证码
现象:日志显示收到消息但未复制验证码
原因:短信格式不匹配提取规则
解决:
- 查看日志确认原始消息内容
- 确保短信包含验证码关键字(验证码、code、verification等)
- 检查验证码格式是否符合4-8位数字或字母数字组合
5.4 Tasker被系统杀死
现象:配置突然不生效,需要重新打开Tasker
原因:系统后台清理策略
解决:
- 锁定任务:在最近任务中锁定Tasker
- 电池白名单:将Tasker加入忽略电池优化列表
- 启动管理:允许自启动、关联启动、后台活动
- 关闭省电模式:某些手机在省电模式下会限制后台应用
5.5 配置文件无法导入
现象:导入时提示”无法处理该内容”或”版本不兼容”
原因:Tasker版本不匹配
解决:
- 查看配置文件中的版本号(用文本编辑器打开,查找
tv=属性) - 安装对应版本的Tasker
- 尝试用文本编辑器打开配置文件,检查XML格式是否正确
5.6 某些手机无法读取短信内容
现象:360、魅族、坚果等品牌手机无法获取短信内容
原因:系统限制读取短信
解决:
- 使用通知事件替代短信事件(参考进阶配置)
- 在系统设置中关闭短信验证码保护功能
5.7 托盘图标不显示
原因:图标被隐藏或启动失败
解决:
- 点击系统托盘向上箭头查看隐藏图标
- 查看
start_log.txt检查错误信息 - 通过命令行运行
python main.py查看输出
5.8 Tasker手机端无法触发或任务失败
可能原因:
- 触发条件未满足:检查短信内容是否匹配正则表达式
- 权限不足:确保已授予读取短信和通知权限
- 变量未正确设置:检查
%ntfy_url和%encryption_password是否正确 - JavaScript代码错误:查看Tasker运行日志中的错误信息
- 网络问题:手机无法连接到ntfy服务器
排查步骤:
- 在Tasker中运行”运行日志”查看详细错误
- 使用Tasker的”测试任务”功能手动运行任务
- 检查变量值是否正确(使用Flash操作显示变量内容)
- 尝试使用简单的HTTP请求测试网络连接
六、安全建议
- 设置强密码:使用16位以上随机字符串作为加密密码
- 定期更换密码:建议每月更换一次密码
- 使用HTTPS传输:本项目已默认使用HTTPS
- 不要硬编码密码:不要在代码中直接写密码
- 保护配置文件:不要将配置文件分享给不信任的人
七、文件说明
7.1 核心文件
| 文件 | 用途 |
|---|---|
main.py |
电脑端主程序,监听ntfy并处理验证码 |
safe.py |
AES加密解密模块 |
safe.js |
JavaScript版加密工具(用于前端/Tasker) |
7.2 Windows工具脚本
这些 .vbs 脚本用于方便地管理Python程序,非必需但很实用:
| 文件 | 用途 | 说明 |
|---|---|---|
start.vbs |
启动脚本 | 以隐藏窗口方式启动程序,双击即可,不需要手动打开命令行 |
stop.vbs |
停止脚本 | 安全停止程序,而非直接关闭窗口 |
check_running.vbs |
状态检查 | 检查程序是否正在运行,适合创建桌面快捷方式 |
ntfy.vbs |
快速启动(备用) | 简单的启动方式,适合快捷方式或开机启动 |
为什么用VBS而不是直接双击py文件?
- VBS可以隐藏黑色的命令行窗口,让界面更干净
- VBS可以添加额外的启动逻辑(如检查是否已运行)
7.3 Tasker配置文件
| 文件 | 用途 |
|---|---|
短信验证码同步到电脑剪贴板(加密版).prf.xml |
手机端配置(加密版),推荐使用 |
短信验证码同步到电脑剪贴板.prf.xml |
手机端配置(普通版,无加密) |
测试Tasker环境.prf.xml |
用于测试Tasker运行环境是否正常 |
加密解密测试.prf.xml |
用于测试加密解密功能是否正常 |
上班开机.prf.xml |
辅助配置,用于开机自动启动服务 |
📌 提示:如果某些手机(如360、魅族、坚果)无法直接读取短信,可以参考8.2节使用通知事件替代方案手动创建配置。
7.4 日志和文档
| 文件 | 用途 |
|---|---|
start_log.txt |
程序运行日志(自动生成),排查问题时查看 |
ntfy_lock.pid |
程序锁文件,防止重复启动 |
SMS_Verification_Code_Sync_Tutorial.md |
本教程(英文命名避免乱码) |
.trae/knowledge_base.md |
技术知识库,包含加密原理、Tasker变量规则等 |
八、进阶使用
8.1 自建ntfy服务器
如果公共ntfy服务器不稳定,可以自建:
1 | # Docker方式(需要安装Docker) |
然后修改两端的URL为你的服务器地址。
8.2 使用通知事件获取短信(适用于无法直接读取短信的手机)
某些手机无法直接读取短信,可以改用通知事件:
- 在Tasker中创建新配置
- 触发条件选择”事件” → “界面” → “通知”
- 设置通知应用为”信息”或你的短信应用
- 使用
%evtprm2获取发件人,%evtprm3获取短信内容
8.3 替代推送方案
如果ntfy服务不稳定,可以考虑:
- Telegram Bot:通过Telegram机器人发送消息
- Pushbullet:跨平台推送服务
- 自建HTTP服务器:自己搭建简单的消息接收服务
8.4 其他接收端方案
除了Python,你还可以使用以下工具作为接收端:
| 工具 | 类型 | 说明 |
|---|---|---|
| Power Automate | 低代码平台 | 微软的跨平台自动化工具 |
| Node-RED | 流程编排 | IBM的开源流程编排工具 |
| AutoHotkey | 脚本工具 | Windows平台的自动化脚本工具 |
| AutoIt | 脚本工具 | Windows平台的自动化工具 |
| EventGhost | 自动化工具 | 开源的Windows自动化工具 |
8.5 Tasker替代方案
如果Tasker不适合你的需求,可以考虑:
| 工具 | 说明 |
|---|---|
| MacroDroid | 类似Tasker的自动化工具,支持更简洁的配置 |
| Automate | 基于流程图的自动化工具 |
8.6 技术文档
查看 .trae/knowledge_base.md 了解更多技术细节,包括:
- 加密算法实现
- Tasker变量使用规则
- JavaScript代码规范
九、关于加密
本项目使用 AES-CBC 加密算法:
- 密钥派生:SHA-256从密码派生128位密钥
- 填充方式:PKCS7
- 初始化向量:每次加密生成随机16字节IV
- 编码格式:Base64(Hex(IV) + Hex(密文))
即使消息在传输过程中被截获,没有密码也无法解密内容。
十、Tasker基础概念
配置文件结构
- 配置(Profile):由触发条件和任务组成
- 任务(Task):由一个或多个操作组成
- 场景(Scene):自定义界面(本项目不需要)
变量类型
- 全局变量:
global('var_name')- 全局可用 - 局部变量:
local('var_name')- 当前配置可用 - 事件参数:
%evtprm1、%evtprm2等 - 触发事件时传入
常用操作
- JavaScriptlet:执行JavaScript代码
- HTTP Post:发送HTTP POST请求
- Flash:显示短暂提示
说明:本教程可能存在说明不够清晰的地方。如果遇到问题,请耐心排查,参考Tasker官方文档或在社区提问。
如果本教程对你有帮助,欢迎分享给更多人!如有问题,可查看项目中的知识库文档或在相关社区提问。



