• python破解b站验证码实现登陆


    Python3爬虫实战【点触验证码】 — 模拟登陆bilibili

    爬虫思路如下:

    利用自动化爬虫工具 Selenium 模拟点击输入等操作来进行登录

    分析页面,获取点触验证码的点触图片,通过将图片发送给超级鹰打码平台识别后获取坐标信息

    根据超级鹰返回的数据,模拟坐标的点选,即可实现登录

    一.准备工作

    在开始之前,需要先注册一个超级鹰账号并申请一个软件ID,注册页面链接为:https://www.chaojiying.com/user/reg/,注册完成后需要在后台添加一个软件ID,进行充值获得积分,一般充一块钱就可以了。

    二.爬虫构建

    1.首先我可以到官方网站下载对应的 Python API,链接为:https://www.chaojiying.com/api-14.html ,

    from selenium import webdriver
    import random
    from selenium.webdriver import ActionChains
    from chaojiying import Chaojiying_Client
    USERNAME = 'b站账号'
    PASSWORD = 'b站密码'
    import time
    CHAOJIYING_USERNAME = '超级鹰用户名'
    CHAOJIYING_PASSWORD = '超级鹰密码'
    CHAOJIYING_SOFT_ID = 软件ID
    CHAOJIYING_KIND = 9005 #验证码类型
    browser =webdriver.Chrome()
    browser.get('https://passport.bilibili.com/login')
    browser.maximize_window()
    user = browser.find_elements_by_css_selector('#login-username')[0]
    pwd = browser.find_elements_by_css_selector('#login-passwd')[0]
    
    user.click()
    time.sleep(random.random()*3)
    user.send_keys(USERNAME)
    pwd.click()
    time.sleep(random.random()*3)
    pwd.send_keys(PASSWORD)
    time.sleep(random.random()*3)
    
    button = browser.find_elements_by_css_selector('#geetest-wrap > div > div.btn-box > a.btn.btn-login')[0]
    button.click()
    time.sleep(random.random()*3)
    img_browser = browser.find_elements_by_css_selector('body > div.geetest_panel.geetest_wind > div.geetest_panel_box.geetest_no_logo.geetest_panelshowclick > div.geetest_panel_next > div > div')[0]
    img_browser.screenshot('yzm.png')
    img_path='yzm.png'
    chaojiying = Chaojiying_Client(CHAOJIYING_USERNAME,CHAOJIYING_PASSWORD,CHAOJIYING_SOFT_ID)
    im = open('yzm.png', 'rb').read()
    res =chaojiying.PostPic(im,9005)
    print(res)
    if res['err_no']==0:
        pic_str = res['pic_str'].split('|')
        for pic in pic_str:
            x,y=pic.split(',')
            ActionChains(browser).move_to_element_with_offset(img_browser,int(x),int(y)).click().perform()
            time.sleep(random.random()*3)
        time.sleep(1)
        login_btn = browser.find_elements_by_css_selector('body > div.geetest_panel.geetest_wind > div.geetest_panel_box.geetest_no_logo.geetest_panelshowclick > div.geetest_panel_next > div > div > div.geetest_panel > a > div')[0]
        login_btn.click()
    else:
        print('验证码识别错误')
        print(chaojiying,res)
    目前正在学习Python中,如果有什么不对的地方 希望广大朋友,指出错误指出,深表感谢
  • 相关阅读:
    【代码笔记】Web-HTML-布局
    【代码笔记】Web-HTML-列表
    【代码笔记】Web-HTML-表格
    【代码笔记】Web-HTML-图像
    【代码笔记】Web-HTML-CSS
    【代码笔记】Web-HTML-头部
    【代码笔记】Web-HTML-标题
    优先解决关键路径上的关键问题!
    【转】svn:is not under version control and is not part of the commit, yet its child解决办法
    回忆:NVelocity--基于.NET的模板引擎
  • 原文地址:https://www.cnblogs.com/shiguanggege/p/14557062.html
Copyright © 2020-2023  润新知