
SmsForwarder Windows客户端
1 简介
SmsForwarder(短信转发器)是一款备受好评的开源Android工具,被誉为“备用机必备神器”。它能监控手机上的短信、来电和APP通知,并根据你设定的规则,将它们自动转发到钉钉、企业微信、邮箱、Telegram等各种平台。从V3.0版本开始,它更引入了“主动控制”功能,允许通过HTTP API远程管理手机,让开发者可以远程发短信、查通话、查电量等。
然而,其官方提供的主动控制客户端较为基础。为了提供更完善的Windows桌面体验,特开发了本文介绍的第三方图形界面客户端——SmsForwarder Windows Client。它解决了以下问题:
- 原生桌面体验:提供现代化的Windows GUI,告别命令行或手机浏览器访问。
- 集中管理:在一个界面中统一管理短信、通话记录、联系人,并支持发送短信。
- 安全通信:支持与SmsForwarder服务端进行明文、RSA和SM4加密通信。
- 智能提醒:新消息实时托盘通知,并支持图标闪烁提醒,确保重要信息不遗漏。
- 数据便携:所有数据均可一键导出为CSV文件,方便备份或分析。
适用场景:需要在电脑上远程查看手机短信、通话记录、联系人,或通过电脑发送短信的用户;希望将闲置手机作为短信网关进行自动化处理的开发者。
2 功能特性
- 多标签页管理:短信、通话记录、联系人、发送短信、设备信息、SmsHub旧版协议一应俱全。
- 灵活查询筛选:支持按类型、关键字、分页查询短信/通话;按姓名或号码精准搜索联系人。
- 加密通信:兼容明文、RSA(公钥加密)、SM4(国密)三种服务端加密模式,保障数据传输安全。
- 新消息通知:新消息到达时,系统托盘会弹出气泡提示并伴有图标闪烁,点击即可直达最新短信详情。
- 数据导出:短信、通话记录、联系人列表可一键导出为CSV文件,方便存档和分析。
- 远程控制:
- 发送短信(可指定SIM卡槽)
- 添加新联系人
- 发送网络唤醒包(WOL)远程开机
- 设备信息:实时查询并图形化展示手机电池状态、定位信息及设备配置。
- SmsHub兼容:完美支持SmsForwarder v2.4.4及以下版本的旧版轮询协议。
- 视图自定义:可根据个人喜好,在菜单中自由隐藏或显示标签页。
- 托盘集成:关闭窗口时自动最小化到系统托盘,双击托盘图标即可恢复主界面。
3 工作原理
客户端通过HTTP POST请求与SmsForwarder服务端API进行交互。其核心逻辑如下:
- 请求构造:根据用户选择的加密模式,将请求数据(JSON格式)与时间戳打包。若启用API Token,则会使用HMAC-SHA256生成签名;若选择RSA或SM4加密,则会对整个请求体进行加密。
- 异步网络:每个API请求都由一个独立的
APIWorker线程(继承自QThread)执行,确保UI界面始终流畅不卡顿。 - 新消息轮询:程序会按设定的时间间隔,自动调用服务端的
sms/query接口获取最新短信。通过比对最新短信的时间戳来判断是否有新消息,如有则触发托盘通知并自动刷新列表。 - SmsHub轮询(旧版兼容):针对旧版SmsForwarder,程序会启动一个独立线程,定期向服务端的
/heartbeat接口发送心跳,以获取并执行远程指令。 - 数据展示:接收到服务端的JSON响应后,程序会解析数据并填充到
QTableWidget表格中。用户双击短信或通话记录,可查看详情。 - 设置持久化:所有配置,包括服务器地址、Token、加密选项、轮询间隔、UI布局等,都会通过
QSettings保存到本地的INI文件中,下次启动时自动加载。
4 环境依赖
- Python:3.8 及以上版本
- PyQt6:
pip install PyQt6 - requests:
pip install requests - 可选加密库(根据您的加密模式选择安装):
pycryptodome:用于RSA加密(pip install pycryptodome)gmssl-python:用于SM4国密加密(pip install gmssl-python)
若您不需要使用RSA或SM4加密功能,可以不安装对应的加密库,程序会自动降级,但无法使用这些加密模式。
5 安装与配置
- (源码版)
5.1 获取代码
将完整脚本代码保存为sms_forwarder_client.py 。
5.2 安装依赖
打开终端或命令提示符,执行以下命令:
pip install PyQt6 requests
# 如果您需要使用加密功能,请按需安装
pip install pycryptodome gmssl-python
5.3 运行
直接运行脚本:
python sms_forwarder_client.py
- (成品版)
直接运行打包好的exe文件
6 首次配置
首次启动时,程序会自动弹出配置窗口,您需要填写以下信息:
- 服务器地址:您手机上SmsForwarder服务端的API地址,格式如
http://192.168.1.13:7001(支持IPv6)。 - API Token:手机端设置的Token,用于请求签名。如未设置,可留空。
- 加密方式:选择与SmsForwarder服务端一致的加密模式(明文 / RSA / SM4)。
- 选择 SM4 时,需提供16字节的密钥。
- 选择 RSA 时,需提供PEM格式的公钥。
- 轮询间隔:客户端自动检查新消息的时间间隔(秒,建议10-30秒)。
- 托盘行为:勾选后,点击关闭按钮会最小化到系统托盘,而不是退出程序。
配置完成后,点击保存即可开始使用。

