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, ''
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
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
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", "")))
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()
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()
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", "")))
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))
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
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))
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()