import requests import time # authorization = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsic2VjdXJpdHktc2VydmVyIl0sInVzZXJfbmFtZSI6IjE1ODE4NDI1MDUxIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTY5Njg0NTkxNiwidXNlcklkIjoxOTA0MDIsImp0aSI6Ijc1NzExMzA2LTgzYzctNDNhOC1iODYwLWM4ZWNjOGM4MTI5MyIsImNsaWVudF9pZCI6InNlY3VyaXR5LWFwcCIsInVzZXJuYW1lIjoiMTU4MTg0MjUwNTEifQ.1H2SbRZ-KPDjqYAqStQ42tsXkv_aK1AZEuAzc6qkCdM' authorization = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsic2VjdXJpdHktc2VydmVyIl0sInVzZXJfbmFtZSI6IjE1ODE4NDI1MDUxIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTY5Njg0ODI4MywidXNlcklkIjoxOTA0MDIsImp0aSI6IjU4NzgzZDgwLTJiMmQtNGNhNy1iMjgzLTAzMzE0MDk1OGRhMCIsImNsaWVudF9pZCI6InNlY3VyaXR5LWFwcCIsInVzZXJuYW1lIjoiMTU4MTg0MjUwNTEifQ.-kPe8ubqHj3ja1HjsH03vAsq67hM_3vQXaju5BWqlpw' headers = { 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Type': 'application/json,application/json', 'Referer': 'https://servicewechat.com/wx5f1853171795aa44/53/page-frame.html', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'xweb_xhr': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8447', } import datetime def booking(bookingTimeId, visitStartTime, visitEndTime): headers = { 'Content-Type': 'application/json', 'Accept-Language': 'zh-CN,zh;q=0.9', 'authorization': authorization, 'Connection': 'keep-alive', 'Referer': 'https://servicewechat.com/wx5f1853171795aa44/53/page-frame.html', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'xweb_xhr': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8447', } data = { "visitType": 0, "visitWay": 0, "swiperIndex": 0, "reserveId": "126", "bookingVisitList": [ {"age": 33, "ageStructureType": 1, "cellphone": AAA, "fullName": "AAA", "idNumber": "AAA", "idType": 0, "sex": 0, "ethnicity": "汉", "nationality": "中国", "nativePlace": "汕头", "currentPhysicalCondition": "良好"}, {"age": 6, "ageStructureType": 0, "cellphone": AAA, "fullName": "AAA", "idNumber": "AAA", "idType": 0, "sex": 0, "ethnicity": "汉", "nationality": "中国", "nativePlace": "汕头", "currentPhysicalCondition": "良好"} ], "emergencyContact": "", "emergencyContactEmail": "", "emergencyContactPhone": "", "visitStartTime": visitStartTime, "visitEndTime": visitEndTime, "visitNature": None, "saveTeamInfo": None, "leader": None, "leaderIdType": 0, "leaderIdcard": None, "leaderPhone": None, "leaderEthnicity": None, "leaderNationality": None, "leaderNativePlace": None, "leaderCurrentPhysicalCondition": None, "unitCrrtificateImg": None, "visitorListImg": None, "teamListImg": [], "epidemicPrevention": [], "reportType": None, "reportSubmitDate": None, "leaderAge": 33, "expertPhotoUrl": None, "visitCount": 2, "teamName": None, "visitPurpose": None, "bookingTimeId": bookingTimeId, "activityId": None} print(data) response = requests.post('https://zhpt.lyj.gd.gov.cn/fimp/booking/wechat/booking', headers=headers, json=data, verify=False) print(response.json()) while True: now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") response = requests.get('https://zhpt.lyj.gd.gov.cn/fimp/booking/wechat/home/reserve/126', headers=headers, verify=False ) r = response.json() num = 0 days = r["data"]["days"] print(f"{r['data']['lastModifyTime']} -- {days[0]['bookingDate']} -- {days[-1]['bookingDate']}") for day in days: if day['surplus'] > 1: num += 1 for time in day["times"]: print( f" {time['bookingStatisticID']} -- {now} -- {day['bookingDate']} -- {time['bookingTime']} -- {time['surplus']} -- ") # if day["dayOfWeek"] in (6, 0): stime, etime = time['bookingTime'].split("~") booking( time["bookingStatisticID"], f"{day['bookingDate'][:10]} {stime}:00", f"{day['bookingDate'][:10]} {etime}:00" ) raise Exception("stop") else: if not num: print(f"{now} -- :木有票") else: break time.sleep(3)