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. 点击确定 登陆成功

Python实现点选验证码识别, B站模拟登陆_第1张图片

实现代码

源码.点击领取即可

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. 打开浏览器

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')

2. 输入/访问B站网站

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

3. 点击登陆按钮

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

4. 输入账号 / 输入密码

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

5. 点击登陆按钮

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

点击登陆按钮 click 点击

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

延时等待 元素加载

time.sleep(1)

输入账号 send_keys 输入内容

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

输入密码

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

点击登陆按钮

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

验证码识别

获取验证码图片
img_label = driver.find_element_by_css_selector('.geetest_holder.geetest_silver')
截图保存
img_label.screenshot('yzm.png')
调用超级鹰打码平台 固定写法, 别人代码给你写法
chaojiying = Chaojiying_Client(account, password, '96001')	#用户中心>>软件ID 生成一个替换 96001
读取验证码图片
im = open('yzm.png', 'rb').read()

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

pic_str = chaojiying.PostPic(im, 9004)['pic_str']
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()
获取账号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

最后

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

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

Python零基础教学合集

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

Python实现点选验证码识别, B站模拟登陆_第2张图片

你可能感兴趣的:(pytho基础,python,pycharm,开发语言)