• Python实现点选验证码识别, B站模拟登陆


    话不多说,今天就分享一下如何用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(终端) 输入安装命令

    • 安装失败原因

    失败一: pip 不是内部命令

    解决方法: 设置环境变量

    失败二: 出现大量报红 (read time out)

    解决方法: 因为是网络链接超时, 需要切换镜像源

    清华:https://pypi.tuna.tsinghua.edu.cn/simple
    阿里云:http://mirrors.aliyun.com/pypi/simple/
    中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
    华中理工大学:http://pypi.hustunique.com/
    山东理工大学:http://pypi.sdutlinux.org/
    豆瓣:http://pypi.douban.com/simple/
    例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名

    失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入

    解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好
    或者你pycharm里面python解释器没有设置好

    如何配置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的选项 点击确定, 重启即可生效

    实现步骤

    1. 打开浏览器
    2. 输入B站网站
    3. 点击登陆按钮
    4. 输入账号 / 输入密码
    5. 点击登陆按钮 弹出一个验证码
    6. 验证码识别
    7. 点击确定 登陆成功

    请添加图片描述

    实现代码

    源码.点击领取即可

    from selenium import webdriver
    
    • 1

    导入账号密码 自己写的文件

    from password import VideoAccount, VideoPassword, account, password
    
    • 1

    导入时间模块

    import time
    
    • 1

    导入打码平台代码

    from chaojiying import Chaojiying_Client
    
    • 1

    导入selenium动作链

    from selenium.webdriver import ActionChains
    
    • 1

    1. 打开浏览器

    executable_path="chromedriver" 驱动路径
    
    • 1

    如何下载谷歌浏览器驱动

    1. https://registry.npmmirror.com/binary.html?path=chromedriver/
    2. 选择和你浏览器版本最相近的 <大版本一样, 小版本最相近的就可以了>
    3. 驱动放在哪里

    和代码放在一起
    放在python安装目录里面

    driver = webdriver.Chrome(executable_path=r'D:\download\anaconda\chromedriver.exe')
    
    • 1

    2. 输入/访问B站网站

    driver.get('https://***自己输入吧我放不了/')
    
    • 1

    3. 点击登陆按钮

    • 先通过元素定位 登陆按钮在什么地方
    • 定位到之后, 在进行操作 <点击操作>
    • 通过css选择器查找元素 --> 复制粘贴

    4. 输入账号 / 输入密码

    • 先通过元素定位 账号输入框在什么地方
    • 先通过元素定位 密码输入框在什么地方
    • 然后再进行账号密码输入操作

    5. 点击登陆按钮

    • 先通过元素定位 登陆在什么地方
    • 然后再进行点击操作

    点击登陆按钮 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()
    
    • 1

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

    pic_str = chaojiying.PostPic(im, 9004)['pic_str']
    
    • 1
    for循环遍历, 把坐标一个一个取出来
    python学习交流Q群:770699889 ### 源码领取
    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
    获取账号cookie, 自动发送直播弹幕机器人~ <切换账号>

    有些地方不打*就发不出来,所以放张图片在这里,需要源码的朋友点击这里即可

    在这里插入图片描述

    
    import requests
    import random
    import time
    content_list = ['主播真厉害', '爱了爱了', '666', '真棒']
    num = 1
    while True:
        if num == 10:
            break
        time.sleep(3)
        url = 'https://api.live.bilibili.com/msg/send'
        data = {
            'bubble': '0',
            'msg': random.choices(content_list),
            'color': '16777215',
            'mode': '1',
            'fontsize': '25',
            'rnd': '1668605910',
            'roomid': '23875324',
        }
        headers = {
            'origin': 'https://***.com',
            'referer': 'https://***.com/23875324?visit_id=40c7gu5p3620',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
        }
        response = requests.post(url=url, data=data, headers=headers)
        print(response.text)
        num += 1
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    最后

    今天的分享到这里就结束了

    顺便给大家推荐一些Python视频教程,希望对大家有所帮助:

    Python零基础教学合集

    对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
    觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

    请添加图片描述

  • 相关阅读:
    LeetCode220803_69、搜索旋转排序数组
    揭秘!为什么在外面修电脑这么坑?
    k8s 集群 使用yaml部署Tomcat方法
    Hadoop架构、Hive相关知识点及Hive执行流程
    双二面角耦合力场项的计算
    数据库简介
    LDR6020芯片驱动未来:TYPE-C桌面显示器的新篇章
    【进阶C语言】排序函数(qsort)与模拟实现(回调函数的实例)
    Windows下Redis3.0集群搭建
    用指针和动态内存分配的方法输入10,2,30, 4,5,按输入顺序逆置排序,输出排序后的元素,即输出5,4,30,2,10
  • 原文地址:https://blog.csdn.net/aliYz/article/details/128088367