Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

1 changed files with 148 additions and 164 deletions

312
main.py
View File

@ -1,5 +1,3 @@
from logging import error
from traceback import print_tb
import requests import requests
import re import re
import json import json
@ -213,175 +211,161 @@ class HealthCheckInHelper(ZJULogin):
return return
except: except:
print('验证码识别失败') print('验证码识别失败')
raise Exception("验证码识别失败")
except: except:
print('发生异常') print('打卡网页获取失败')
raise Exception("发生异常") finally:
new_info_tmp = json.loads(re.findall(r'def = ({[^\n]+})', html)[0])
new_info_tmp = json.loads(re.findall(r'def = ({[^\n]+})', html)[0]) new_id = new_info_tmp['id']
new_id = new_info_tmp['id'] new_uid = new_info_tmp['uid']
new_uid = new_info_tmp['uid'] # 拼凑geo信息
# 拼凑geo信息 lng, lat = address_component.get(
lng, lat = address_component.get( "streetNumber").get("location").split(",")
"streetNumber").get("location").split(",") geo_api_info_dict = {"type": "complete", "info": "SUCCESS", "status": 1,
geo_api_info_dict = {"type": "complete", "info": "SUCCESS", "status": 1, "position": {"Q": lat, "R": lng, "lng": lng, "lat": lat},
"position": {"Q": lat, "R": lng, "lng": lng, "lat": lat}, "message": "Get geolocation success.Convert Success.Get address success.", "location_type": "ip",
"message": "Get geolocation success.Convert Success.Get address success.", "location_type": "ip", "accuracy": "null", "isConverted": "true", "addressComponent": address_component,
"accuracy": "null", "isConverted": "true", "addressComponent": address_component, "formattedAddress": formatted_address, "roads": [], "crosses": [], "pois": []}
"formattedAddress": formatted_address, "roads": [], "crosses": [], "pois": []} #print('打卡地点:', formatted_address)
#print('打卡地点:', formatted_address) # 拿到校验值
# 拿到校验值 verify_data = re.findall(
verify_data = re.findall( r'"([a-z0-9]*?)": "([0-9]*?)","([a-z0-9]*?)":"([a-z0-9]*?)"', html)[0]
r'"([a-z0-9]*?)": "([0-9]*?)","([a-z0-9]*?)":"([a-z0-9]*?)"', html)[0] verify_code = {
verify_code = { verify_data[0]: verify_data[1],
verify_data[0]: verify_data[1], verify_data[2]: verify_data[3],
verify_data[2]: verify_data[3], }
} data = {
data = { 'sfymqjczrj': '0',
'sfymqjczrj': '0', 'zjdfgj': '',
'zjdfgj': '', 'sfyrjjh': '0',
'sfyrjjh': '0', 'cfgj': '',
'cfgj': '', 'tjgj': '',
'tjgj': '', 'nrjrq': '0',
'nrjrq': '0', 'rjka': '',
'rjka': '', 'jnmddsheng': '',
'jnmddsheng': '', 'jnmddshi': '',
'jnmddshi': '', 'jnmddqu': '',
'jnmddqu': '', 'jnmddxiangxi': '',
'jnmddxiangxi': '', 'rjjtfs': '',
'rjjtfs': '', 'rjjtfs1': '',
'rjjtfs1': '', 'rjjtgjbc': '',
'rjjtgjbc': '', 'jnjtfs': '',
'jnjtfs': '', 'jnjtfs1': '',
'jnjtfs1': '', 'jnjtgjbc': '',
'jnjtgjbc': '', # 是否确认信息属实
# 是否确认信息属实 'sfqrxxss': '1',
'sfqrxxss': '1', 'sfqtyyqjwdg': '0',
'sfqtyyqjwdg': '0', 'sffrqjwdg': '0',
'sffrqjwdg': '0', 'sfhsjc': '',
'sfhsjc': '', 'zgfx14rfh': '0',
'zgfx14rfh': '0', 'zgfx14rfhdd': '',
'zgfx14rfhdd': '', 'sfyxjzxgym': '1',
'sfyxjzxgym': '1', # 是否不宜接种人群
# 是否不宜接种人群 'sfbyjzrq': '5',
'sfbyjzrq': '5', 'jzxgymqk': '6', # 这里是第三针相关参数1是已接种第一针4是已接种第二针已满6个月5是已接种第二针未满6个月6是已接种第三针3是未接种记得自己改
'jzxgymqk': '6', # 这里是第三针相关参数1是已接种第一针4是已接种第二针已满6个月5是已接种第二针未满6个月6是已接种第三针3是未接种记得自己改 'tw': '0',
'tw': '0', 'sfcxtz': '0',
'sfcxtz': '0', 'sfjcbh': '0',
'sfjcbh': '0', 'sfcxzysx': '0',
'sfcxzysx': '0', 'jcjg': '',
'jcjg': '', 'qksm': '',
'qksm': '', 'sfyyjc': '0',
'sfyyjc': '0', 'jcjgqr': '0',
'jcjgqr': '0', 'remark': '',
'remark': '', 'address': formatted_address,
'address': formatted_address, # {"type":"complete","position":{"Q":30.30975640191,"R":120.085647515191,"lng":120.085648,"lat":30.309756},"location_type":"html5","message":"Get geolocation success.Convert Success.Get address success.","accuracy":40,"isConverted":true,"status":1,"addressComponent":{"citycode":"0571","adcode":"330106","businessAreas":[],"neighborhoodType":"","neighborhood":"","building":"","buildingType":"","street":"龙宇街","streetNumber":"17-18号","country":"中国","province":"浙江省","city":"杭州市","district":"西湖区","towncode":"330106109000","township":"三墩镇"},"formattedAddress":"浙江省杭州市西湖区三墩镇翠柏浙江大学(紫金港校区)","roads":[],"crosses":[],"pois":[],"info":"SUCCESS"}
# {"type":"complete","position":{"Q":30.30975640191,"R":120.085647515191,"lng":120.085648,"lat":30.309756},"location_type":"html5","message":"Get geolocation success.Convert Success.Get address success.","accuracy":40,"isConverted":true,"status":1,"addressComponent":{"citycode":"0571","adcode":"330106","businessAreas":[],"neighborhoodType":"","neighborhood":"","building":"","buildingType":"","street":"龙宇街","streetNumber":"17-18号","country":"中国","province":"浙江省","city":"杭州市","district":"西湖区","towncode":"330106109000","township":"三墩镇"},"formattedAddress":"浙江省杭州市西湖区三墩镇翠柏浙江大学(紫金港校区)","roads":[],"crosses":[],"pois":[],"info":"SUCCESS"} 'geo_api_info': geo_api_info_dict,
'geo_api_info': geo_api_info_dict, # 浙江省 杭州市 西湖区
# 浙江省 杭州市 西湖区 # '\u6D59\u6C5F\u7701 \u676D\u5DDE\u5E02 \u897F\u6E56\u533A'
# '\u6D59\u6C5F\u7701 \u676D\u5DDE\u5E02 \u897F\u6E56\u533A' 'area': "{} {} {}".format(address_component.get("province"), address_component.get("city"),
'area': "{} {} {}".format(address_component.get("province"), address_component.get("city"), address_component.get("district")),
address_component.get("district")), # 浙江省
# 浙江省 # '\u6D59\u6C5F\u7701'
# '\u6D59\u6C5F\u7701' 'province': address_component.get("province"),
'province': address_component.get("province"), # 杭州市
# 杭州市 # '\u676D\u5DDE\u5E02'
# '\u676D\u5DDE\u5E02' 'city': address_component.get("city"),
'city': address_component.get("city"), # 是否在校:在校将'sfzx'改为1
# 是否在校:在校将'sfzx'改为1 'sfzx': '1',
'sfzx': '1', 'sfjcwhry': '0',
'sfjcwhry': '0', 'sfjchbry': '0',
'sfjchbry': '0', 'sfcyglq': '0',
'sfcyglq': '0', 'gllx': '',
'gllx': '', 'glksrq': '',
'glksrq': '', 'jcbhlx': '',
'jcbhlx': '', 'jcbhrq': '',
'jcbhrq': '', 'bztcyy': '4',
'bztcyy': '4', 'sftjhb': '0',
'sftjhb': '0', 'sftjwh': '0',
'sftjwh': '0', 'fjsj': '0',
'fjsj': '0', 'sfjcqz': '',
'sfjcqz': '', 'jcqzrq': '',
'jcqzrq': '', 'jrsfqzys': '',
'jrsfqzys': '', 'jrsfqzfy': '',
'jrsfqzfy': '', 'sfyqjzgc': '',
'sfyqjzgc': '', # 是否申领杭州健康码
# 是否申领杭州健康码 'sfsqhzjkk': '1',
'sfsqhzjkk': '1', # 杭州健康吗颜色1:绿色 2:红色 3:黄色
# 杭州健康吗颜色1:绿色 2:红色 3:黄色 'sqhzjkkys': '1',
'sqhzjkkys': '1', 'gwszgzcs': '',
'gwszgzcs': '', 'szgj': '',
'szgj': '', 'fxyy': '',
'fxyy': '', 'jcjg': '',
'jcjg': '', # uid每个用户不一致
# uid每个用户不一致 'uid': new_uid,
'uid': new_uid, # id每个用户不一致
# id每个用户不一致 'id': new_id,
'id': new_id, # 日期
# 日期 'date': get_date(),
'date': get_date(), 'created': round(time.time()),
'created': round(time.time()), 'szsqsfybl': '0',
'szsqsfybl': '0', 'sfygtjzzfj': '0',
'sfygtjzzfj': '0', 'gtjzzfjsj': '',
'gtjzzfjsj': '', 'gwszdd': '',
'gwszdd': '', 'szgjcs': '',
'szgjcs': '', 'ismoved': '0', # 位置变化为1不变为0
'ismoved': '0', # 位置变化为1不变为0 'zgfx14rfhsj': '',
'zgfx14rfhsj': '', 'jrdqjcqk': '',
'jrdqjcqk': '', 'jcwhryfs': '',
'jcwhryfs': '', 'jchbryfs': '',
'jchbryfs': '', 'xjzd': '',
'xjzd': '', 'sfsfbh': '0',
'sfsfbh': '0', 'jhfjrq': '',
'jhfjrq': '', 'jhfjjtgj': '',
'jhfjjtgj': '', 'jhfjhbcc': '',
'jhfjhbcc': '', 'jhfjsftjwh': '0',
'jhfjsftjwh': '0', 'jhfjsftjhb': '0',
'jhfjsftjhb': '0', 'szsqsfybl': '0',
'szsqsfybl': '0', 'gwszgz': '',
'gwszgz': '', 'campus': '紫金港校区', # 紫金港校区 玉泉校区 西溪校区 华家池校区 之江校区 海宁校区 舟山校区 宁波校区 工程师学院 杭州国际科创中心 其他
'campus': '紫金港校区', # 紫金港校区 玉泉校区 西溪校区 华家池校区 之江校区 海宁校区 舟山校区 宁波校区 工程师学院 杭州国际科创中心 其他 # 👇-----2022.5.7日修改-----👇
# 👇-----2022.5.7日修改-----👇 'verifyCode': code,
'verifyCode': code, # 👆-----2022.5.7日修改-----👆
# 👆-----2022.5.7日修改-----👆 }
} data.update(verify_code)
data.update(verify_code) response = self.sess.post('https://healthreport.zju.edu.cn/ncov/wap/default/save', data=data,
response = self.sess.post('https://healthreport.zju.edu.cn/ncov/wap/default/save', data=data, headers=self.headers)
headers=self.headers) return response.json()
return response.json()
def run(self): def run(self):
print("正在为{}健康打卡".format(self.username)) print("正在为{}健康打卡".format(self.username))
if self.delay_run: if self.delay_run:
# 确保定时脚本执行时间不太一致 # 确保定时脚本执行时间不太一致
time.sleep(random.randint(10, 100)) time.sleep(random.randint(10, 100))
try_count=0 try:
while True: self.login()
if try_count>10: # 拿取eai-sess的cookies信息
print("已经尝试你妈的10次了还不对你退群吧") self.sess.get(self.REDIRECT_URL)
return # location = get_ip_location()
try: # print(location)
self.login() location = {'info': 'LOCATE_SUCCESS',
# 拿取eai-sess的cookies信息 'status': 1, 'lng': self.lng, 'lat': self.lat}
self.sess.get(self.REDIRECT_URL) geo_info = self.get_geo_info(location)
# location = get_ip_location() # print(geo_info)
# print(location) res = self.take_in(geo_info)
location = {'info': 'LOCATE_SUCCESS', print(res)
'status': 1, 'lng': self.lng, 'lat': self.lat} except requests.exceptions.ConnectionError:
geo_info = self.get_geo_info(location) # reraise as KubeException, but log stacktrace.
# print(geo_info) print("打卡失败,请检查github服务器网络状态")
res = self.take_in(geo_info)
print(res)
return
except requests.exceptions.ConnectionError:
# reraise as KubeException, but log stacktrace.
print("打卡失败,请检查服务器网络状态")
except Exception as e:
print(e)
print("遇到错误,尝试重试")
print("重试中...",try_count)
try_count+=1
if __name__ == '__main__': if __name__ == '__main__':