Example #1
0
    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'])
Example #2
0
    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())
Example #3
0
    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())