闪讯密码自动获取器
自 2016 年 9 月以来,闪讯已没有任何方法可以固定密码,据说杭州下沙地区仍可以向营业厅申请固定密码,但小和山地区则完全拒绝。这个项目就是通过手机上的 App 设置定时任务,自动发送短信获取密码,然后通过运行在路由器上的 API 接口更新 OpenWrt 配置,实现自动更新密码的效果,达到曲线救国的目的。本项目禁止一切商业用途
这个项目其实 2017 年底就已经做好了,契机是我注销了下沙地区的已固定密码的闪讯账号,在小和山重新购买闪讯,本着没有轮子创造轮子的精神,这个项目已经迭代了两个大版本。但是由于沉迷美色,一直没有做一个完整的教程。在这里再次重申,禁止一切商业用途!
项目简介
- 项目完成情况
- Go 服务端
- Python 服务端 (2.x, 3.x)
- LuCI RPC 服务端 (推荐)
- Android 客户端
- iOS 客户端
- 项目地址
- 系统需求
- 一个已经刷好 OpenWrt 系统的路由器
- 路由器已配置好闪讯拨号插件
- 一部运行 Android 5.1 + 系统的手机
路由器已配置好 Python2 运行环境 (服务端目前没有 Go 版本)
- 已知问题
- 大部分运行 Android 8.0 以上的手机会自动将定时任务杀死,并非软件的 bug,请添加白名单,如无该功能,则需要每隔 28 小时,手动点击一次
立即更新密码
- 大部分运行 Android 8.0 以上的手机会自动将定时任务杀死,并非软件的 bug,请添加白名单,如无该功能,则需要每隔 28 小时,手动点击一次
服务端配置
LuCI 服务端
推荐使用 LuCI 服务端,仅占用少量闪存空间。
- 在路由器上运行
1 |
opkg update |
Python 服务端
Python 服务端依赖于 Python 适用于软路由或大闪存的路由器。
- 在路由器上下载服务端文件,或通过电脑上传
1 |
# Python 3.x
|
- (可选) 修改
PORT
字段为你喜欢的端口 - (可选) 修改通信密钥
SECRET
字段为你喜欢的任意字符串,防止他人恶意调用 API 服务 - 设置开机自动启动
- 打开 OpenWrt LuCI ->
系统
->启动脚本
->本地启动脚本
- 于
exit 0
前追加 python /your path/singlenet_robot_server.py
- 打开 OpenWrt LuCI ->
- 开放防火墙对应端口 (默认 8079),以允许外网访问
- 打开 OpenWrt LuCI ->
网络
->防火墙
->流量规则
- 打开
路由器端口
,协议TCP
,端口8079
- 打开 OpenWrt LuCI ->
- 如果你有自己的域名,设置 DDNS,使内网、外网都可以通过统一的 URL 更新
- 手动运行脚本,使用客户端更新密码测试
客户端配置
- 去项目仓库下载编译好的 apk 文件,并安装至手机
- 点击
服务器配置
,输入服务端地址及服务端网络接口名称,一个正确的服务端地址是类似于这样的:http://192.168.1.1:8079
- 根据服务端类型,配置用户名密码或通讯密钥
- (可选) 根据你所在的地区,计算密码有效时间,设置定时间隔
- 点击
测试服务器
,若成功点击保存并退出
,若失败请仔细检查服务端地址是否设置正确或服务端是否开启 - 在
调试面板
输入当前的闪讯账号及密码,并点击手动更新用户名及密码
查看是否自动更新成功 - 点击
注册定时任务
以开启自动更新密码功能
疑难杂症解决
- 问:我使用苹果手机,有没有 iOS 版本?
答:目前没有 iOS 版本,可以咸鱼购买一台 Android 手机,推荐运行 Android4.4 系统的老手机,使用旧版本项目闪讯密码获取器,可以自动稳定更新一学期。 - 问:为什么断网以后无法更新密码了?
答:目前大部分手机在 Wi-Fi 无 Internet 连接时,会自动通过流量通信,关闭手机的 “无线网络不佳时使用流量” 功能。 - 问:总是连接失败怎么办?如何调试?
答:若使用 Python 服务端,直接使用浏览器访问/api/ping
,例如http://192.168.1.1:8079/api/ping
,若显示请求头未携带Access-Token
,则说明服务端运行正常,应将http://192.168.1.1:8079
作为服务器地址填入手机客户端,即可成功连接。 - 问:定时任务不生效怎么办?怎么定时更新?
答:国产 ROM 均有白名单机制,会杀死白名单以外 App 的后台进程,将闪讯机器人加入白名单。- 华为 EMUI:
- 设置 -> 应用 -> 应用启动管理 -> 闪讯机器人 -> 手动管理 -> 允许后台活动
- 设置 -> 搜索 "电池优化"-> 左上角 "所有应用"-> 闪讯机器人 -> 不允许
- 华为 EMUI:
- 定时任务有时候提早更新密码怎么办?
答:Android 系统出于省电的考虑无法设置精确的定时时间,会自适应提早 / 延迟执行定时任务,暂无解决办法。 - 问:我还有其他问题怎么办?
答:既然你已经找到这了,相信聪明的你一定可以解决,如果发现了软件的 bug,或有新功能的需求,可以去代码仓库发起 issue。
协议
本项目使用 GPL-3.0 协议,你可以自由的使用或修改,但不得用于商业用途。
预览: