Exemplo n.º 1
0
    def go_login_v2(self, user, passwd, rand_code=None):
        if self.is_auto_code and self.auto_code_type == 1:
            balance = DamatuApi(
                _get_yaml()["auto_code_account"]["user"],
                _get_yaml()["auto_code_account"]["pwd"]).getBalance()
            if int(balance) < 40:
                raise balanceException(u'余额不足,当前余额为: {}'.format(balance))
        if not user or not passwd:
            raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
        login_num = 0

        if rand_code is None:
            self.randCode = getRandCode(self.is_auto_code, self.auto_code_type)
        else:
            self.randCode = rand_code
        login_num += 1
        self.auth()
        status, mess = self.codeCheck()
        if status:
            uamtk, mess = self.baseLogin(user, passwd)
            if uamtk:
                st, name = self.getUserName(uamtk)
            return mess, name
        else:
            return mess, ''
Exemplo n.º 2
0
 def go_login(self):
     """
     登陆
     :param user: 账户名
     :param passwd: 密码
     :return:
     """
     if self.is_auto_code and self.auto_code_type == 1:
         balance = DamatuApi(
             _get_yaml()["auto_code_account"]["user"],
             _get_yaml()["auto_code_account"]["pwd"]).getBalance()
         if int(balance) < 40:
             raise balanceException(u'余额不足,当前余额为: {}'.format(balance))
     user, passwd = _get_yaml()["set"]["12306account"][0][
         "user"], _get_yaml()["set"]["12306account"][1]["pwd"]
     if not user or not passwd:
         raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
     login_num = 0
     while True:
         getPassCodeNewOrderAndLogin(session=self.session, imgType="login")
         self.randCode = getRandCode(self.is_auto_code, self.auto_code_type)
         login_num += 1
         self.auth()
         if self.codeCheck():
             uamtk = self.baseLogin(user, passwd)
             if uamtk:
                 self.getUserName(uamtk)
                 break
Exemplo n.º 3
0
    def go_login(self):
        """
        登陆
        :param user: 账户名
        :param passwd: 密码
        :return:
        """
        #user, passwd = TickerConfig.USER, TickerConfig.PWD
        user = input("请输入您的12306账号:")
        passwd = getpass.getpass("请输入密码:")
        if not user or not passwd:
            raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
        login_num = 0
        while True:
            if loginConf(self.session):
                # self.auth()

                result = getPassCodeNewOrderAndLogin1(session=self.session,
                                                      imgType="login")
                if not result:
                    continue
                self.randCode = getRandCode(self.is_auto_code,
                                            self.auto_code_type, result)
                print(self.randCode)
                login_num += 1
                self.auth()
                if self.codeCheck():
                    uamtk = self.baseLogin(user, passwd)
                    if uamtk:
                        self.getUserName(uamtk)
                        break
            else:
                loginAysnSuggest(self.session, username=user, password=passwd)
                login_num += 1
                break
Exemplo n.º 4
0
 def sendAutoSubmitOrderRequest(self):
     """
     请求下单接口
     :return:
     """
     urls = self.session.urls["autoSubmitOrderRequest"]
     data = self.data_par()
     autoSubmitOrderRequestResult = self.session.httpClint.send(urls, data)
     if autoSubmitOrderRequestResult and \
             autoSubmitOrderRequestResult.get("status", False) and\
             autoSubmitOrderRequestResult.get("httpstatus", False) == 200:
         requestResultData = autoSubmitOrderRequestResult.get("data", {})
         if requestResultData:
             result = requestResultData.get("result", "")
             ifShowPassCode = requestResultData.get("ifShowPassCode", "N")
             ifShowPassCodeTime = int(
                 requestResultData.get("ifShowPassCodeTime",
                                       "1000")) / float(1000)
             print(ticket.AUTO_SUBMIT_ORDER_REQUEST_C)
             g = getQueueCountAsync(
                 session=self.session,
                 train_no=self.train_no,
                 stationTrainCode=self.stationTrainCode,
                 fromStationTelecode=self.query_from_station_name,
                 toStationTelecode=self.query_to_station_name,
                 leftTicket=self.leftTicket,
                 set_type=self.set_type,
                 users=len(self.session.ticke_peoples),
                 station_dates=self.train_date,
                 passengerTicketStr=self.passengerTicketStr,
                 oldPassengerStr=self.oldPassengerStr,
                 result=result,
                 ifShowPassCodeTime=ifShowPassCodeTime,
             )
             g.sendGetQueueCountAsync()
             if ifShowPassCode == "Y":  # 如果需要验证码
                 print(u"需要验证码")
                 print(u"正在使用自动识别验证码功能")
                 for i in range(3):
                     randCode = getRandCode(
                         is_auto_code=True,
                         auto_code_type=_get_yaml()["auto_code_type"])
                     checkcode = checkRandCodeAnsyn(self.session, randCode,
                                                    "")
                     if checkcode == 'TRUE':
                         print(u"验证码通过,正在提交订单")
                         data['randCode'] = randCode
                         break
                     else:
                         print(u"验证码有误, {0}次尝试重试".format(i + 1))
                 print(u"验证码超过限定次数3次,放弃此次订票机会!")
             g.sendGetQueueCountAsync()
     else:
         print(ticket.AUTO_SUBMIT_ORDER_REQUEST_F)
         if autoSubmitOrderRequestResult.get("messages", ""):
             print("".join(autoSubmitOrderRequestResult.get("messages",
                                                            "")))
         elif autoSubmitOrderRequestResult.get("validateMessages", ""):
             print("".join(
                 autoSubmitOrderRequestResult.get("validateMessages", "")))
