Python——超级鹰打码平台实现selenium对b站的自动化登陆

article/2025/10/7 1:55:53

目录

一 、Chrome(谷歌)驱动器的下载

(一)驱动器版本选择

(二)下载Chrome驱动器

二、需要安装的库

(一)安装命令

(二)指定selenium版本原因

三、实现步骤

(一)导入相关库

(二)创建驱动器对象

(三)点击登录,并输入账号密码

(四)获取验证码框元素,并截图

四、完整代码 


一 、Chrome(谷歌)驱动器的下载

(一)驱动器版本选择

1.查看自己电脑Chrome浏览器版本

点击谷歌浏览器主页右上角三个点——>点击帮助——>关于Google Chrome(如下图:)

查看结果如下:

(二)下载Chrome驱动器

1.下载谷歌浏览器驱动器Chromedriver地址:

CNPM Binaries Mirror

2.驱动器下载版本需大于等于浏览器版本。

本机浏览器版本:107.0.5304.107

所以选择如下图版本下载:

 3.点击下载

 4.解压并放到Python项目下:

二、需要安装的库

如下图:

(一)安装命令

先点击terminal进入终端,输入pip install xxx(库的名称)

注:selenium需要指定版本3.141.0

 命令:pip install selenium==3.141.0

(二)指定selenium版本原因

后面在获取登录验证码元素时需使用find_element_by_css_selector的方法获取验证码元素。

若使用find_element方法项目最后一步会报错:如图

三、实现步骤

(一)导入相关库

# 时间模块
import time
# selenium的动作链模块
from selenium.webdriver import ActionChains
# 导入超级鹰打码平台模块(choajiying.py文件的Chaojiying_Client类)
from chaojiying import Chaojiying_Client
# 驱动器模块
from selenium import webdriver
from selenium.webdriver.common.by import By

注:chaojiying是打码平台提供的一个python文件后面会讲到。

(二)创建驱动器对象

# B站的网页地址
url = 'https://www.bilibili.com/'
# 创建驱动器对象
driver = webdriver.Chrome
# driver = webdriver.Chrome(executable_path='驱动器路径') 
# 传入URL地址
driver.get(url)

注:若驱动器没在项目路径下,需手动指定驱动器路径。 

(三)点击登录,并输入账号密码

1.打开网页版b站:哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

2.按F12(或右键点击检查)打开 开发者工具

3.定位元素

有爬虫基础的可以 自己写xpath、css等元素定位方法。

(1)点击登录按钮弹出登录框

点击开发者工具右上角的箭头(标签选择器)——>再点击登录按钮——>右键copy被选中元素的selector路径——直接粘贴到代码里——>调用click()方法——延迟3秒等待加载(如下图、代码)

# 点击登录按钮,获取登录页面
driver.find_element(By.CSS_SELECTOR,'#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li:nth-child(1) > li > div.right-entry__outside.go-login-btn > div').click()
time.sleep(3)

注:#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li:nth-child(1) > li > div.right-entry__outside.go-login-btn > div 即为selector路径

(2)输入账号和密码

点击开发者工具右上角的箭头(标签选择器)——>再点击账号、密码输入框——>分别右键copy被选中元素的selector路径——直接粘贴到代码里——>调用send_keys()方法——延迟1到2秒等待加载(如下图、代码)

# 输入账号,密码
driver.find_element(By.CSS_SELECTOR,'body > div.bili-mini-mask > div > div.bili-mini-content > div.bili-mini-login-wrapper > div.bili-mini-password-wrapper > div.bili-mini-account > input[type=text]').send_keys('账号')
time.sleep(1)
driver.find_element(By.CSS_SELECTOR,'body > div.bili-mini-mask > div > div.bili-mini-content > div.bili-mini-login-wrapper > div.bili-mini-password-wrapper > div.bili-mini-password > div.left > input[type=password]').send_keys('密码')
time.sleep(2)

 (3)点击确定登录按钮

点击开发者工具右上角的箭头(标签选择器)——>再点击登录按钮——>右键copy被选中元素的selector路径——直接粘贴到代码里——>调用click()方法——延迟2秒等待加载(如下图、代码)

