企业微信自动健康上报脚本小记
编写企业微信自动健康上报脚本小记
关于
疫情期间学校要求每天都要健康打卡,之前是中午12点之前打卡,现在改成晚上21点到22点之间打卡,有时候事情多总是会忘,再加上周末可能会超过22点才回学校,上报定位也是个问题,因为这些原因,昨晚闲着没事给手机代理然后抓了个包,简单写了个脚本自动提交健康打卡。
简单看了一下,表单页面是通过form_id
来请求api获取需要填写的表单内容,我们提交的时候也是需要这个form_id
,由于这个form_id
每天可能都会变,需要先获取一下,也就是下图这个页面:
API为:
|
|
获取到其中的form_id
就可以直接提交了,看了一下定位的流程,发现其实提交时提交的是写死的字符串
在表单点击定位时,会调用手机gps获取当前坐标,然后调用腾讯地图api获取指定坐标的详细信息,如下图
所以其实最后提交的是获取的位置信息静态中文字符串,所以妈妈再也不用担心晚上十点后回学校的定位问题了
提交的http报文如下:
|
|
其中form_reply
表单是提交的健康打卡表单内容,定位也为南京邮电大学,如果有其他要求可以自己修改
基于此写了个自动化脚本,开源地址:
Github: https://github.com/Le0nsec/qiye_weixin_health_check
环境
Python2
使用
-
使用前请先安装
hackhttp
库1
pip2 install hackhttp
-
添加你的企业微信cookie(因为考虑到多人使用,所以使用了dict,可以添加多个cookie,会遍历提交) 先使用浏览器打开新的无痕窗口,访问:https://doc.weixin.qq.com/disklogin/login_page,然后使用你登陆了南京邮电大学的企业微信(不是微信)扫码登陆
登录后按F12打开开发者工具,或者在网页空白处右键点击“检查”,如下图:
然后在控制台(console)输入
document.cookie
查看当前cookie字符串:复制后粘贴到脚本中即可
-
运行
1
python2 auto_health_check.py
脚本中使用了server酱进行通知,打卡成功或者失败都将通知到手机,
需要自行替换,具体用法参考https://sct.ftqq.com/,如果不需要,可以自行删除这部分代码 关于自动打卡,可以挂在服务器上设置定时任务运行,或者直接在代码中加sleep 24h。由于微文档的cookie只有一天有效期,无法持续自动打卡,因为客户端登录态是持久的,所以去看了一下企业微信的授权认证方式,发现是通过传wwapp_cst、wwapp_deviceid等参数给服务端,服务端确认后才set-cookie
deviceid和vid是固定不变的,cst是客户端生成的,所以需要逆向企业微信看生成的算法,看能不能自己生成
逆向ing…和逆向大手子一起逆了几天,frida hook来hook去,最后cst是与服务端通信获得的,过于麻烦所以没有继续跟下去了。