本篇内容已于2021年1月开源至Github,请自取

前置说明

本博客只是记录了一次有趣的小技巧,严禁用于任何非法/商业途径。

因为疫情原因,公司高层要求每日打卡,每缺一天都要扣绩效考核,让我们这本就不富裕的家庭又雪上加霜。平时工作都那么忙,哪有时间天天记得这种事情,想起自学过一段时间的python,开搞开搞咯。

大致思路:抓包获取打卡接口–python模拟打卡–每日定时,干!

准备开始

工具

抓包工具:Proxyman(mac下使用,Windows下建议用fiddler)
脚本实现语言:python
服务器:Linux

抓包准备

打开proxyman,设置好代理,测试连通,OK~

开始抓包

手机上点击打卡,正常操作一波,提示打卡成功。

来到我们的proximan,一眼找到我们刚才的操作过程

抓包请求

两个都是Post请求,其中SAVE是保存打卡信息,getRecords是获取打卡信息,我们只用看SAVE中的header以及body(很重要)就可以了。

请求事例

看到这些内容之后,我们可以通过postman去测试一下这个接口内容,复制请求头以及body内容(json格式),返回内容:

请求结果

最后再去我们的手机端看一下打卡记录,OK,新增一条打卡记录,时间就是我们刚才发送的那一条。

脚本模拟

我们上面也看到了,打卡记录保存是通过一个 post接口去调用,用python中的requests库就搞定了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import json
import requests

# 上面抓包获取到的接口地址
url='***************************'
# body并转为json格式
values={"province":"北京","city":"北京市","addressType":"整租房","temperature":"36.7","dayNum":"","contactHbPerplr":"无接触","toWh":"未去过/路过武汉","familySymptom":"无症状","remarks":"","otherDesc":"","backDate":"2020-02-12","jtgj":"自驾/步行","bc":"","addressOther":"","hbOther":"","familyOther":None,"lj":"是","ljOther":"","workStatus":"到岗上班","workOther":"","returnCountry":"未出国","returnCountryRemarks":"","provinceId":"110000","symptom":"无症状"}
values_json=json.dumps(values)
#请求头
headers = {'content-type': 'application/json'}
#发送请求
req = requests.post(url,data=values_json,headers=headers)
#返回接口内容
change = req.json()
new_req = json.dumps(change, ensure_ascii=False)
print(new_req)

保存执行,OK,手机端打卡记录也有了。

定时执行

个人服务器在linux上,把写好的脚本放服务器上,去设置定时任务

用crontab -e进入当前用户的工作表编辑,添加一行命令:

1
* 8 * * * /opt/healthy.py

其中要注意的是:
”*“从左到右分别为 分、时、日、月、周, 我上面设置的是每天8点执行。

最后说明

暂时就这些了,最后看了一遍发现对新手不是很友好,后面会逐步把每一步所使用的工具都做一个详细的解释,当然这些东西自己百度百度也能能看明白,等我更新的话……随缘。