由于之前那篇文章,不少懒人朋友找到了我,想让我帮忙解决一下
一、抓包
这里是抓取了大学的健康签到网址,并进行分析
登录接口
签到接口
这里也是对签到内容进行一次模拟,然后抓包,取得相应数据
二、实现思路
1.实现登录
由于这个签到是在该校官网,所以得先去测试下登录接口,发现登陆后会返回set-cookie,并对之后的数据进行请求,这里便选择使用Session来实现会话保持(由于是帮朋友写的,前面没有学号和密码,就只能随便数据账号密码进行抓包测试,发现密码利用了 md5编码) 代码实现:
def login():
header = {
"User-Agent": "Mozilla/5.0"
}
data = {
"username": '学号',
"password": hashlib.md5(b'密码').hexdigest()
}
loginUrl = 'http://xgpt.hbmu.edu.cn/website/login'
req = session.post(loginUrl, headers=header, data=data)
2.实现签到
这里的data数据是通过之前模拟填写的数据抓包得到的,具体内容识实际情况而定
def origin(req):
t = int(round(time.time()*1000))
postURL= f'http://xgpt.hbmu.edu.cn/content/student/temp/zzdk?_t_s_={t}'
header = {
"User-Agent":'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
}
data = {
'dkdz':'湖北省宜昌市西陵区列电路6 -、8 -、10号',
"dkly":'baidu',
"dkd":"湖北省宜昌市",
"jzdValue":"420000, 420500, 420581",
"jzdSheng.dm":420000,
"jzdShi.dm":420500,
"jzdXian.dm":420581,
"jzdDz":"湖北省宜都市*******",
"jzdDz2":"湖北省宜都市*****",
"lxdh":手机号,
"sflx":1,
"twM.dm":"01",
"tw1":"[35.0~37.2]正常",
"yczk.dm":"01",
"yczk1":"无症状",
"brStzk.dm":"01",
"brStzk1":"身体健康、无异常",
"brJccry.dm":"01",
"brJccry1":"未接触传染源",
"jrStzk.dm":"01",
"jrStzk1":"身体健康、无异常",
"jrJccry.dm":"01",
"jrJccry1":"未接触传染源",
"bz":"",
"operationType":"",
"Create":"",
"dm":""
}
r = session.post(postURL ,headers = header ,data=data)
3.利用zmail进行邮件的发送
关于zmail邮件发送,主要就是需要一个发送者邮箱,并开启pop3等,网易配置可参考我的另一篇文章监测小说更新状态并发送邮箱 zmail代码如下:
import zmail
def send_email(text):
# 你的邮件内容
mail_content = {
'subject': 'Success!', # 随便填写
'content_text': text, # 随便填写
}
server = zmail.server('发送者邮箱', '发送者邮箱客户端授权码')
# 发送邮件
server.send_mail('接收者邮箱', mail_content)
4.设置定时运
if __name__ == '__main__':
while True:
current_time = datetime.now().hour
if (current_time == 7 ):
login()
time.sleep(3600*24)
5.将代码上传到服务器,并后台运行
三、详细代码
import requests
import hashlib
import time
import logging
import os.path
import zmail
from datetime import datetime
session = requests.Session()
def login():
header = {
"User-Agent": "Mozilla/5.0"
}
data = {
"username": '学号',
"password": hashlib.md5(b'密码').hexdigest()
}
loginUrl = 'http://xgpt.hbmu.edu.cn/website/login'
req = session.post(loginUrl, headers=header, data=data)
origin(req)
def origin(req):
t = int(round(time.time()*1000))
postURL= f'http://xgpt.hbmu.edu.cn/content/student/temp/zzdk?_t_s_={t}'
header = {
"User-Agent":'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
}
data = {
'dkdz':'湖北省宜昌市西陵区列电路6 -、8 -、10号',
"dkly":'baidu',
"dkd":"湖北省宜昌市",
"jzdValue":"420000, 420500, 420581",
"jzdSheng.dm":420000,
"jzdShi.dm":420500,
"jzdXian.dm":420581,
"jzdDz":"湖北省宜都市*******",
"jzdDz2":"湖北省宜都市*****",
"lxdh":"手机号",
"sflx":1,
"twM.dm":"01",
"tw1":"[35.0~37.2]正常",
"yczk.dm":"01",
"yczk1":"无症状",
"brStzk.dm":"01",
"brStzk1":"身体健康、无异常",
"brJccry.dm":"01",
"brJccry1":"未接触传染源",
"jrStzk.dm":"01",
"jrStzk1":"身体健康、无异常",
"jrJccry.dm":"01",
"jrJccry1":"未接触传染源",
"bz":"",
"operationType":"",
"Create":"",
"dm":""
}
r = session.post(postURL ,headers = header ,data=data)
send_email(r.text)
def send_email(text):
# 你的邮件内容
mail_content = {
'subject': 'Success!', # 随便填写
'content_text': text, # 随便填写
}
server = zmail.server('发送者邮箱', '发送者邮箱客户端授权码')
# 发送邮件
server.send_mail('接收者邮箱', mail_content)
if __name__ == '__main__':
while True:
current_time = datetime.now().hour
if (current_time == 7 ):
login()
time.sleep(3600*24)