# 点击确定登录按钮
driver.find_element(By.CSS_SELECTOR,'body > div.bili-mini-mask > div > div.bili-mini-content > div.bili-mini-login-wrapper > div.bili-mini-login-register-wrapper > div.universal-btn.login-btn').click()
time.sleep(2)

(四)获取验证码框元素,并截图

点击开发者工具右上角的箭头(标签选择器)——>再点击验证码框——>右键copy被选中元素的selector路径——直接粘贴到代码里——>调用screenshot()方法进行截图并命名为yzm.png保存到该项目目录下(如下图、代码)

# 获取验证码的元素,并进行截图。
image = driver.find_element(By.CSS_SELECTOR,'body > div.geetest_panel.geetest_wind > div.geetest_panel_box.geetest_no_logo.geetest_panelshowclick > div.geetest_panel_next > div')
image.screenshot('yzm.png'))

打码平台的作用:获取验证码截图需要点击的汉字的坐标位置。

1.注册超级鹰账号

地址:超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大

2.获取题分(1元=1000题分)

3.下载python开发文档

点击开发文档——>选择python语言——>点击这里下载——>解压并将chaojiying.py文件放到python项目下

 

 4.创建软件ID

进入用户中心——>点击软件ID——>再点击生成一个软件ID——>输入任意的软件名称——>点击提交会生成一个如下图的软件ID

 

 5.将chaojiying.py文件导入到项目文件中(如下代码)

# 导入超级鹰打码平台模块(choajiying.py文件的Chaojiying_Client类)
from chaojiying import Chaojiying_Client

6.导入超级鹰类

并输入账号,密码,软件ID,以二进制的方式读取验证码图片,获取验证码的坐标字典,并取出坐标值。

# 导入超级鹰,并输入账号,密码,软件ID
chaojiying = Chaojiying_Client('账号', '密码', '软件ID')  # 用户中心>>软件ID 生成一个替换 96001
im = open('yzm.png', 'rb').read()  # 以二进制的方式读取验证码
result = chaojiying.PostPic(im, 9004)['pic_str'] #获取验证码的坐标字典,并取出坐标值

 pic_str为返回的坐标值并通过键取出值。

7.点击验证码

对返回的验证码坐标值进行处理,得到每个验证码的x轴和y轴。

创建动作链对象通过move_to_element_with_offset方法依次点击验证码。

for index in result.split('|'): #以"|"进行分割,得到一个列表,并循环出每一个字的坐标x = index.split(',')[0] # 得到x轴的坐标y = index.split(',')[1] # 得到y轴的坐标action = ActionChains(driver) #创建动作链对象action.move_to_element_with_offset(image,int(x),int(y)).click().perform()# image:验证码的元素框;x:验证码的横轴;y:验证码的纵轴time.sleep(1)

8.点击确认完成登录

time.sleep(1) # 加载一秒后在进行点击
driver.find_element(By.CSS_SELECTOR,'body > div.geetest_panel.geetest_wind > div.geetest_panel_box.geetest_panelshowclick > div.geetest_panel_next > div > div > div.geetest_panel > a > div').click()

四、完整代码 

