Python点选验证码识别,以小破站为例

人生苦短 我用Python

Python点选验证码识别,以小破站为例_第1张图片

你是不是要经常输入验证码?

登录网站时输完密码,
要输入一个单词或者几个歪歪扭扭不怎么好辨认的字母,
这个场景一定不陌生?

有没有思考为什么要输入验证码?验证码有什么作用?

本文仅作案例分析

Python点选验证码识别,以小破站为例_第2张图片

开发环境:

  • Python 3.8

  • Pycharm 2021.2

  • 谷歌浏览器

  • 谷歌驱动

模块使用:

  • selenium >>> pip install selenium==3.141.0 指定版本安装

  • time

  • 打码平台

代码展示

点选验证码识别, 模拟登陆

导入模块

from selenium import webdriver
from password import VideoAccount, VideoPassword, account, password
import time
from chaojiying import Chaojiying_Client
from selenium.webdriver import ActionChains
###无偿领python源码籽料qun:9039,71231(去掉逗号就行)

1. 打开浏览器

executable_path=“chromedriver” 驱动路径

TIPS:如何下载谷歌浏览器驱动

  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站网站

在这里插入图片描述
3. 点击登陆按钮

1.先通过元素定位 登陆按钮在什么地方

2.定位到之后, 在进行操作<点击操作>

3.通过css选择器查找元素 --> 复制粘贴

4.输入账号 / 输入密码

1.先通过元素定位 账号输入框在什么地方

2.先通过元素定位 密码输入框在什么地方

3.然后再进行账号密码输入操作

5.点击登陆按钮

1.先通过元素定位 登陆在什么地方

2.然后再进行点击操作
driver.find_element_by_css_selector('.bili-header .header-login-entry').click()

time.sleep(1)

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)
无偿领python源码籽料qun:903971231(去掉逗号就行)

验证码识别

1.获取验证码图片

img_label = driver.find_element_by_css_selector('.geetest_holder.geetest_silver')

2.截图保存

img_label.screenshot('yzm.png')

3.调用超级鹰打码平台

chaojiying = Chaojiying_Client(account, password, '96001')	#用户中心>>软件ID 生成一个替换 96001

4.读取验证码图片

im = open('yzm.png', 'rb').read()
pic_str = chaojiying.PostPic(im, 9004)['pic_str']

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

for循环遍历, 把坐标一个一个取出来

for index in pic_str.split('|'):
    x = index.split(',')[0]
    y = index.split(',')[1]
    # move_to_element_with_offset 在验证码上面进行点击操作
###无偿领python源码籽料qun:9039,71231(去掉逗号就行)    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, 自动发送直播弹幕机器人~ <切换账号>

自动发送弹幕

Python点选验证码识别,以小破站为例_第3张图片


验证码的作用:

1. 为了防止机器冒充人类做暴力破解

2. 防止大规模在线注册滥用服务

3. 防止滥用在线批量化操作

4. 防止自动发布

5. 防止信息被大量采集聚合

你可能感兴趣的:(基础知识,python基础知识,Python,python,开发语言,chrome,pycharm)