Exemplo n.º 5
0
    def go_login(self):
        """
        登陆
        :param user: 账户名
        :param passwd: 密码
        :return:
        """
        if self.is_auto_code and self.auto_code_type == 1:
            balance = DamatuApi(_get_yaml()["auto_code_account"]["user"], _get_yaml()["auto_code_account"]["pwd"]).getBalance()
            if int(balance) < 40:
                raise balanceException(u'余额不足,当前余额为: {}'.format(balance))
        user, passwd = _get_yaml()["set"]["12306account"][0]["user"], _get_yaml()["set"]["12306account"][1]["pwd"]
        if not user or not passwd:
            raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
        login_num = 0
        while True:
            result = getPassCodeNewOrderAndLogin(session=self.session, imgType="login")
            if not result:
                continue
            self.randCode = getRandCode(self.is_auto_code, self.auto_code_type, result)
            login_num += 1
            self.auth()
            if self.codeCheck():
                uamtk = self.baseLogin(user, passwd)
                if uamtk:
                    self.getUserName(uamtk)
                    break

# if __name__ == "__main__":
#     # main()
#     # logout()
Exemplo n.º 6
0
    def go_login(self):
        """
        登陆
        :param user: 账户名
        :param passwd: 密码
        :return:
        """
        # if self.is_auto_code and self.auto_code_type == 1:
        #     balance = DamatuApi(_get_yaml()["auto_code_account"]["user"], _get_yaml()["auto_code_account"]["pwd"]).getBalance()
        #     if int(balance) < 40:
        #         raise balanceException(u'余额不足,当前余额为: {}'.format(balance))
        user, passwd = _get_yaml()["set"]["12306account"][0][
            "user"], _get_yaml()["set"]["12306account"][1]["pwd"]
        if not user or not passwd:
            raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
        login_num = 0
        while True:
            if loginConf(self.session):
                # result = getPassCodeNewOrderAndLogin(session=self.session, imgType="login")
                self.auth()

                devicesIdUrl = copy.deepcopy(self.session.urls["getDevicesId"])
                devicesIdUrl["req_url"] = devicesIdUrl["req_url"].format(
                    int(time.time() * 1000))
                devicesIdRsp = self.session.httpClint.send(devicesIdUrl)
                devicesId = eval(
                    devicesIdRsp.split("(")[1].split(")")[0].replace(
                        "'", ""))["dfp"]
                if devicesId:
                    self.session.httpClint.set_cookies(RAIL_DEVICEID=devicesId)

                result = getPassCodeNewOrderAndLogin1(session=self.session,
                                                      imgType="login")
                if not result:
                    continue
                self.randCode = getRandCode(self.is_auto_code,
                                            self.auto_code_type, result)
                login_num += 1
                self.auth()
                if self.codeCheck():
                    uamtk = self.baseLogin(user, passwd)
                    if uamtk:
                        self.getUserName(uamtk)
                        break
            else:
                loginAysnSuggest(self.session, username=user, password=passwd)
                login_num += 1
                break


