前言
halo,包子们下午好
今天小编带大家是想b站模拟登陆,Python实现验证码识别
废话不多说,直接开整
相关文件
关注小编,私信小编领取哟!
当然别忘了一件三连哟~~
公众号:Python日志
源码点击蓝色字体领取
Python零基础入门到精通视频合集
【整整800集】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(项目) >>> pythoninterpreter(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/
- 选择和你浏览器版本最相近的 <大版本一样, 小版本最相近的就可以了>
- 驱动放在哪里
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循环遍历, 把坐标一个一个取出来
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零基础入门到精通视频合集
【整整800集】Python爬虫项目零基础入门合集,细狗都学会了,你还不会?
对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/