Example #1
0
    def check_pass_code_common(self, module, rand_method):
        ret = False
        auto_times = g_conf.max_auto_times
        while 1:
            url_pass_code = "https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=%s&rand=%s" % (module, rand_method)
            logger.info("send getPassCodeNew:%s" % datetime.datetime.now())
            header = ''
            if module == 'login':
                header = self.ext_header
            else:
                header = self.proxy_ext_header

            g_conn.request('GET', url_pass_code, headers=header)
            res = g_conn.getresponse()
            logger.info("recv getPassCodeNew=====>:%s" % datetime.datetime.now())
            if module == 'login':
                self.update_session_info(res)
                self.ext_header["Cookie"] = self.sid + '; ' + self.sip + '; ' + self.method
            
            #save file  
            pic_type = res.getheader('Content-Type').split(';')[0].split('/')[1]
            data = res.read()
            file_name = "./pass_code.%s" % pic_type
            if pic_type == "json":
                time.sleep(0.5)
                continue
            f = open(file_name, 'wb')
            f.write(data)
            f.close()

            #auto read or manual
            read_pass_code = ''
            if g_conf.max_auto_times > 0:
                auto_times = auto_times - 1
                read_pass_code = call_tesseract(file_name)

            if  read_pass_code == '':
                read_pass_code = show_captcha(os.path.abspath("%s" % file_name))
                if read_pass_code == "no":
                    logger.info("Get A new PassCode")
                    continue
                elif read_pass_code == "quit":
                    logger.info("Quit")
                    break
                logger.info("input:%s" % read_pass_code)
            else:
                logger.info("auto:%s" % read_pass_code)

            if g_conf.clean_temp:
                os.remove(file_name)

            data = []
            if module == 'passenger':
                self.proxy_ext_header["Referer"] = "https://kyfw.12306.cn/otn/confirmPassenger/initDc#nogo"
                self.rand_code = read_pass_code
                data = [
                        ("_json_att", ''),
                        ("rand", rand_method),
                        ("randCode", read_pass_code),
                        ("REPEAT_SUBMIT_TOKEN", self.globalRepeatSubmitToken),
                       ]
            elif module == 'login':
                self.pass_code = read_pass_code
                data = [
                        ("rand", rand_method),
                        ("randCode", read_pass_code),
                        ("randCode_validate", ''),
                       ]
            else:
                pass

            post_data = urllib.urlencode(data)
            logger.info("send checkRandCodeAnsyn=====>:%s" % post_data) 
            
            url_check_rand = "https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn"
            g_conn.request('POST', url_check_rand, body=post_data, headers=header)
            res = g_conn.getresponse()
            data = res.read()
            logger.info("recv checkRandCodeAnsyn:%s" % data)
            resp = json.loads(data)
            if (type(resp) is str and resp['data'] != 'Y') or (type(resp) is dict  and resp['data']['result'] != '1'):
                logger.info("rand code not correct:%s" % resp['data'])
                time.sleep(2)
                continue
            else:
                ret = True
                break
        return ret
Example #2
0
    def check_pass_code_common(self, module, rand_method):
        ret = False
        auto_times = g_conf.max_auto_times
        while 1:
            url_pass_code = "https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=%s&rand=%s" % (
                module, rand_method)
            logger.info("send getPassCodeNew:%s" % datetime.datetime.now())
            header = ''
            if module == 'login':
                header = self.ext_header
            else:
                header = self.proxy_ext_header

            g_conn.request('GET', url_pass_code, headers=header)
            res = g_conn.getresponse()
            logger.info("recv getPassCodeNew=====>:%s" %
                        datetime.datetime.now())
            if module == 'login':
                self.update_session_info(res)
                self.ext_header[
                    "Cookie"] = self.sid + '; ' + self.sip + '; ' + self.method

            #save file
            pic_type = res.getheader('Content-Type').split(';')[0].split(
                '/')[1]
            data = res.read()
            file_name = "./pass_code.%s" % pic_type
            if pic_type == "json":
                time.sleep(0.5)
                continue
            f = open(file_name, 'wb')
            f.write(data)
            f.close()

            #auto read or manual
            read_pass_code = ''
            if g_conf.max_auto_times > 0:
                auto_times = auto_times - 1
                read_pass_code = call_tesseract(file_name)

            if read_pass_code == '':
                read_pass_code = show_captcha(os.path.abspath("%s" %
                                                              file_name))
                if read_pass_code == "no":
                    logger.info("Get A new PassCode")
                    continue
                elif read_pass_code == "quit":
                    logger.info("Quit")
                    break
                logger.info("input:%s" % read_pass_code)
            else:
                logger.info("auto:%s" % read_pass_code)

            if g_conf.clean_temp:
                os.remove(file_name)

            data = []
            if module == 'passenger':
                self.proxy_ext_header[
                    "Referer"] = "https://kyfw.12306.cn/otn/confirmPassenger/initDc#nogo"
                self.rand_code = read_pass_code
                data = [
                    ("_json_att", ''),
                    ("rand", rand_method),
                    ("randCode", read_pass_code),
                    ("REPEAT_SUBMIT_TOKEN", self.globalRepeatSubmitToken),
                ]
            elif module == 'login':
                self.pass_code = read_pass_code
                data = [
                    ("rand", rand_method),
                    ("randCode", read_pass_code),
                    ("randCode_validate", ''),
                ]
            else:
                pass

            post_data = urllib.urlencode(data)
            logger.info("send checkRandCodeAnsyn=====>:%s" % post_data)

            url_check_rand = "https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn"
            g_conn.request('POST',
                           url_check_rand,
                           body=post_data,
                           headers=header)
            res = g_conn.getresponse()
            data = res.read()
            logger.info("recv checkRandCodeAnsyn:%s" % data)
            resp = json.loads(data)
            if (type(resp) is str and resp['data'] != 'Y') or (
                    type(resp) is dict and resp['data']['result'] != '1'):
                logger.info("rand code not correct:%s" % resp['data'])
                time.sleep(2)
                continue
            else:
                ret = True
                break
        return ret
Example #3
0
import sys,os
sys.path.insert(1, os.path.join(sys.path[0], '..'))

import time
from gui.captcha import  show_captcha
time.sleep(3)
a=show_captcha(os.path.abspath("../pass_code.jpeg"))
print a
Example #4
0
import sys, os
sys.path.insert(1, os.path.join(sys.path[0], '..'))

import time
from gui.captcha import show_captcha
time.sleep(3)
a = show_captcha(os.path.abspath("../pass_code.jpeg"))
print a