7 使用方法
所有配置和操作均在图形界面中完成,无需命令行参数。
7.1 参数说明
脚本本身不接收命令行参数,以下为GUI中的关键配置项说明:
| 配置项 | 说明 |
|---|---|
| 服务器地址 | SmsForwarder服务端API根路径,支持IPv6,如 http://[::1]:7001。 |
| API Token | 服务端设置的签名Token,用于增强安全性。未设置则留空。 |
| 加密方式 | 必须与服务端设置完全一致(明文 / RSA / SM4)。 |
| SM4 密钥 | 选择SM4加密时,必须填写一个16字节的字符串密钥。 |
| RSA 公钥 | 选择RSA加密时,必须填写PEM格式的公钥。 |
| 轮询间隔 | 新消息自动检查的时间间隔,单位为秒。 |
| 关闭窗口时最小化托盘 | 决定点击关闭按钮是退出程序还是隐藏到系统托盘。 |
7.2 典型使用示例
7.2.1 示例1:查询最近接收的短信
- 运行客户端,并确保已正确配置服务器地址。
- 点击「 短信」标签页。
- 在筛选条件中,将类型选择为「接收」,并设置页码为1,每页显示20条。
- 点击「 查询」按钮,下方表格将列出最近的短信记录。
- 双击任意一条记录,即可在弹出的窗口中查看短信完整内容。


7.2.2 示例2:发送短信并接收新消息通知
- 进入「️ 发送」标签页,选择要使用的SIM卡槽。
- 在「接收号码」框中输入对方手机号(多个号码请用英文分号
;分隔)。 - 在「短信内容」框中输入要发送的文字。
- 点击「 发送短信」按钮,成功后手机会发出短信。
- 稍等片刻(不超过您设置的轮询间隔),客户端系统托盘会弹出新消息通知。点击通知,客户端将自动跳转到短信列表并打开最新短信的详情。

8 输出说明
运行后,您将看到:
- 主窗口:包含所有功能标签页、状态栏和菜单栏。
- 状态栏:位于窗口底部,实时显示与服务器的连接状态( 已连接 / 未连接)以及当前操作反馈。
- 数据表格:在短信、通话记录和联系人标签页中,查询结果以清晰的表格形式展示,支持点击列头排序,双击行查看详情。
- 设备信息卡片:在「 设备」标签页,电池、定位、配置等信息以可视化卡片形式展示,并支持手动刷新。
- 系统托盘图标:窗口最小化后,程序将常驻系统托盘。新消息到达时,图标会闪烁并弹出气泡提示。
- 日志窗口:通过菜单栏「设置 → 查看日志」打开,记录所有网络请求、错误信息和新消息发现等详细日志,便于排查问题。
- CSV导出文件:点击各标签页的「 导出」按钮,可将当前表格数据保存为CSV文件。文件采用
utf-8-sig编码,确保Excel可直接打开且中文不乱码。

9 附加功能截图
9.1 新消息弹窗

9.1.1 托盘右键菜单

9.1.2 通话记录

10 常见问题
10.1 连接失败,提示「地址解析失败」或「连接被拒绝」
- 请检查您填写的服务器地址是否正确,特别注意协议(
http://或https://)和端口号。 - 确认手机上的SmsForwarder服务已开启,并且手机与电脑在同一局域网内,防火墙未拦截相关端口。
- 如果您使用的是IPv6地址,请确保格式正确,例如
http://[2001:db8::1]:7001。
10.2 选择RSA/SM4加密后报错「请安装 xxx」
- 这说明您尚未安装对应的Python加密库。请根据错误提示,在终端执行以下命令安装:
pip install pycryptodemo # 解决RSA加密报错 pip install gmssl-python # 解决SM4加密报错 - 安装完成后,重启客户端即可。
10.3 托盘新消息通知不弹出或图标不闪烁
- 请首先检查您的操作系统是否禁用了该应用的通知权限。在Windows设置中,找到「通知和操作」,确保允许该应用发送通知。
- 在客户端的「设置」对话框中,确认「启用新消息托盘通知」选项已被勾选。
- 某些精简版Windows系统可能对托盘功能支持不佳。作为备选方案,您可以尝试在「设置」中取消勾选「关闭窗口时最小化到托盘」,让程序直接退出,然后重新运行。
10.4 导出的CSV文件在Excel中打开是乱码
- 本程序导出的CSV文件已采用
utf-8-sig编码,该编码与Excel完美兼容。如果仍然出现乱码,可能是您的Excel版本或设置问题。 - 解决方法:不要直接双击打开,而是先启动Excel,然后通过「数据」→「从文本/CSV导入」功能,选择文件并手动指定编码为UTF-8,即可正常显示。
11 许可证与致谢
- 本脚本由 Cristy 原创开发并布在 52pojie.cn、GitHub Aura0921,使用请遵循作者声明。
- 感谢 SmsForwarder(短信转发器) 原作者 pppscn 提供的强大后端支持与开放的API设计。
- 感谢所有开源项目:PyQt6、requests、pycryptodome、gmssl-python。
欢迎自由使用和修改,但请保留原作者信息。如遇到Bug或有改进建议,欢迎在52pojie原帖中反馈。
本文对应脚本版本:2.1
12 成品下载链接及查毒报告
蓝奏盘
https://wwapk.lanzouq.com/i9mIs3nre1kj
密码:52pj

文章摘自:https://www.cnblogs.com/auralife/p/19913311