# if __name__ == "__main__":
#     # main()
#     # logout()
Exemplo n.º 7
0
 def sendAutoSubmitOrderRequest(self):
     """
     请求下单接口
     :return:
     """
     urls = self.session.urls["autoSubmitOrderRequest"]
     data = self.data_par()
     autoSubmitOrderRequestResult = self.session.httpClint.send(urls, data)
     if autoSubmitOrderRequestResult and \
             autoSubmitOrderRequestResult.get("status", False) and\
             autoSubmitOrderRequestResult.get("httpstatus", False) == 200:
         requestResultData = autoSubmitOrderRequestResult.get("data", {})
         if requestResultData:
             result = requestResultData.get("result", "")
             ifShowPassCode = requestResultData.get("ifShowPassCode", "N")
             ifShowPassCodeTime = int(requestResultData.get("ifShowPassCodeTime", "1000")) / float(1000)
             print(ticket.AUTO_SUBMIT_ORDER_REQUEST_C)
             g = getQueueCountAsync(session=self.session,
                                    train_no=self.train_no,
                                    stationTrainCode=self.stationTrainCode,
                                    fromStationTelecode=self.query_from_station_name,
                                    toStationTelecode=self.query_to_station_name,
                                    leftTicket=self.leftTicket,
                                    set_type=self.set_type,
                                    users=len(self.session.ticke_peoples),
                                    station_dates=self.train_date,
                                    passengerTicketStr=self.passengerTicketStr,
                                    oldPassengerStr=self.oldPassengerStr,
                                    result=result,
                                    ifShowPassCodeTime=ifShowPassCodeTime,
                                    )
             if ifShowPassCode == "Y":  # 如果需要验证码
                 print(u"需要验证码")
                 print(u"正在使用自动识别验证码功能")
                 for i in range(3):
                     randCode = getRandCode(is_auto_code=True, auto_code_type=_get_yaml()["auto_code_type"])
                     checkcode = checkRandCodeAnsyn(self.session, randCode, "")
                     if checkcode == 'TRUE':
                         print(u"验证码通过,正在提交订单")
                         data['randCode'] = randCode
                         break
                     else:
                         print (u"验证码有误, {0}次尝试重试".format(i + 1))
                 print(u"验证码超过限定次数3次,放弃此次订票机会!")
             g.sendGetQueueCountAsync()
     else:
         print(ticket.AUTO_SUBMIT_ORDER_REQUEST_F)
         if autoSubmitOrderRequestResult.get("messages", ""):
             print("".join(autoSubmitOrderRequestResult.get("messages", "")))
         elif autoSubmitOrderRequestResult.get("validateMessages", ""):
             print("".join(autoSubmitOrderRequestResult.get("validateMessages", "")))
Exemplo n.º 8
0
 def sendConfirmSingleForQueue(self):
     """
     # 模拟查询当前的列车排队人数的方法
     # 返回信息组成的提示字符串
     :return:
     """
     data = self.data_par()
     checkQueueOrderUrl = self.session.urls["checkQueueOrderUrl"]
     try:
         if self.is_node_code:
             print(u"正在使用自动识别验证码功能")
             for i in range(3):
                 randCode = getRandCode(
                     is_auto_code=True,
                     auto_code_type=_get_yaml()["auto_code_type"])
                 checkcode = checkRandCodeAnsyn(self.session, randCode,
                                                self.token)
                 if checkcode == 'TRUE':
                     print(u"验证码通过,正在提交订单")
                     data['randCode'] = randCode
                     break
                 else:
                     print(u"验证码有误, {0}次尝试重试".format(i + 1))
             print(u"验证码超过限定次数3次,放弃此次订票机会!")
         else:
             print(u"不需要验证码")
         time.sleep(self.ifShowPassCodeTime)
         checkQueueOrderResult = self.session.httpClint.send(
             checkQueueOrderUrl, data)
         if "status" in checkQueueOrderResult and checkQueueOrderResult[
                 "status"]:
             c_data = checkQueueOrderResult[
                 "data"] if "data" in checkQueueOrderResult else {}
             if 'submitStatus' in c_data and c_data['submitStatus'] is True:
                 print(u"提交订单成功!")
                 qow = queryOrderWaitTime(self.session)
                 qow.sendQueryOrderWaitTime()
             else:
                 if 'errMsg' in c_data and c_data['errMsg']:
                     print(u"提交订单失败,{0}".format(c_data['errMsg']))
                 else:
                     print(c_data)
                     print(u'订票失败!很抱歉,请重试提交预订功能!')
         elif "messages" in checkQueueOrderResult and checkQueueOrderResult[
                 "messages"]:
             print(u"提交订单失败,错误信息: " + checkQueueOrderResult["messages"])
         else:
             print(u"提交订单中,请耐心等待:" + checkQueueOrderResult["message"])
     except ValueError:
         print(u"接口 {} 无响应".format(checkQueueOrderUrl))