# _*_ coding : utf-8 _*_
# 时间模块
import time
# selenium的动作链模块
from selenium.webdriver import ActionChains
# 导入超级鹰打码平台模块(choajiying.py文件的Chaojiying_Client类)
from chaojiying import Chaojiying_Client
# 驱动器模块
from selenium import webdriver
from selenium.webdriver.common.by import By
# B站的网页地址
url = 'https://www.bilibili.com/'
driver = webdriver.Chrome() # 若驱动器没在
driver.get(url)
# 点击登录按钮,获取登录页面
driver.find_element(By.CSS_SELECTOR,'#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li:nth-child(1) > li > div.right-entry__outside.go-login-btn > div').click()
time.sleep(3)
# 输入账号,密码
driver.find_element(By.CSS_SELECTOR,'body > div.bili-mini-mask > div > div.bili-mini-content > div.bili-mini-login-wrapper > div.bili-mini-password-wrapper > div.bili-mini-account > input[type=text]').send_keys('B站账号')
time.sleep(1)
driver.find_element(By.CSS_SELECTOR,'body > div.bili-mini-mask > div > div.bili-mini-content > div.bili-mini-login-wrapper > div.bili-mini-password-wrapper > div.bili-mini-password > div.left > input[type=password]').send_keys('密码')
time.sleep(2)
# 点击确定登录按钮
driver.find_element(By.CSS_SELECTOR,'body > div.bili-mini-mask > div > div.bili-mini-content > div.bili-mini-login-wrapper > div.bili-mini-login-register-wrapper > div.universal-btn.login-btn').click()
time.sleep(2)
# 获取验证码的元素,并进行截图。
image = driver.find_element(By.CSS_SELECTOR,'body > div.geetest_panel.geetest_wind > div.geetest_panel_box.geetest_panelshowclick > div.geetest_panel_next > div')
image.screenshot('yzm.png')
# 导入超级鹰,并输入账号,密码,软件ID
chaojiying = Chaojiying_Client('超级鹰账号', '密码', '软件ID')  # 用户中心>>软件ID 生成一个替换 96001
im = open('yzm.png', 'rb').read()  # 以二进制的方式读取验证码
result = chaojiying.PostPic(im, 9004)['pic_str'] #获取验证码的坐标字典,并取出坐标值
for index in result.split('|'): #以"|"进行分割,得到一个列表,并循环出每一个字的坐标x = index.split(',')[0] # 得到x轴的坐标y = index.split(',')[1] # 得到y轴的坐标action = ActionChains(driver) #创建动作链对象action.move_to_element_with_offset(image,int(x),int(y)).click().perform()# image:验证码的元素框;x:验证码的横轴;y:验证码的纵轴time.sleep(1)
time.sleep(1) # 加载一秒后在进行点击
driver.find_element(By.CSS_SELECTOR,'body > div.geetest_panel.geetest_wind > div.geetest_panel_box.geetest_panelshowclick > div.geetest_panel_next > div > div > div.geetest_panel > a > div').click()

注:该文章仅提供思路,如有错误欢迎指出。


http://chatgpt.dhexx.cn/article/ha6abRlM.shtml

相关文章

selenium 自动化测试

Selenium 是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛。 selenium 介绍 Selenium的特点如下: 开源、免费多浏览器支持:Firefox、Chrome、IE、Opera、Edge多平台支…

深度学习中的自动编码器:TensorFlow示例

什么是自动编码器? 自动编码器是重建输入的绝佳工具。简单来说,机器就是一个图像,可以生成一个密切相关的图片。这种神经网络中的输入是未标记的,这意味着网络能够在没有监督的情况下进行学习。更准确地说,输入由网络编码,仅关注最关键的特征。这是自动编码器因降维而流行…

博客论坛自动采集器 - 蓝天采集器源码

介绍: 博客论坛自动采集器 做一个自动采集文章的网站,在你网站根目录创建一个目录随便我这边是caiji,然后把采集器的源码上传到caiji里面去。 安装:你的域名/caiji访问配置好数据库什么的安装就行。数据前缀不要和原来博客的相同。 安装完成…

Pytorch基础-07-自动编码器

自动编码器(AutoEncoder)是一种可以进行无监督学习的神经网络模型。一般而言,一个完整的自动编码器主要由两部分组成,分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。 1 自动编码器入门 在自动编码器中负责编码…

python手工打码_python云打码

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 为什么需要了解打码平台的使用现在很多网站都会使用验证码来进行反爬,所以为了能够更好的获取…

python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的

前言 嗨喽!大家好呀,这里是魔王呐~ 我们在观看视频的时候,总有一些精准得马赛克挡住我们想看得地方,严重影响我们的观影体验!! 那么这些马赛克是如何精确的加上去的呢? 本次我们就来用Python…

易语言php验证码识别,易语言自动打码验证码服务端带案例

易语言通用验证码识别服务端,用来做接口还是可以的! 将127.0.0.1改成自己的服务器IP,或者域名 php案例: $rel = file_get_contents(http://www.zhuangjiba.com/d/file/help/2018/08/cfdefaddb3f47d78f8c66a7de28720aa.png); $code = _upload($rel); echo 验证码:.$code; f…

自动打码神器是什么

自动打码神器是什么 提到自动打码神器,可能很多网友会想到答题吧自动打码平台、远程答题器等,除了这一些软件之外,还有不少我们都不知道的软件正在等待大家的发掘。今天,小编就给大家先介绍一款专门批量识别验证码的平台——答题吧…

如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)

