用Selenium实现滑块验证码登录

滑块验证码登录

简介

现在很多网站的登录,都采用了拖动图片滑块的验证码方式来进行验证登录,比如哔哩哔哩和京东等。在使用爬虫等自动化程序时,如何通过滑块验证,就成了需要解决的问题。

这里通过大名鼎鼎的ddddocr图片识别库,和模拟浏览器操作的selenium库来实现

Selenium简介

安装浏览器driver

首先你需要下载一个浏览器的driver,Chrome的下载地址如下,注意参考你的Chrome版本,下载对应的exe文件,然后运行即可。

下载地址:Chrome for Testing availability (googlechromelabs.github.io)

运行后出现下图,放着就行了:

在这里插入图片描述

pip安装Selenium包

pip install selenium

Selenium的基本使用如下:该例子打开百度首页,并搜索python

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
# 通过元素ID获取元素
kw_input = browser.find_element(By.ID, 'kw')
# 模拟用户输入行为
kw_input.send_keys('Python')
# 通过CSS选择器获取元素
su_button = browser.find_element(By.CSS_SELECTOR, '#su')
# 模拟用户点击行为
su_button.click()
input("请输入回车结束")

ddddocr简介

ddddorc库是一个比较好用的图片识别库,目前支持滑块、文字验证码、点选验证码的识别

官方地址:https://github.com/sml2h3/ddddocr

我们用到的语法如下(事实上该例子就在官方文档首页:

slide = ddddocr.DdddOcr(det=False, ocr=False)
    # 这是滑块图片
    with open('target.jpg', 'rb') as f:
        target_bytes = f.read()
    # 这是背景大图片
    with open('background.jpg', 'rb') as f:
        background_bytes = f.read()
    # 返回的是坐标关系
    res = slide.slide_match(target_bytes, background_bytes, simple_target=True)
    
    print(res)

返回值如下,四个值分别表示左上角和右下角的,水平和垂直距离:

{
   
   'target_y': 0, 'target': [113
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值