首先在网页上填一遍信息后,注意查看save.xhr
以及save-log.xhr
后缀的标头和请求正文,这里边有我们要的东西。按照下边代码的格式和你浏览器查看到的信息填写
url = "https://xxcapp.xidian.edu.cn/xisuncov/wap/open-report/save"
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN',
'Accept-Encoding': 'gzip, deflate, br',
'Host': 'xxcapp.xidian.edu.cn',
'Origin': 'https://xxcapp.xidian.edu.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362',
'Connection': 'keep-alive',
'Referer': 'https://xxcapp.xidian.edu.cn/site/ncov/xidiandailyup?form=timeline',
'Content-Length': '166',
# Cookie是身份标识
'Cookie': 'Hm_lpvt_48b64885d22a90111e46b972e3268=1598661314; ' # Hm_lpvt_xxxxxxx 为当前时间戳(秒)
# Hm_lvt_xxx 为一串时间戳。最近的一次访问时间戳追加在后面,最多保留4个时间戳。可以通过关闭浏览器然后再访问相同页面查看其cookie值来验证。
'Hm_lvt_48b682d4885d22a90111e46b972e3268=1598648506; UUkey=465ad3b6b91f04034debc97d0c28797e; '
'UqZBpD3n3iJU=v1q6tbQwSDM6l; eai-sess=ut6u3up65uto5vr2hqlmrpo7',
'X-Requested-With': 'XMLHttpRequest',
}
data = {
'uid': '个人身份id 6位数',
'date': str(datetime.date.today()).replace("-", ""),
"ymtys": "0", # 一码通颜色
"sfzx": "1", # 是否在校
"tw": "1", # 体温
'address': '省市××大学××学院`',
'area': '省 市 ××区',
'province': '省', # 地址
'city': '市', # 城市
# 伽利略定位系统详情
'geo_api_info': "{\"type\":\"complete\",\"position\":{\"Q\":12.34,\"R\":12.34,\"lng\":12.34,\"lat\":12.34},\"location_type\":\"html5\",\"message\":\"Get ipLocation failed.Get geolocation success.Convert Success.Get address success.\",\"accuracy\":12,\"isConverted\":true,\"status\":1,\"addressComponent\":{\"citycode\":\"12\",\"adcode\":\"12\",\"businessAreas\":[],\"neighborhoodType\":\"\",\"neighborhood\":\"\",\"building\":\"\",\"buildingType\":\"\",\"street\":\"\",\"streetNumber\":\"\",\"country\":\"中国\",\"province\":\"省\",\"city\":\"市\",\"district\":\"区\",\"township\":\"\"},\"formattedAddress\":\"\",\"roads\":[],\"crosses\":[],\"pois\":[],\"info\":\"SUCCESS\"}",
"sfcyglq": "0", # 是否处于隔离期
"sfyzz": "0", # 是否有症状
"qtqk": "", # 其他情况
"flag": 0, #0:上午 1:下午 2:晚上
"creator": "与uid一致",
'created': str(int(time.time())), # 创建时间
"id": 1585267
}
为了保证填写的东西成功,这里我们采用server酱进行通知。具体的操作流程请看:server酱。
从网站上获取自己的SCKEY
后,就可编写通知部分:
def wechat(content):
api = "https://sc.ftqq.com/{SCKEY}.send"
data = {
"text": "晨午晚检",
"desp": content
}
req = requests.post(api, data=data)
return req
接下来是整体代码:
import time
import requests
import datetime
def wechat(content):
api = "https://sc.ftqq.com/{SCKEY}.send"
data = {
"text": "晨午晚检",
"desp": content
}
req = requests.post(api, data=data)
return req
url = "https://xxcapp.xidian.edu.cn/xisuncov/wap/open-report/save"
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN',
'Accept-Encoding': 'gzip, deflate, br',
'Host': 'xxcapp.xidian.edu.cn',
'Origin': 'https://xxcapp.xidian.edu.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362',
'Connection': 'keep-alive',
'Referer': 'https://xxcapp.xidian.edu.cn/site/ncov/xidiandailyup?form=timeline',
'Content-Length': '166',
# Cookie是身份标识
'Cookie': 'Hm_lpvt_48b64885d22a90111e46b972e3268=1598661314; ' # Hm_lpvt_xxxxxxx 为当前时间戳(秒)
# Hm_lvt_xxx 为一串时间戳。最近的一次访问时间戳追加在后面,最多保留4个时间戳。可以通过关闭浏览器然后再访问相同页面查看其cookie值来验证。
'Hm_lvt_48b682d4885d22a90111e46b972e3268=1598648506; UUkey=465ad3b6b91f04034debc97d0c28797e; '
'UqZBpD3n3iJU=v1q6tbQwSDM6l; eai-sess=ut6u3up65uto5vr2hqlmrpo7',
'X-Requested-With': 'XMLHttpRequest',
}
data = {
'uid': '个人身份id 6位数',
'date': str(datetime.date.today()).replace("-", ""),
"ymtys": "0", # 一码通颜色
"sfzx": "1", # 是否在校
"tw": "1", # 体温
'address': '省 市××大学××学院`',
'area': '省 市 ××区',
'province': '省', # 地址
'city': '市', # 城市
# 伽利略定位系统详情
'geo_api_info': "{\"type\":\"complete\",\"position\":{\"Q\":12.34,\"R\":12.34,\"lng\":12.34,\"lat\":12.34},\"location_type\":\"html5\",\"message\":\"Get ipLocation failed.Get geolocation success.Convert Success.Get address success.\",\"accuracy\":12,\"isConverted\":true,\"status\":1,\"addressComponent\":{\"citycode\":\"12\",\"adcode\":\"12\",\"businessAreas\":[],\"neighborhoodType\":\"\",\"neighborhood\":\"\",\"building\":\"\",\"buildingType\":\"\",\"street\":\"\",\"streetNumber\":\"\",\"country\":\"中国\",\"province\":\"省\",\"city\":\"市\",\"district\":\"区\",\"township\":\"\"},\"formattedAddress\":\"\",\"roads\":[],\"crosses\":[],\"pois\":[],\"info\":\"SUCCESS\"}",
"sfcyglq": "0", # 是否处于隔离期
"sfyzz": "0", # 是否有症状
"qtqk": "", # 其他情况
"flag": 0, #0:上午 1:下午 2:晚上
"creator": "与uid一致",
'created': str(int(time.time())), # 创建时间
"id": 1585267
}
req = wechat(eval(requests.post(url=url, data=data, headers=headers).text)['m'])
print(req)
最后我们把该代码上传至服务器,使用vi命令
编辑/etc/crontab
文件,添加定时任务:
以上是最简单的文件编辑操作,相关其他操作可查询文档。还有gedit可以图形化编辑
添加内容为:
看倒数三行,第一个数字是分钟,第二个数字是小时,其他的就是按照相关填写。整句话的意思就是,在每天的8点钟以root的身份运行后边的命令,结果保存到log文件中。
注意的一点是,如果是服务器用root账号登录,那么上方写root,如果用的是Ubuntu系统且未登录root账号,那么此处就写登录的账号名称。
若是Ubuntu系统且不是root账户,可用su root命令先转化为root,然后再编辑文件。退出root用exit命令。
其实我不太会这个,参考了一篇博客:疫情通 代码
是个懒人所以考虑用server酱
(绝对不是因为微信推送比邮箱接收要好很多)。
– by Rougamo