• Python实现点选验证码识别, 模拟登陆小破站并自动发弹幕


    前言

    嗨喽~大家好呀,这里是魔王呐 ❤ ~!


    开发环境:

    • Python 3.8

    • Pycharm 2021.2

    • 谷歌浏览器

    • 谷歌驱动


    模块使用:

    • selenium >>> pip install selenium==3.141.0 指定版本安装

    • time

    • 打码平台

    如果安装python第三方模块:
    1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

    2. 在pycharm中点击Terminal(终端) 输入安装命令


    如何配置pycharm里面的python解释器?

    1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

    2. 点击齿轮, 选择add

    3. 添加python安装路径


    pycharm如何安装插件?

    1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

    2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

    3. 选择相应的插件点击 install(安装) 即可

    4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


    selenium: 模拟人的行为, 去操作浏览器

    1. 打开浏览器

    2. 输入B站网站

    3. 点击登陆按钮

    4. 输入账号 / 输入密码

    5. 点击登陆按钮

      弹出一个验证码

    6. 验证码识别

    7. 点击确定 登陆成功



    代码展示

    点选验证码识别, 模拟登陆

    导入模块

    from selenium import webdriver
    # 导入账号密码 自己写的文件
    from password import VideoAccount, VideoPassword, account, password
    # 导入时间模块
    import time
    # 导入打码平台代码
    from chaojiying import Chaojiying_Client
    # 导入selenium动作链
    from selenium.webdriver import ActionChains
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    “”"

    1. 打开浏览器

      executable_path=“chromedriver” 驱动路径

    如何下载谷歌浏览器驱动

    1. https://registry.npmmirror.com/binary.html?path=chromedriver/

    2. 选择和你浏览器版本最相近的 <大版本一样, 小版本最相近的就可以了>

    3. 驱动放在哪里

      • 和代码放在一起

      • 放在python安装目录里面

    “”"

    driver = webdriver.Chrome(executable_path=r'D:\download\anaconda\chromedriver.exe')
    
    • 1
    1. 输入/访问B站网站

    “”"

    1. 点击登陆按钮

      • 先通过元素定位 登陆按钮在什么地方

      • 定位到之后, 在进行操作<点击操作>

      通过css选择器查找元素 --> 复制粘贴

    2. 输入账号 / 输入密码

      • 先通过元素定位 账号输入框在什么地方

      • 先通过元素定位 密码输入框在什么地方

      然后再进行账号密码输入操作

    3. 点击登陆按钮

      • 先通过元素定位 登陆在什么地方

      • 然后再进行点击操作

    “”"

    点击登陆按钮 click 点击

    driver.find_element_by_css_selector('.bili-header .header-login-entry').click()
    
    • 1

    延时等待 元素加载

    time.sleep(1)
    
    • 1

    输入账号 send_keys 输入内容

    driver.find_element_by_css_selector('div.bili-mini-account input').send_keys(VideoAccount)
    
    • 1

    输入密码

    driver.find_element_by_css_selector('div.bili-mini-password input').send_keys(VideoPassword)
    time.sleep(1)
    
    • 1
    • 2

    点击登陆按钮

    driver.find_element_by_css_selector('div.bili-mini-login-register-wrapper .login-btn').click()
    time.sleep(2)
    
    • 1
    • 2

    🎯 博主所有文章素材、解答、源码、教程领取处:点击

    “”"
    验证码识别
    “”"

    获取验证码图片

    img_label = driver.find_element_by_css_selector('.geetest_holder.geetest_silver')
    
    • 1

    截图保存

    img_label.screenshot('yzm.png')
    
    • 1

    调用超级鹰打码平台 固定写法, 别人代码给你写法

    chaojiying = Chaojiying_Client(account, password, '96001')	#用户中心>>软件ID 生成一个替换 96001
    
    • 1

    读取验证码图片

    im = open('yzm.png', 'rb').read()
    pic_str = chaojiying.PostPic(im, 9004)['pic_str']
    
    • 1
    • 2

    9004 表示验证码类型 42,241|42,241|59,86|144,115

    for循环遍历, 把坐标一个一个取出来

    for index in pic_str.split('|'):
        x = index.split(',')[0]
        y = index.split(',')[1]
        # move_to_element_with_offset 在验证码上面进行点击操作
        ActionChains(driver).move_to_element_with_offset(img_label, int(x), int(y)).click().perform()
    
    time.sleep(1)
    driver.find_element_by_css_selector('.geetest_commit_tip').click()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    获取账号cookie, 自动发送直播弹幕机器人~ <切换账号>

    自动发送弹幕

    推荐往期文章

    🎯 博主所有文章素材、解答、源码、教程领取处:点击

    对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~

    python小介绍:

    python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。

    python数据分析前景:

    用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资

    python基础自测题:

    Python 800 道习题 (°ー°〃) 测试你学废了嘛

    最后推荐一套Python视频给大家,希望对大家有所帮助:

    全套教程!你和大佬只有一步之遥【python教程】

    尾语

    要成功,先发疯,下定决心往前冲!

    学习是需要长期坚持的,一步一个脚印地走向未来!

    未来的你一定会感谢今天学习的你。

    —— 心灵鸡汤

    本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

    👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇
  • 相关阅读:
    随机用户名获取易语言代码
    【数据结构】时间复杂度和空间复杂度
    Python 基于 TCP 传输协议的网络通信实现
    怎么恢复删除的文件?靠它解决你的烦恼
    辽宁CA与契约锁达成合作,携手推动辽宁省电子劳动合同订立及备案
    基于无人机的物联网空基中继鲁棒优化
    Mycat2 分布式数据库中间件
    csv文件的读取和写入
    JS中数值类型的本质
    Structured Streaming Source
  • 原文地址:https://blog.csdn.net/python56123/article/details/127965488