예제 #1
0
파일: main.py 프로젝트: shan3275/studycase
 def do_dyqueryOneByNickname(self, line):
     nick = line
     ck = dyconsole.DYConApi().queryOneByNickname(nick)
     if ck == None:
         print('None')
     else:
         print(ck)
예제 #2
0
파일: main.py 프로젝트: shan3275/studycase
 def do_dyinsert(self, line):
     """
     测试发送cookie到后台
     :param line:
     :return:
     """
     str = '用户12345678|pwd123|cookie=123'
     if dyconsole.DYConApi().insertOne(str) == True:
         print('测试成功')
     else:
         print('测试失败')
예제 #3
0
파일: main.py 프로젝트: shan3275/studycase
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登陆成功'
예제 #4
0
파일: main.py 프로젝트: shan3275/studycase
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')
예제 #5
0
파일: main.py 프로젝트: shan3275/studycase
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登陆成功'
예제 #6
0
파일: main.py 프로젝트: shan3275/studycase
    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]
예제 #7
0
파일: main.py 프로젝트: shan3275/studycase
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
예제 #8
0
파일: main.py 프로젝트: shan3275/studycase
 def do_dyupdateOne(self, line):
     str = '用户12345678|pwd124|cookie=123'
     if dyconsole.DYConApi().updateOne(str) == True:
         print('测试成功')
     else:
         print('测试失败')