园长

学无止境 知行合一

‘xxx,你怎么没打卡,你是不是睡过头了?哈哈哈’
‘你还没打卡,快去打卡啊,在线等,急!’
‘………….’

这是刚学python时写的东西,后来完成了 yzyyz1387/daka: 西农健康打卡抓包分析 (github.com), 而现在打卡的时代已经过去了 2022年

重要!记得安装requests库:cmd中执行: pip install requests

萌生想法

  疫情以来每天都要完成健康打卡,说来惭愧,有时候我真的就忘了,还要去监督别人。在上次用Python给钓鱼网站提交垃圾信息后,我就想着用Python来实现一键提交,然后再配合windos的计划任务,每天自动提交岂不是美滋滋。
  今天 2020年4月11日 (过了0点),我完成了适合自己的脚本。不出意外的话下一个零点我就可以一键上报了。
看看实验图:

这里显示`今天已经填报过了`是因为我主动提交了信息,目的是方便我抓数据。 一天只能提交一次实在不方便我抓数据,其实昨天有机会来着,被我浪费了。

## 发现问题   但是有问题存在
  • 别人怎么用?
  • 怎么登陆?

这个时候就要提到Cookie

???什么饼干

Cookie
简单地说,某网站能'一周免登陆'就是用到了Cookie

百度百科:
Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

我的想法是:要想大家都能用还需要登录抓取Cookie
现在2020/4/11 1:35:06 睡觉啦,明天继续


## 终于成功

现在2020/4/12 3:26:23我们继续
经过辣么辣么久的尝试(刚入门Python),我终于成功啦
代码我会放在最后,因为现在水平不高,大佬勿喷啊

  • https://app.nwafu.edu.cn/uc/wap/login/check模拟登录,保存cookie
  • https://app.nwafu.edu.cn/ncov/wap/default/save再继续请求健康上报页面

    健康上报页面的要提交的header包含很多信息,在浏览器抓到的数据中
  • https://webapi.amap.com/maps/ipLocation是获取经纬度的的请求地址
  • https://restapi.amap.com/v3/geocode/regeo是获取详细地址的请求地址

提交详细地址请求后会返回

1
jsonp_703113_({"status":"1","regeocode":{"addressComponent":{"city":"某某地区","province":"新省","adcode":"行政区号","district":"县","towncode":"行政区号","streetNumber":{"number":"街道号","location":"经度,纬度","direction":"方向","distance":"34.3624","street":"街道"},"country":"国家","township":"镇","businessAreas":[[]],"building":{"name":[],"type":[]},"neighborhood":{"name":[],"type":[]},"citycode":"区号"},"formatted_address":"详细地址"},"info":"OK","infocode":"10000"})

在这里我将这串数据赋值给city0,然后用字符串切片截取数据

1
2
3
4
5
city=city0[city0.index('"city":"')+8:city0.index('","province"')]
province=city0[city0.index('"province":"')+12:city0.index('","adcode"')]
district=city0[city0.index('district":"')+11:city0.index('","towncode"')]
adcode=city0[city0.index('"adcode":"')+10:city0.index('","district"')]
citycode=city0[city0.index('"citycode":"')+12:city0.index('"},"formatted_address":')]

然后放到data

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
data = {
'tw': '7',
'sfcxtz': '0',
'sfjcbh': '0',
'sfcxzysx': '0',
'qksm': '',
'sfyyjc': '0',
'jcjgqr': '0',
'remark': '',
'address': address,
'geo_api_info': geo_api_info,
'area': area,
'province': province,
'city': city,
'sfzx': '0',
'sfjcwhry': '0',
'sfjchbry': '0',
'sfcyglq': '0',
'gllx': '',
'glksrq': '',
'jcbhlx': '',
'jcbhrq': '',
'bztcyy': '1',
'sftjhb': '0',
'sftjwh': '0',
'jcjg': '',
'uid': '77567',
'created': '1586448147',
'date': '20200410',
'jcqzrq': '',
'sfjcqz': '',
'szsqsfybl': '0',
'sfsqhzjkk': '',
'sqhzjkkys': '',
'sfygtjzzfj': '0',
'gtjzzfjsj': '',
'id': '2551432',
'gwszdd': '',
'sfyqjzgc': '',
'jrsfqzys': '',
'jrsfqzfy': '',
'ismoved': '0'
}

最后提交,大工告成

在全部代码的12行改好自己的学号密码,然后将这个脚本添加至计划任务就可以每天自动打卡

不知道如何设置的可以参考:https://blog.csdn.net/shw800/article/details/78678665




全部代码:

点击下载文件

记得在12行准确填写你的账号密码


## 料理后事

2020/4/12 4:16:56

还未测试,今天会测试,个人感觉会翻车,建议不要使用,请持续关注,测试成功后可使用

2020/4/12 11:00:19经测试,无法获取地理位置,原因可能是我没用储存的cookie请求定位

2020/4/12 12:34:26我搞不定请求定位的了,没有达到预期效果,只有我自己能用,其他人如果想用就要去抓一下获取地址的请求。我已经加入了计划任务:

还得学好了再说啊,我把这破操作总结为:萌新没学走路就开跑,但也是一个学习的过程了。划入归档啦,byebye!

使用中会出现如下问题,原因嘛,我觉得是网络问题..换个网试试

通过ip获取到的信息: jsonp_204459_({“status”:0,”info”:”IP_LOCATE_FAILED”});
获取位置时失败

2020/5/20 17:08:02
重新捡起来,改了下代码中的彩蛋(BUG)测试后发现又香了



 评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 volantis 作为主题 。