def do_dyqueryOneByNickname(self, line): nick = line ck = dyconsole.DYConApi().queryOneByNickname(nick) if ck == None: print('None') else: print(ck)
def do_dyinsert(self, line): """ 测试发送cookie到后台 :param line: :return: """ str = '用户12345678|pwd123|cookie=123' if dyconsole.DYConApi().insertOne(str) == True: print('测试成功') else: print('测试失败')
def CookieLogin(): """ 从后台获取一条cookie,然后使用cookie登陆,发送弹幕 返回参数:ou:字典,包含账号信息 ou['data']['nickname'] : 用户名 ou['data']['pwd'] : 密码 ou['data']['phone'] : 绑定的手机号码 ou['msg'] : 信息 ou['error'] : 0 ok : 1 手机号码无效 : 2 获取gt和challenge失败 : 3 极验获取challenge和validate失败 : 4 验证码发送失败 : 5 获取手机号码失败 : 6 获取验证码失败 : 7 注册提交失败 : 8 点击验证码失败 : 9 验证码打码失败 :10 根据日期获取账号表项失败 :11 没有需求更新的内容 :12 cookie更新到后台失败,保存账号到文件中 :13 账号登陆失败后,更新后台update_fail字段成功 :14 获取一条表项失败 """ # 第一步,从后台取出一条 ou = dict(error=0, data=dict(), msg='ok') ck = dyconsole.DYConApi().queryOne() if ck == None: ou['error'] = 14 ou['msg'] = '获取一条表项失败' logger.error('获取一条表项失败') return ou logger.debug(ck) str = ck.split('|') logger.debug(str) num = int(str[0]) if num == 0: logger.error('没有cookie可以获取到') ou['msg'] = '没有cookie可以获取到' ou['error'] = 11 return ou # 获取账号和密码,及cookie #nickname = str[1] #pwd = str[2] cookie_str = str[3] #登陆 cl = cookieLogin.CookieLogin(cookie_str).login() if cl == True: ou['error'] = 0 ou['msg'] = 'cookie登陆成功'
def RegisterAccount(num=2000): """ 功能:注册多个账号,并记录日志文件 :param num: :return: """ success = 0 send = 0 fail = 0 reset = True while success < num: if CONF['status'] == 'R': result_str = 'Needs: ' + str(num) + ' Success: ' + str( success) + ' Send: ' + str(send) + ' Fail: ' + str(fail) sys.stdout.write("\r{0}".format(result_str)) sys.stdout.flush() ou = RegisterOneAccountV5(reset) if ou['error'] != 0: fail = fail + 1 reset = False continue #成功 #acc_str = ou['data']['nickname'] + "|" + ou['data']['pwd']+ "|" + format(ou['data']['validate'],"d")+"|"+ou['data']['cookie'] acc_str = ou['data']['nickname'] + "|" + ou['data'][ 'pwd'] + "|" + ou['data']['cookie'] if CONF['upload'] == True: if dyconsole.DYConApi().insertOne(acc_str) == True: acc_str = acc_str + '|' + '1' send = send + 1 else: acc_str = acc_str + '|' + '0' else: logger.info('reg acc direct save to file') SaveAccountToFile(acc_str, CONF['acc']) #自加一 success = success + 1 reset = True elif CONF['status'] == 'P': time.sleep(2) sys.stdout.write(".") elif CONF['status'] == 'Q': return else: result_str = 'Needs: ' + str(num) + ' Success: ' + str( success) + ' Send: ' + str(send) + ' Fail: ' + str(fail) sys.stdout.write("\r{0}".format(result_str)) sys.stdout.flush() print('\n')
def CookieLoginByName(nickname): """ 从后台获取一条cookie,然后使用cookie登陆,发送弹幕 返回参数:ou:字典,包含账号信息 ou['data']['nickname'] : 用户名 ou['data']['pwd'] : 密码 ou['data']['phone'] : 绑定的手机号码 ou['msg'] : 信息 ou['error'] : 0 ok : 1 手机号码无效 : 2 获取gt和challenge失败 : 3 极验获取challenge和validate失败 : 4 验证码发送失败 : 5 获取手机号码失败 : 6 获取验证码失败 : 7 注册提交失败 : 8 点击验证码失败 : 9 验证码打码失败 :10 根据日期获取账号表项失败 :11 没有需求更新的内容 :12 cookie更新到后台失败,保存账号到文件中 :13 账号登陆失败后,更新后台update_fail字段成功 :14 获取一条表项失败 """ # 第一步,从后台取出一条 ou = dict(error=0, data=dict(), msg='ok') ck = dyconsole.DYConApi().queryOneByNickname(nickname) if ck == None: ou['error'] = 14 ou['msg'] = '获取一条表项失败' logger.error('获取一条表项失败') return ou logger.debug(ck) # 获取账号和密码,及cookie cookie_str = ck['cookie'].encode('utf-8') #登陆 cl = cookieLogin.CookieLogin(cookie_str).login() if cl == True: ou['error'] = 0 ou['msg'] = 'cookie登陆成功'
def do_dyqueryOneByDate(self, line): """ 测试接收cookie从后台 :param line: :return: """ ck = dyconsole.DYConApi().queryOneByDate(line) logger.debug(ck) if ck == None: print('None') return str = ck.split('|') logger.debug(str) if len(str) > 2: print 'num : ' + str[0] print 'nickmake: ' + str[1] print 'password: '******'cookie : ' + str[3] else: print 'num : ' + str[0] print 'nickmake: ' + str[1]
def UpdateOneAccount(day='1970-1-1'): """ 更新账号的cookies,自动上报到服务器。 :param day: 输出参数:ou:字典,包含账号信息 ou['data']['nickname'] : 用户名 ou['data']['pwd'] : 密码 ou['data']['phone'] : 绑定的手机号码 ou['msg'] : 信息 ou['error'] : 0 ok : 1 手机号码无效 : 2 获取gt和challenge失败 : 3 极验获取challenge和validate失败 : 4 验证码发送失败 : 5 获取手机号码失败 : 6 获取验证码失败 : 7 注册提交失败 : 8 点击验证码失败 : 9 验证码打码失败 :10 根据日期获取账号表项失败 :11 没有需求更新的内容 :12 cookie更新到后台失败,保存账号到文件中 :13 账号登陆失败后,更新后台update_fail字段成功 """ #第一步,从后台取出一条 ou = dict(error=0, data=dict(), msg='ok') #按照日期获取一条 if day != '1970-1-1': ck = dyconsole.DYConApi().queryOneByDate(day) else: #七天之前,过期的获取一条 ck = dyconsole.DYConApi().queryOneOutDate() if ck == None: ou['error'] = 10 ou['msg'] = '根据日期获取账号表项失败' logger.error('根据日期获取账号表项失败') return ou logger.debug(ck) str = ck.split('|') logger.debug(str) num = int(str[0]) if num == 0: logger.error('没有需要更新的内容') ou['msg'] = '没有需要更新的内容' ou['error'] = 11 return ou #获取账号和密码 nickname = str[1] pwd = str[2] #第二步,登陆获取新的cookie ac = LoginOneAccountV5(nickname, pwd) if ac['error'] != 0: #获取cookie失败,然后更新状态到后台 data = nickname + '|' + 'update_fail' logger.debug(data) if dyconsole.DYConApi().updateOne(data) == True: ou['error'] = 13 ou['msg'] = '账号登陆失败后,更新后台update_fail字段成功' logger.debug('账号登陆失败后,更新后台update_fail字段成功') return ou else: #失败状态如果更新失败,就把账号保存到文件中 acc_str = nickname + '|' + pwd + '|' + 'update_Fail' SaveAccountToFile(acc_str, CONF['up']) logger.error('更新失败字段失败,保存账号到文件中') ou['error'] = ac['error'] ou['msg'] = ac['msg'] + '更新失败字段失败,保存账号到文件中' return ou cookie = ac['data']['cookie'] #第三步,更新一条到后台 data = nickname + '|' + pwd + '|' + cookie if dyconsole.DYConApi().updateOne(data) == True: ou['msg'] = '更新账号成功' ou['error'] = 0 logger.debug('更新账号成功') return ou #更新到后台失败,就保存到文件中,需要关注 SaveAccountToFile(data, CONF['up']) logger.debug('cookie更新到后台失败,保存账号到文件中') ou['msg'] = 'cookie更新到后台失败,保存账号到文件中' ou['error'] = 12 return ou
def do_dyupdateOne(self, line): str = '用户12345678|pwd124|cookie=123' if dyconsole.DYConApi().updateOne(str) == True: print('测试成功') else: print('测试失败')