コード例 #1
0
def getCaptcha():
    captchaImgUrl = 'https://passport.lagou.com/vcode/create?from=register&refresh=%s' % time.time()
    # 写入验证码图片
    f = open(CaptchaImagePath, 'wb')
    f.write(session.get(captchaImgUrl, headers=HEADERS).content)
    f.close()
    verify_code, yundama_obj, cid = code_verificate(YUMDAMA_USERNAME, YUMDAMA_PASSWORD, CaptchaImagePath)
    return verify_code
コード例 #2
0
ファイル: login.py プロジェクト: Glossy/WeiboSpider
def login_by_pincode(name, password, session, server_data, retry_count):
    post_url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)'

    servertime = server_data["servertime"]
    nonce = server_data['nonce']
    rsakv = server_data["rsakv"]
    pubkey = server_data["pubkey"]
    pcid = server_data['pcid']

    sp = get_password(password, servertime, nonce, pubkey)

    # 提交的数据可以根据抓包获得
    data = {
        'encoding': 'UTF-8',
        'entry': 'weibo',
        'from': '',
        'gateway': '1',
        'nonce': nonce,
        'pagerefer': "",
        'prelt': 67,
        'pwencode': 'rsa2',
        "returntype": "META",
        'rsakv': rsakv,
        'savestate': '7',
        'servertime': servertime,
        'service': 'miniblog',
        'sp': sp,
        'sr': '1920*1080',
        'su': get_encodename(name),
        'useticket': '1',
        'vsnf': '1',
        'url':
        'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
        'pcid': pcid
    }

    if not yundama_username:
        raise Exception(
            '由于本次登录需要验证码,请配置顶部位置云打码的用户名{}和及相关密码'.format(yundama_username))
    img_url = get_pincode_url(pcid)
    pincode_name = get_img(img_url, name, retry_count)
    verify_code, yundama_obj, cid = code_verification.code_verificate(
        yundama_username, yundama_password, pincode_name)
    data['door'] = verify_code
    rs = get_redirect(name, data, post_url, session)

    os.remove(pincode_name)
    return rs, yundama_obj, cid, session
コード例 #3
0
ファイル: login.py プロジェクト: dittoyi/weibospider
def login_by_pincode(name, password, session, server_data, retry_count):
    post_url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)'

    servertime = server_data["servertime"]
    nonce = server_data['nonce']
    rsakv = server_data["rsakv"]
    pubkey = server_data["pubkey"]
    pcid = server_data['pcid']

    sp = get_password(password, servertime, nonce, pubkey)

    data = {
        'encoding': 'UTF-8',
        'entry': 'weibo',
        'from': '',
        'gateway': '1',
        'nonce': nonce,
        'pagerefer': "",
        'prelt': 67,
        'pwencode': 'rsa2',
        "returntype": "META",
        'rsakv': rsakv,
        'savestate': '7',
        'servertime': servertime,
        'service': 'miniblog',
        'sp': sp,
        'sr': '1920*1080',
        'su': get_encodename(name),
        'useticket': '1',
        'vsnf': '1',
        'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
        'pcid': pcid
    }

    if not yundama_username:
        raise Exception('login need verfication code, please set your yumdama info in config/spider.yaml')
    img_url = get_pincode_url(pcid)
    pincode_name = get_img(img_url, name, retry_count)
    verify_code, yundama_obj, cid = code_verification.code_verificate(yundama_username, yundama_password,
                                                                      pincode_name)
    data['door'] = verify_code
    rs = get_redirect(name, data, post_url, session)

    os.remove(pincode_name)
    return rs, yundama_obj, cid, session
コード例 #4
0
def do_login(name, password, need_verify):
    session = requests.Session()
    su = get_encodename(name)

    sever_data = get_server_data(su, session)
    servertime = sever_data["servertime"]
    nonce = sever_data['nonce']
    rsakv = sever_data["rsakv"]
    pubkey = sever_data["pubkey"]

    sp = get_password(password, servertime, nonce, pubkey)

    # 提交的数据可以根据抓包获得
    data = {
        'encoding':
        'UTF-8',
        'entry':
        'weibo',
        'from':
        '',
        'gateway':
        '1',
        'nonce':
        nonce,
        'pagerefer':
        "",
        'prelt':
        67,
        'pwencode':
        'rsa2',
        "returntype":
        "META",
        'rsakv':
        rsakv,
        'savestate':
        '7',
        'servertime':
        servertime,
        'service':
        'miniblog',
        'sp':
        sp,
        'sr':
        '1920*1080',
        'su':
        su,
        'useticket':
        '1',
        'vsnf':
        '1',
        'url':
        'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack'
    }

    yundama_obj = None
    cid = ''

    # 你也可以改为手动填写验证码
    # 之所以会有need_verify这个字段,是因为某些账号虽然可能不正常,但是它在预登陆的时候会返回pincode=0,而实际上却是需要验证码的
    # 所以这里通过用户自己控制
    if need_verify:
        if not yundama_username:
            raise Exception(
                '由于本次登录需要验证码,请配置顶部位置云打码的用户名{}和及相关密码'.format(yundama_username))
        pcid = sever_data['pcid']
        data['pcid'] = pcid
        img_url = get_pincode_url(pcid)
        get_img(img_url)
        verify_code, yundama_obj, cid = code_verification.code_verificate(
            yundama_username, yundama_password, verify_code_path)
        data['door'] = verify_code

    post_url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)'

    url = get_redirect(name, data, post_url, session)
    return url, yundama_obj, cid, session