【Python爬虫】【2020最新哔哩哔哩验证码识别实战】【滑块验证码】【附源码】

哔哩哔哩实战----验证码识别

利用Selenium来模拟B站登录,并实现线极验验证码的识别。

初步分析

B站的登录界面如下:

在这里插入图片描述

登录需要完成:1、账户输入;2、密码输入;3、登录后需要通过滑块来进行验证;

难点就是如何去实现滑块验证并且模仿人的操作。

导入包:

import time
from io import BytesIO
from PIL import Image
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.wait import WebDriverWait

初始化

建立实现类,设置账号、密码、浏览器对象、等待对象、url参数,进行初始化:

class bilibili():
	def __init__(self, phone, password):
		"""
		初始化
		:param phone: 账号
		:param password: 密码
		"""
		chrome_options = webdriver.ChromeOptions()
		chrome_options.add_argument('start-fullscreen')
		self.browser = webdriver.Chrome(options=chrome_options)
		self.wait = WebDriverWait(self.browser, 15)
		self.url = 'https://passport.bilibili.com/login'
		self.phone = phone
		self.password = password

打开B站进行登录

  1. 打开B站:browser.get()

  2. 查找输入账号、密码、登录节点;

  3. 输入账号、密码:send_keys()

  4. 点击登录:click()

def open(self):
		"""
		打开网页,输入账号、密码,点击
		"""
		self.browser.get(self.url)
		phone = self.wait.until(EC.presence_of_element_located((By.ID, 'login-username')))
		password = self.wait.until(EC.presence_of_element_located((By.ID, 'login-passwd')))
		button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'btn.btn-login')))
		phone.send_keys(self.phone)
		password.send_keys(self.password)
		button.click()

完成上述后,就会出现验证图片。

滑块验证图片分析

实现滑动验证,首先是需要找到移动的位置,这是关键。

思路是:找到残缺图和原图,进行像素的比较,找到不同的位置(相差大于某个阈值)

1、如何显示残缺图(不带🧩)和原图?

我们通过谷歌,检查,找到验证图片,分析它内部结构,结果我们发现:

若我们将以下的display

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值