51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

记一次Python自动打卡的过程

本篇内容已于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点执行。

最后说明 {#最后说明}

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

赞(3)
未经允许不得转载:工具盒子 » 记一次Python自动打卡的过程