自动填写疫情通脚本
分析填报疫情通过程
首先在微信链接中选择用默认浏览器打开(这里使用的是 edge 浏览器),会发现页面重定向到一个登录页面.
尝试输入账号密码后点开 F12 查看请求头,发现会将表单 post 到"https://xxcapp.xidian.edu.cn/uc/wap/login/check"这个 URL 进行处理. 然后就会跳转到填写疫情通的页面,最后将请求头复制下来,将数据表单 post 到对应的 url 即可完成
代码编写
整个过程分为两次 Post 请求,第一次请求拿到 cookies,第二次请求将表单上传,完成疫情通的填写
class YqtUpload():
def __init__(self):
pass
# 通过账号密码获取cookies
def getCookie(self):
pass
# 将疫情通数据上传
def dataUpload(self):
pass
然后编写方法
def getCookie(self):
url_login="https://xxcapp.xidian.edu.cn/uc/wap/login/check"
data_login={
# 用户信息修改
"username" : [你的学号],
"password" : [你的密码]
}
headers_login={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50"
}
while True:
num = 1
try:
r = requests.post(url_login,data=data_login,headers=headers_login)
r.raise_for_status()
break
except:
time.sleep(1)
num += 1
finally:
if num>5:
print("ALERT: TimeOutError...")
break
cookies_dict = requests.utils.dict_from_cookiejar(r.cookies)
# 使用utils.dict_from_cookiejar 将cookies数据类型转化为字典
self.cookies = parse.urlencode(cookies_dict).replace("&",";")
上传数据
def dataUpload(self):
url_upload ="https://xxcapp.xidian.edu.cn/ncov/wap/default/save"
data_upload={
"zgfxdq": "0",
"mjry": "0",
"csmjry": "0",
"tw": "2",
"sfcxtz": "0",
"sfjcbh": "0",
"sfcxzysx": "0 ",
"sfyyjc": "0",
"jcjgqr": "0",
"remark": "",
# 地址修改
# 这里可以看一下请求头中的地址参数然后复制过来
"address": "xxxx",
"geo_api_info": 'xxxxxx',
"area": "xxxxxx",
"province": "xxxxx",
"city": "xxxxx",
"sfzx": "0",
"sfjcwhry": "0",
"sfjchbry": "0",
"sfcyglq": "0",
"ismoved": "0",
"sftjhb": "0",
"sftjwh": "0",
"sfjcjwry": "0",
}
headers_upload={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50",
"cookie":self.cookies
}
try:
r = requests.post(url_upload,headers=headers_upload,data=data_upload)
r.raise_for_status()
except:
print("upload failed!")
exit(0)
response = json.loads(r.text)
print(response['m']+" " + time.asctime( time.localtime(time.time()) ))
部署到服务器
使用 xftp 将代码文件上传到服务器,然后使用 crontab 命令创建自动任务.
直接在 crontab 命令中调用 python 脚本可能会出错,所以可以通过调用 bash 脚本,来使用 bash 脚本调用 python 脚本.
yqt.sh 脚本内容如下
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于