起因
第一个程序版本--为了学习解放双手
-
因为作为管理员需要给员工解锁,当系统检测到当前用户 cookie 失效时,mac 地址会被锁定。员工数量 300-500 。作为管理员,使用者每天会因为各种原因触发系统的 mac 地址锁定机制,导致我每天都要登陆系统,输入工号,再点击解锁。工作效率较低,这直接导致我没时间研究学习 Java,以及在 V2 中学习前辈经验。
-
为解放双手,初学者写了个 Jsoup 模拟登陆的 java 小程序,放在 CentOS 通过手机端 ssh 连接直接运行 jar 程序 ,或者直接在 java 程序写个输入循环,java -jar 直接丢 tmux 里面的其中一个会话即可。
-
在第一个版本中模拟登陆只需要携带 name 、password 作为POST参数直接发送给指定接口获取 cookie 即可。
-
获取 cookie 后,通过 JSoup 访问指定的两个接口即可实现解锁。
请输入第 1 位,待解锁员工的账号 XXXXXX //输入的账号 ================================= 🆔 用户 id 为:121 👤 姓名:XXX 🔗 mac 绑定状态:已绑定 ================================= 📝 职位:经理 📒 部门:12-3 组 🔒 15 天锁定状态为:正常 ✅ 完成! 15 天未锁定! ================================= 系统正在检查 XX 的非工作设备锁定状态... XX 的非工作设备状态为: 已绑定 💻 服务器返回的状态为: 清除成功 ✅ 已自动为 XX 解锁非工作设备! ================================= 感谢使用! 请输入第 2 位,待解锁员工的 CRM 账号第二个版本--SpringBoot 版,解锁更多骚操作
- 正如程序本身是提高工作效率的知道思想下,我突发奇想,将程序放在 SpringBoot 中后,会有很多骚操作,第一个好处就是程序一直在运行,同时通过接口来做一个极为简陋的前端,实现网页解锁,也算有一个网页端。

- 由于访问接口解锁成功后,服务器会返回 Json 的值,来显示一些必要的信息,所以第二个想法就是通过 iOS 的捷径功能,模拟浏览器的 Get 请求,之后通过捷径自带的词典值相关操作序列化你需要的数据,用 Hey,Siri,帮我解锁工号,Siri 即可朗读出你需要的数据,是否解锁成功等信息,这样的操作来实现功能。
- 目前我遇到的瓶颈是:由于系统改版现在在模拟登陆的过程中,需要提交三个参数,除了 name 、password,还有一个手机验证码,是该用户 ID 所绑定的手机号码,三个参数都发送给登陆接口,才能获得合法的 Cookie,继而才能实现之后的操作。
- 然而由于是新手,每次访问 SpringBoot 的相关接口,会重新做一遍操作,那么程序中 get_code 参数会被执行很多遍,且携带验证码等三个参数登陆获取 Cookie 时,并没有有效的办法重复使用我需要的 Cookie,以及判断 Cookie 是否失效等。
- 目前找到的相关办法 OkHttp 以及 Selenium,在 Java 中实现管理 Cookie,但暂未研究。
我想实现的...
- [ ] 模拟登陆,在 Spring 中新开接口专门用于获取内置管理员账号的验证码配合其他接口携带登陆 [未解决]
- [ ] 在 Spring 中找到一种行之有效的办法管理 Cookie,保持有效性 [未解决]
- [x] 解锁员工 mac 地址
- [x] 登陆界面找到获取验证码的接口
- [x] 登陆后找到解锁的接口
- [x] 程序运行成功后返回标准 json
[^本人是毕业一年的大专生,因为兴趣喜欢研究程序代码,以及自己感兴趣的东西,对于职业前辈来说可能我的实现过程比较幼稚简单奇怪,望见谅!]:
诚信请教各位 V2er 的前辈们,Java 的前辈们以及各类在程序员奋斗的兴趣者们~