Exemplo n.º 9
0
    def go_login(self):
        """
        登陆
        :param user: 账户名
        :param passwd: 密码
        :return:
        """
        user, passwd = _get_yaml()["set"]["12306account"][0][
            "user"], _get_yaml()["set"]["12306account"][1]["pwd"]
        if not user or not passwd:
            raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
        login_num = 0
        while True:
            if loginConf(self.session):
                self.auth()

                devicesIdUrl = copy.deepcopy(self.session.urls["getDevicesId"])
                devicesIdUrl["req_url"] = devicesIdUrl["req_url"].format(
                    int(time.time() * 1000))
                # devicesIdRsp = self.session.httpClint.send(devicesIdUrl)
                # devicesId = eval(devicesIdRsp.split("(")[1].split(")")[0].replace("'", ""))["dfp"]
                devicesId = "UysLb2cYwsVjyInSzZ0pGOmYplvokmhBjoGNjrinquaUD0id7gkifgF6FvM2TRCL7Df89GZL1lVV763tGhiPhxlNdlE7iQkk496KUGCFZyyWxE4d0XjyHYv9DlsXfKTlrd8RBUdYIYjmWBXWMN65ElDQiO_Rnrul"

                if devicesId:
                    self.session.httpClint.set_cookies(RAIL_DEVICEID=devicesId)

                result = getPassCodeNewOrderAndLogin1(session=self.session,
                                                      imgType="login")
                if not result:
                    continue
                self.randCode = getRandCode(self.is_auto_code,
                                            self.auto_code_type, result)
                print(self.randCode)
                login_num += 1
                self.auth()
                if self.codeCheck():
                    uamtk = self.baseLogin(user, passwd)
                    if uamtk:
                        self.getUserName(uamtk)
                        break
            else:
                loginAysnSuggest(self.session, username=user, password=passwd)
                login_num += 1
                break
Exemplo n.º 10
0
 def sendConfirmSingleForQueue(self):
     """
     # 模拟查询当前的列车排队人数的方法
     # 返回信息组成的提示字符串
     :return:
     """
     data = self.data_par()
     checkQueueOrderUrl = self.session.urls["checkQueueOrderUrl"]
     try:
         if self.is_node_code:
             print(u"正在使用自动识别验证码功能")
             for i in range(3):
                 randCode = getRandCode(is_auto_code=True, auto_code_type=_get_yaml()["auto_code_type"])
                 checkcode = checkRandCodeAnsyn(self.session, randCode, self.token)
                 if checkcode == 'TRUE':
                     print(u"验证码通过,正在提交订单")
                     data['randCode'] = randCode
                     break
                 else:
                     print (u"验证码有误, {0}次尝试重试".format(i + 1))
             print(u"验证码超过限定次数3次,放弃此次订票机会!")
         else:
             print(u"不需要验证码")
         time.sleep(self.ifShowPassCodeTime)
         checkQueueOrderResult = self.session.httpClint.send(checkQueueOrderUrl, data)
         if "status" in checkQueueOrderResult and checkQueueOrderResult["status"]:
             c_data = checkQueueOrderResult["data"] if "data" in checkQueueOrderResult else {}
             if 'submitStatus' in c_data and c_data['submitStatus'] is True:
                 print(u"提交订单成功!")
                 qow = queryOrderWaitTime(self.session)
                 qow.sendQueryOrderWaitTime()
             else:
                 if 'errMsg' in c_data and c_data['errMsg']:
                     print(u"提交订单失败,{0}".format(c_data['errMsg']))
                 else:
                     print(c_data)
                     print(u'订票失败!很抱歉,请重试提交预订功能!')
         elif "messages" in checkQueueOrderResult and checkQueueOrderResult["messages"]:
             print(u"提交订单失败,错误信息: " + checkQueueOrderResult["messages"])
         else:
             print(u"提交订单中,请耐心等待:" + checkQueueOrderResult["message"])
     except ValueError:
         print(u"接口 {} 无响应".format(checkQueueOrderUrl))
Exemplo n.º 11
0
    def go_login(self):
        """
        登陆
        :param user: 账户名
        :param passwd: 密码
        :return:
        """
        # if self.is_auto_code and self.auto_code_type == 1:
        #     balance = DamatuApi(_get_yaml()["auto_code_account"]["user"], _get_yaml()["auto_code_account"]["pwd"]).getBalance()
        #     if int(balance) < 40:
        #         raise balanceException(u'余额不足,当前余额为: {}'.format(balance))
        user, passwd = _get_yaml()["set"]["12306account"][0]["user"], _get_yaml()["set"]["12306account"][1]["pwd"]
        if not user or not passwd:
            raise UserPasswordException(u"温馨提示: 用户名或者密码为空,请仔细检查")
        login_num = 0
        while True:
            if loginConf(self.session):
                result = getPassCodeNewOrderAndLogin(session=self.session, imgType="login")
                if not result:
                    continue
                self.randCode = getRandCode(self.is_auto_code, self.auto_code_type, result)
                login_num += 1
                self.auth()
                if self.codeCheck():
                    uamtk = self.baseLogin(user, passwd)
                    if uamtk:
                        self.getUserName(uamtk)
                        break
            else:
                loginAysnSuggest(self.session, username=user, password=passwd)
                login_num += 1
                break



# if __name__ == "__main__":
#     # main()
#     # logout()