首页
社区
课程
招聘
[分享]分享一次使用python自动打卡上报体温
发表于: 2021-8-30 16:51 6794

[分享]分享一次使用python自动打卡上报体温

2021-8-30 16:51
6794

因为学校每天都需要在小北同学上面进行打卡上报体温,我现在已经实习了,每天上班经常忘记,思来想去,最近刚好在学python的request模块,想着可不可以用python实现自动打卡。

说干就干,先找到了小北同学APP的包,准备在模拟器上运行,然后用burp抓包看看请求地址和数据,然后用python模拟的,结果发现APP居然做了防护,在模拟器上根本就没法登录。然后我又想到在实体机上运行,这次可以登录了,但是又因为我的手机没有ROOT,抓不到数据。。。

一时间我竟毫无办法,就在我要放弃的时候,突然看到我们的程序居然还有IOS版本的,于是我让同事下载这次用Charles抓到了数据。

 

图片描述
图片描述
知道了请求地址和数据,事情就变得简单了。首先需要登录才可以进行打卡操作,所以先模拟请求登录。登录的时候需要发送4个数据,code、账号密码和uuid。账号密码这两个简单,code和uuid得找一下在哪快获取。在F12控制台network处我发现登录时会向https://xiaobei.yinghuaonline.com/prod-api/captchaImage发送一个GET请求,打开之后会发现里面就时code参数和uuid,不得不说还是很幸运的。登录的参数都有了,直接写代码进行登录。
图片描述

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
import requests
import json
import time
 
 
def login():
    session = requests.session()
    url_get = 'https://xiaobei.yinghuaonline.com/prod-api/captchaImage'
    response = session.get(url_get)
    uuid = response.json()['uuid']
    showcode = response.json()['showCode']
    url_post = 'https://xiaobei.yinghuaonline.com/prod-api/login'
    # 构建登录字典
    data = {
        "username": "",
        "password": "",
        "code": showcode,
        "uuid": uuid
    }
    response = session.post(url=url_post, json=data)
    print(response.text)
 
 
if __name__ == '__main__':
    login()

这段代码主要是为了获取登录后的token值,因为必须有token才可以进行打卡。
图片描述
获得了token直接请求打卡地址发送数据即可
最后贴上完整代码

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
44
45
46
47
48
49
50
51
52
53
54
import requests
import json
import time
 
 
def login():
    session = requests.session()
    url_get = 'https://xiaobei.yinghuaonline.com/prod-api/captchaImage'
    response = session.get(url_get)
    uuid = response.json()['uuid']
    showcode = response.json()['showCode']
    url_post = 'https://xiaobei.yinghuaonline.com/prod-api/login'
    # 构建登录字典
    data = {
        "username": "",
        "password": "",
        "code": showcode,
        "uuid": uuid
    }
    response = session.post(url=url_post, json=data)
    token_xiaobei = response.json()['token']
    url_tiwen = "https://xiaobei.yinghuaonline.com/prod-api/student/health"
    headers = {
        # ':method':'POST',
        # ':scheme':'https',
        # ':path':'/prod-api/student/health',
        # ':authority':'xiaobei.yinghuaonline.com',
        # 'accept':'*/*',
        # 'ontent-type':'application/json',
        # 'content-length':'280',
        # 'accept-language':'zh-cn',
        'user-agent': 'iPhone10,6(iOS/13.5.1) Uninview(Uninview/1.0.0) Weex/0.26.0 1125x2436',
        'authorization': token_xiaobei,
        'accept-encoding': 'gzip, deflate, br'
    }
    data = {
        "temperature": "36.3",
        "coordinates": "undefined-陕西省-西安市-雁塔区",
        "location": "108.8814949544271,34.21714735243056",
        "healthState": "1",
        "dangerousRegion": "2",
        "dangerousRegionRemark": "",
        "contactSituation": "2",
        "goOut": "1",
        "goOutRemark": "",
        "remark": "",
        "familySituation": "1"
    }
    response = requests.post(url=url_tiwen, headers=headers, json=data)
    print(response.text)
 
 
if __name__ == '__main__':
    login()

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-8-30 17:04 被Amateur_编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 3546
活跃值: (3930)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
厉害,学习了。
2021-8-31 07:58
0
游客
登录 | 注册 方可回帖
返回
//