def confirmSingleForQueue(self, seat, passenger, randCode, purpose_codes, key_check_isChange, leftTicketStr, train_location, token): def run(self, seat, passenger, randCode, purpose_codes, key_check_isChange, leftTicketStr, train_location, token): try: url = 'https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue' #{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"submitStatus":true},"messages":[],"validateMessages":{}} ''' passengerTicketStr=1%2C0%2C1%2C%E6%A1%8D%E5%A4%BA%E5%A4%BA%2C1%2C431121198907177432%2C13664654645%2CN& oldPassengerStr=%E6%A1%8D%E5%A4%BA%E5%A4%BA%2C1%2C431121198907177432%2C1_&randCode=ka75& purpose_codes=00&key_check_isChange=DAA2E9A3B57113825F6A1747EB40D253572D03861557AA85B019FA2D& leftTicketStr=1020103333406560002010201003983035500001& train_location=Q7&_json_att=&REPEAT_SUBMIT_TOKEN=2a8f974bd77816babf8c0a5a1f653422 passengerTicketStr=1,0,1,桍夺夺,1,431121198907177432,13664654645,N& oldPassengerStr=桍夺夺,1,431121198907177432,1_&randCode=ka75& purpose_codes=00& key_check_isChange=DAA2E9A3B57113825F6A1747EB40D253572D03861557AA85B019FA2D& leftTicketStr=1020103333406560002010201003983035500001& train_location=Q7& _json_att=&REPEAT_SUBMIT_TOKEN=2a8f974bd77816babf8c0a5a1f653422 ''' data = collections.OrderedDict() data['passengerTicketStr'] = self.getPassengerTicketStr(seat, passenger) data['oldPassengerStr'] = self.getOldPassengers(passenger) data['randCode'] = randCode data['purpose_codes'] = purpose_codes data['key_check_isChange'] = key_check_isChange data['leftTicketStr'] = leftTicketStr data['train_location'] = train_location data['_json_att'] = '' data['REPEAT_SUBMIT_TOKEN'] = token req = urllib.request.Request(url, urllib.parse.urlencode(data).encode()) req.add_header('Host', 'kyfw.12306.cn') req.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36') req.add_header('Referer', 'https://kyfw.12306.cn/otn/confirmPassenger/initDc') req.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') req.add_header('X-Requested-With', 'XMLHttpRequest') response = self.opener.open(req) self.updateCookie() return {'s': True, 'r': response.read().decode()} except: return {'s': False, 'r': ''} re = run(self, seat, passenger, randCode, purpose_codes, key_check_isChange, leftTicketStr, train_location, token) while not re['s']: re = run(self, seat, passenger, randCode, purpose_codes, key_check_isChange, leftTicketStr, train_location, token) return stringHander.confirmSingleForQueue(re['r'])
def waitCount(self, token): url = 'https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?random={random}&tourFlag={tourFlag}&_json_att=&REPEAT_SUBMIT_TOKEN={token}' url = url.format(random=time.time(), tourFlag='dc', token=token) #{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"queryOrderWaitTimeStatus":true,"count":0,"waitTime":-1 # ,"requestId":5823401326154130780,"waitCount":0,"tourFlag":"dc","orderId":"E772191986"},"messages":[],"validateMessages":{}} req = urllib.request.Request(url) req.add_header('Host', 'kyfw.12306.cn') req.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36') req.add_header('Referer', 'https://kyfw.12306.cn/otn/confirmPassenger/initDc') req.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') req.add_header('X-Requested-With', 'XMLHttpRequest') response = self.opener.open(req) self.updateCookie() return stringHander.confirmSingleForQueue(response.read().decode())
def waitCount(self, token): url = 'https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?random={random}&tourFlag={tourFlag}&_json_att=&REPEAT_SUBMIT_TOKEN={token}' url = url.format(random=time.time(), tourFlag='dc', token=token) #{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"queryOrderWaitTimeStatus":true,"count":0,"waitTime":-1 # ,"requestId":5823401326154130780,"waitCount":0,"tourFlag":"dc","orderId":"E772191986"},"messages":[],"validateMessages":{}} req = urllib.request.Request(url) req.add_header('Host', 'kyfw.12306.cn') req.add_header( 'User-Agent', 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36' ) req.add_header('Referer', 'https://kyfw.12306.cn/otn/confirmPassenger/initDc') req.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') req.add_header('X-Requested-With', 'XMLHttpRequest') response = self.opener.open(req) self.updateCookie() return stringHander.confirmSingleForQueue(response.read().decode())