文章目录 ★扫盲若干【基本概念】★啥是【通用】制作方法?★为啥选择这几款工具?★rufus 的玩法(Windows 平台)★UNetbootin 的玩法(跨平台)★dd 的玩法(跨平台)★优缺点对比★读者…

利用UltraISO刻录光盘启动盘

1 介绍 虽说现在越来越倾向于使用U盘作为启动盘,但本文还是要讲一讲怎样使用UltraISO制作光盘启动盘—作为系统安装的一种方法。我不知道未来光盘会不会消失,但本文确实能起到保护历史文化遗产的作用。但我希望不要消失,就好像大家都在说纸质…

如何在Mac上。ISO映像文件刻录到DVD

ISO是普通的CD或DVD光盘映像格式基于ISO-9660标准。从原始光盘ISO映像文件包含一个精确复制的数据。它包括光盘上的文件系统的信息,如目录结构,文件属性和引导代码,以及保存的数据。如果你想知道如何创建。ISO映像,并在Mac上玩ISO…

如何使用UltraISO将光盘中的内容提取为ISO镜像

转载地址:https://newsupport.lenovo.com.cn/commonProblemsDetail.html?noteid148183 知识点分析:将光盘中的内容转换为ISO镜像以便保存到电脑中的方法。 操作步骤: 1、鼠标右击桌面上的UltraISO快捷方式图标,选择“以管理员身份运行”; …

如何刻录光盘

如何刻录光盘 1 、将光盘放入光驱,选择“用于CD/DVD播放机” ,该模式下,刻录在光盘的文件无法进行编辑和删除 2 、将需要刻录的文件拷贝至光盘内,则会在“准备好写入光盘中的文件”下显示拷贝进去的文件,此时文件还没…

如何刻录光盘文件

常识补充刻录机简介光盘刻录机是一种数据写入设备,利用激光将数据写到空光盘上从而实现数据的储存。其写入过程可以看做普通光驱读取光盘的逆过程。基本原理刻入数据时,利用高功率的激光束反射到盘片,使盘片上发生变化,模拟出二进…

balenaEtcher v1.18.1 开源跨平台镜像文件快速刻录工具

balenaEtcher 是一款开源免费的跨平台镜像文件快速刻录工具,使用体验感觉比软碟通UltraISO好用多了,推荐使用。它可以帮助用户快速将 ISO 文件、IMG 文件或者其他格式的镜像文件刻录到 USB 驱动器、SD 卡或者其他可烧录介质上。它支持 Windows、macOS 和…

使用Linux建立镜像文件与刻录光盘(mkisofs,cdrecord,wodim,isoinfo,rsync)

一、镜像文件(.iso)与光盘(CD/DVD)的关系 镜像文件用于存储文件与数据光盘是一种存储设备,需要将镜像文件进行刻录,将数据刻录到光盘光盘刻录的步骤: 第一步:使用mkisofs命令将数据创建成为一个镜像文件(iso)第二步:使…

使用最新版UltraISO将ISO镜像刻录到U盘

1. 使用最新版UltraISO将ISO镜像刻录到U盘 一定要是最新版,试用版都可以,按下图操作: 2. U盘启动电脑进入安装界面 正常情况下你应该会看到下面的这个界面: 选择第一项,然后按TAB键,然后会看到下面这个&a…

刻录U盘镜像

Windows下刻录 刻录windows镜像的话,可以用UltraISO软碟通https://cn.ultraiso.net/ 可以无限试用 (1) 打开一个镜像文件XXX.ios (2) menu->启动->写入硬盘映像 (3)会自动识别U盘&#x…

如何利用UltraISO将系统镜像刻录到U盘上

【阅读文章申明】 作者只是想把自己实践中的经验分享给大家,如果文章里面有在大神面前显的很低级的知识点。那么大神你可以不看,请不要发一些“浪费流量”“辣鸡”之类嘲讽的话,这也不是交流的一种方式。每一篇文章都是作者自己。截图&#x…

Rufus刻录大于4G系统镜像

系统安装刻录U盘时经常会遇到ISO大于4G,使用UltraISO等工具无法刻录的问题。今天给大家介绍一款小巧好用的U盘刻录工具Rufus,Rufus相对于软碟通可以刻录UEFI系统,可以刻录大于4G系统镜像。 1、下载地址 Index of /downloadshttp://rufus.ie…