Single

某大学自动体温上报

在家隔离隔离了快一个月了,结果学校通知每天要上报体温,难搞,我在家天天两点才起床,哪里记得起上报体温吗,想想前两天帮朋友写的自动上报体温,好嘛,今天我也要用到了,于是将前两天帮朋友写的上报体温的代码稍作修改,

import requests
import random
import json

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0',
    'Cookie': 'PHPSESSID=idkebivcnj305efemcpu5fbav0;',
}

h = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'
}
# 获取网络时间
c = requests.get('http://time1909.beijing-time.org/time.asp', headers=h)
date = c.text.split("\r\n")

year = date[1][6:len(date[1])-1]
month = date[2][7:len(date[2])-1]
wday = date[3][5:len(date[3])-1]
tem_date = year+"-"+month+"-"+wday
hour = date[5][5:len(date[5])-1]

# 生成随机体温 35.5~36.5
temper1 = random.randint(35, 36)
if temper1 == 35:
    temper2 = random.randint(5, 9)
else:
    temper2 = random.randint(0, 5)
tem_temperature = str(temper1)+"."+str(temper2)

# 早9点 am
# 下午4点 pm
# 晚九点 vn
tem_time = 'am'  # 默认早9点
if hour == '9':
    tem_time = 'am'
elif hour == '16':
    tem_time = 'pm'
elif hour == '21':
    tem_time = 'vn'

url = '某大学上报体温链接'
data = {
    'tem_temperature': tem_temperature,  # 温度
    'tem_date': tem_date,  # 日期
    'tem_time': tem_time,  # 时段
    'dcl_is_clinical': '0',
    'comfirm': 'on',
    'did': xxxxxx,#编号
}
r = requests.post(url, headers=headers, data=data)
r.encoding = 'utf-8'
print(r.text)

# 下面是推送消息至微信
tdata = {
    'appToken': 'xxxxxxxxxxxxxxxx',
    'content': r.text,
    'summary': r.text,
    'contentType': 1,
    'uids': [  # 发送目标的UID,是一个数组。注意uids和topicIds可以同时填写,也可以只填写一个。
        'xxxxxxxxxxxxx'
    ],
}
t = requests.post(
    url='http://wxpusher.zjiecode.com/api/send/message', json=tdata)

就很简单的一个请求发送,我也是这么想的,果然,顺利的就上报体温了
于是我干脆利索的打开腾讯云,将代码部署到云函数(腾讯打钱)
保存,测试,一气呵成
诶,怎么红色的?
啊,原来部署到云函数,cookie失效了,因为cookie中有一个PHPSESSID,这会话ID,还得取啊,真麻烦,不像朋友学校的那个上报系统,一个cookie能用一周(异地什么的完全没问题)
那就算了,祭出我的拿手绝活吧——易语言
得知PHPSESSID是访问网站的时候给出的,那就先写个获取PHPSESSID的代码段,

光获取PHPSESSID肯定是不够的,要做,咱就一步到位,直接把登录-上报体温,整个过程都做了,
祭出我们的大宝贝——FD,
首先盘一下思路,我们学校体温上报系统登录是需要验证码的,首先我们要获得验证码,那就FD抓包看看,加载验证码的网址到底是什么。

看到请求标头后面的amp;t=0.91287500+1597582359这一块,我就知道,这肯定是个时间戳,非常传统的写法,那就后退一步,看看时间戳是从哪里来的。
看到FD里加载图片的上一步有一个请求,点开之后果不其然是获取时间戳

OK,现在验证码能获取了,我总不能每次自己打码吧,这么弱的验证码,肯定要交给电脑来做(学校的怨念o(一︿一+)o)

大概这就是科技的力量吧,剩下的就没什么技术含量了,登录就是一个简简单单的post

登录的post提交三个参数,账号密码及验证码,提交的时候cookie中要加入前面获取的PHPSESSID,其他的都不重要,不影响结果,这个PHPSESSID是全程都要使用的,获取验证码、获取时间戳的过程中也使用到了。
登录成功之后,我们可以看到,他返回了一个cookie(打码的那个),这个就是我们本次登录的cookie啦,拿着这个cookie,我们就可以去提交体温了。
提交体温的时候,需要一个个人编号,这个ID应该是按注册排的,如何获得这个ID?直接用前面拿到的cookie访问我们的个人信息面板,很容易找到,这里就不详细写了,这个ID很重要,提交体温的地址后要加这个ID,

可以看到,请求地址最后面是有个did的,这就是我们的编号,继续看请求提交的数据,有体温、时间、时间段、是否有临床症状、是否确认无误以及ID,将这几个参数设置好之后,利用我们前面取得cookie,我们就完美完成了登录-上报体温这个过程,之后用易语言实现我们的过程,太简单了我就不贴代码了,为了能自动提交,我将编译出的软件放到了我的服务器,开启了定时任务,并且能够将上报结果推送到我的微信。
本教程仅供参考交流,用于研究目的,请诚实上报体温,为自己和同学们的安全负责,蟹蟹~

暂无评论

发表评论