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解释器?
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
pycharm如何安装插件?
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效
实现步骤
- 打开浏览器
- 输入B站网站
- 点击登陆按钮
- 输入账号 / 输入密码
- 点击登陆按钮 弹出一个验证码
- 验证码识别
- 点击确定 登陆成功
实现代码
源码.点击领取即可
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" 驱动路径
如何下载谷歌浏览器驱动
- https://registry.npmmirror.com/binary.html?path=chromedriver/
- 选择和你浏览器版本最相近的 <大版本一样, 小版本最相近的就可以了>
- 驱动放在哪里
和代码放在一起
放在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:breaktime.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站模拟登陆相关推荐
- python点触图形验证码识别_GitHub - AaronJny/captcha_detection: 点选式验证码识别方案...
方案要点: 点选式验证码的一般解决流程 如何使用 xyolo 训练自己的目标检测模型 不借助 OCR 功能解决中文验证码的识别问题 爬虫,反爬虫,反反爬虫--一个无限循环. 验证码是反爬虫手段中的常用 ...
- 江苏省电子税务局中文点选验证码识别研究
最近突发奇想,想研究一下中文识别.因为之前研究过简单数字,字母类的识别,这种识别种类很少,数字就10个,字母顶多就26个.但是一到中文,常用字就有3000多个,数量级有了巨大提升.不知道传统的方法还是 ...
- Python爬虫过程中验证码识别的三种解决方案
在Python爬虫过程中,有些网站需要验证码通过后方可进入网页,目的很简单,就是区分是人阅读访问还是机器爬虫.验证码问题看似简单,想做到准确率很高,也是一件不容易的事情.为了更好学习爬虫,后续推文中将 ...
- Python爬虫之网站验证码识别(三)
视频链接:Python爬虫7天速成(2020全新合集)无私分享 Python: 章节p29-p31 文章目录 前言 一.云打码平台使用流程 操作流程 二.代码编写⭐ 2.1 使用超级鹰云平台 2.2 ...
- 基于Python的KNN数字验证码识别
一.主要内容 本项目基于Python爬虫爬取验证码图片,对图片进行去噪.分割,通过KNN算法训练模型,实现验证其准确率. 二.系统流程 首先从指定的网页中爬取验证码图片数据,然后对数据进行一个去噪和分 ...
- Python vaptcha手势人机验证码识别
本文仅供学习交流使用,如侵立删!demo下载见文末 识别效果: vaptcha手势人机验证码识别 验证码样式: 提取手势验证图片
- python爬取学校教务管理系统_python爬虫模拟登陆学校教务处
最近在学python爬虫,我想教务处官网可能是每个学生第一个自己动手爬取的网站吧.而且很多学校的教务处没有验证码,很适合初学者练手. 环境准备 本次模拟登陆用到的库除了requests外还有lxml, ...
- Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*-from sele ...
- 【在线可测】通用中文点选验证码识别
8.15 小白救星(可视化操作) 支持任意中文点选,如果有识别率不佳的类别也可以联系作者添加. 1.本地提交一张大小的图片: 2. 点击[提交]即可: 测试地址: http://152.136.181 ...
最新文章
- java对托盘加监听右击报错_java实现系统托盘示例
- Kubernetes — 网络流量模型
- JavaSE中Map框架学习笔记
- 新鲜出炉!大规模神经网络最新综述!
- 使用Hanlp加载大字典
- 设计模式笔记七:桥接模式
- mysql sql sysdate_MySQL与Oracle SQL语言差异比较一览
- php类3个属性是哪3种,PHP获取类私有属性的3种方法
- openstack版本历史
- MySQL数据库查询重复数据办法
- 用php解二元一次方程程序,编写一个程序,求二元一次方程组,编写一个程序,求二元一次方程组的解...
- Protocol(协议)(二十)
- 【数字信号处理】基于matlab GUI正选信号时域+频域分析【含Matlab源码 887期】
- 给机器学习面试者的十项建议 | 面试官角度
- crypto661-rabin(网鼎杯2022-未完成)
- MYSQL 从PS说起,但不止于PS , IS 中innodb buffer 分析(5) -- 附加招聘DEVOPS DBA
- python中cv2、Image和plt的图片打开、显示和保存
- 再次慨叹生命的脆弱,我辈当惜之
- scala利用akka框架封装数据库操作api微服项目
- 洛谷P5266 【深基17.例6】学籍管理