教程信息

  • 适用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解密 → 提取验证码 → 复制到剪贴板

关键词:TaskerPythonAES加密ntfy


一、准备工作

1.1 手机端

  • Android 手机(iOS不支持,某些品牌手机如360、魅族、坚果可能无法直接读取短信内容)
  • 安装 Tasker 应用(推荐版本 6.x)
  • 手机网络正常

1.2 电脑端

  • Windows 电脑(也支持macOS/Linux,需稍作修改)
  • Python 3.8+下载地址
  • 电脑网络正常

二、电脑端配置

2.1 安装 Python

  1. 访问 Python 官网下载安装包
  2. 运行安装程序,务必勾选 “Add Python to PATH”
  3. 点击 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
2
3
4
5
# 加密配置(必须修改!)
ENCRYPTION_PASSWORD = "your_strong_password_here"

# ntfy服务器地址(推荐使用公共服务器或自建)
NTFY_URL = "https://ntfy.envs.net/test/json"

⚠️ 重要:密码必须与手机端一致,建议使用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无法正常工作!

  1. 防止系统清理:进入系统最近任务界面,点击Tasker应用旁边的小锁,锁定Tasker不被系统清理

  2. 忽略电池优化

    • 依次打开系统设置 → 应用和通知 → 应用管理 → 设置 → 特殊访问权限 → 忽略电池优化
    • 允许忽略Tasker
  3. 设置启动管理

    • 依次打开系统设置 → 电池 → 启动管理
    • 关闭Tasker自动管理
    • 在弹出的对话框中选中:允许自启动、允许关联启动、允许后台活动

3.2.3 高级权限(AI添加的内容,在部分手机上无效)

如果需要更高级的功能,可以通过ADB授予特殊权限:

1
2
3
4
# 需要先在电脑上安装ADB工具
adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
adb shell pm grant net.dinglisch.android.taskerm android.permission.READ_SMS
adb shell pm grant net.dinglisch.android.taskerm android.permission.RECEIVE_SMS

3.3 导入配置文件

方法一:通过文件导入(推荐)

  1. 短信验证码同步到电脑剪贴板(加密版).prf.xml 文件传输到手机
  2. 在文件管理器中找到该文件,复制到手机内存卡根目录下的 Tasker/profiles 文件夹
  3. 打开Tasker应用,点击底部的”配置文件”标签
  4. 长按或点击菜单,选择”导入”
  5. 在文件选择界面找到并选择配置文件

方法二:通过链接导入

如果配置文件提供了分享链接,可以直接点击链接导入(需要Google Play服务)。

3.4 修改配置变量

  1. 在Tasker主界面找到刚导入的Profile(配置)

  2. 长按Profile,选择”编辑”

  3. 找到”配置变量”选项,修改以下内容:

    • %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
2
3
4
5
[2026-05-27 10:00:00] 服务已启动(已启用加密)
[2026-05-27 10:00:01] 正在连接到 https://ntfy.envs.net/test/json...
[2026-05-27 10:00:02] 连接成功,开始监听消息...
[2026-05-27 10:05:30] [加密消息] 已成功解密
[2026-05-27 10:05:30] 验证码 123456 已复制

Tasker日志

在Tasker中:

  1. 点击右上角菜单
  2. 选择”运行日志”
  3. 可以查看任务的执行情况和可能的错误信息

五、常见问题与故障排除

5.1 电脑端连接超时

现象:日志显示 “HTTPSConnectionPool… Read timed out”

原因:网络不稳定或ntfy服务器不可用

解决

  1. 检查网络连接是否正常
  2. 尝试更换ntfy服务器(参考2.4节的公共服务器列表)
  3. 关闭防火墙测试
  4. 尝试使用手机热点连接测试

5.2 手机发送但电脑未收到

原因:密码或地址不匹配、网络问题

解决

  1. 确认密码一致:检查两端密码是否完全相同(注意大小写)
  2. 确认地址一致:检查ntfy地址是否完全相同
  3. 检查手机网络:确保手机网络正常
  4. 查看Tasker日志:检查任务是否正常触发

5.3 收到消息但未提取验证码

现象:日志显示收到消息但未复制验证码

原因:短信格式不匹配提取规则

解决

  1. 查看日志确认原始消息内容
  2. 确保短信包含验证码关键字(验证码、code、verification等)
  3. 检查验证码格式是否符合4-8位数字或字母数字组合

5.4 Tasker被系统杀死

现象:配置突然不生效,需要重新打开Tasker

原因:系统后台清理策略

解决

  1. 锁定任务:在最近任务中锁定Tasker
  2. 电池白名单:将Tasker加入忽略电池优化列表
  3. 启动管理:允许自启动、关联启动、后台活动
  4. 关闭省电模式:某些手机在省电模式下会限制后台应用

5.5 配置文件无法导入

现象:导入时提示”无法处理该内容”或”版本不兼容”

原因:Tasker版本不匹配

解决

  1. 查看配置文件中的版本号(用文本编辑器打开,查找 tv= 属性)
  2. 安装对应版本的Tasker
  3. 尝试用文本编辑器打开配置文件,检查XML格式是否正确

5.6 某些手机无法读取短信内容

现象:360、魅族、坚果等品牌手机无法获取短信内容

原因:系统限制读取短信

解决

  • 使用通知事件替代短信事件(参考进阶配置)
  • 在系统设置中关闭短信验证码保护功能

5.7 托盘图标不显示

原因:图标被隐藏或启动失败

解决

  1. 点击系统托盘向上箭头查看隐藏图标
  2. 查看 start_log.txt 检查错误信息
  3. 通过命令行运行 python main.py 查看输出

5.8 Tasker手机端无法触发或任务失败

可能原因

  1. 触发条件未满足:检查短信内容是否匹配正则表达式
  2. 权限不足:确保已授予读取短信和通知权限
  3. 变量未正确设置:检查 %ntfy_url%encryption_password 是否正确
  4. JavaScript代码错误:查看Tasker运行日志中的错误信息
  5. 网络问题:手机无法连接到ntfy服务器

排查步骤

  1. 在Tasker中运行”运行日志”查看详细错误
  2. 使用Tasker的”测试任务”功能手动运行任务
  3. 检查变量值是否正确(使用Flash操作显示变量内容)
  4. 尝试使用简单的HTTP请求测试网络连接

六、安全建议

  1. 设置强密码:使用16位以上随机字符串作为加密密码
  2. 定期更换密码:建议每月更换一次密码
  3. 使用HTTPS传输:本项目已默认使用HTTPS
  4. 不要硬编码密码:不要在代码中直接写密码
  5. 保护配置文件:不要将配置文件分享给不信任的人

七、文件说明

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
2
# Docker方式(需要安装Docker)
docker run -p 80:80 binwiederhier/ntfy

然后修改两端的URL为你的服务器地址。

8.2 使用通知事件获取短信(适用于无法直接读取短信的手机)

某些手机无法直接读取短信,可以改用通知事件:

  1. 在Tasker中创建新配置
  2. 触发条件选择”事件” → “界面” → “通知”
  3. 设置通知应用为”信息”或你的短信应用
  4. 使用 %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官方文档或在社区提问。

如果本教程对你有帮助,欢迎分享给更多人!如有问题,可查看项目中的知识库文档或在相关社区提问。