爬虫技术-滑块验证码

本文详细介绍了滑块验证码的工作原理,包括核心步骤、识别策略和处理方法。重点讨论了如何通过图像处理技术,如像素对比和边缘检测算法,来确定滑块的位移距离。此外,还提到了在实际应用中使用OpenCV库进行滑块识别的操作,包括环境配置、图片读取和摄像头操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滑块验证码

1. 滑块简介

image

注:重点是识别滑块缺口,测出需要拖动的距离

1.1 核心步骤
  1. 从服务器随机取一张图片,并对图片上的随机x,y坐标和宽高一块区域抠图;

  2. 根据步骤一的坐标和宽高,使用二维数组保存原图上抠图区域的像素点坐标;

  3. 根据步骤二的坐标点,对原图的抠图区域的颜色进行处理。

  4. 完成以上步骤之后得到两张图(扣下来的方块图,带有抠图区域阴影的原图),将这两张图和抠图区域的y坐标传到前台,前端在移动方块验证时,将移动后的x坐标传递到后台与原来的x坐标作比较,如果在阈值内则验证通过。

  5. 请求验证的步骤:前台向后台发起请求,后台随机一张图片做处理将处理完的两张图片的base64,抠图y坐标和token(token为后台缓存验证码的唯一token,可以用缓存和分布式缓存)返回给前台。

  6. 前台滑动图片将x坐标和token作为参数请求后台验证,服务器根据token取出x坐标与参数的x进行比较。

1.2 突破规则

这类验证码可以使用 selenium 操作浏览器拖拽滑块来进行破解,难点两个,一个如何确定拖拽到的位置,另一个是避开人机识别(反爬虫)。

首先我们先看看,确定滑块验证码需要拖拽的位移距离

有三种方式

  • 人工智能机器学习,确定滑块位置
  • 通过完整图片与缺失滑块的图片进行像素对比,确定滑块位置
  • 边缘检测算法,确定位置

各有优缺点。人工智能机器学习,确定滑块位置,需要进行训练比较麻烦,所以我们主要看后面两种。

对比完整图片与缺失滑块的图片

1.3 验证码图片处理
# 提取背景图
document.getElementsByClassName('geetest_canvas_bg geetest_absolute')[0].toDataURL('image/png')
document.getElementsByClassName('geetest_canvas_fullbg geete
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值