滑动拼图验证码的原理和破解方法~

简介: 滑动拼图验证码的原理和破解方法~

01原理


滑动拼图验证码是在滑块验证码的基础上增加了一个随机滑动距离,用户需要将滑块滑到拼图的缺口处,使拼图完整,才能通过校验。如下图所示:


9.gif


02破解


其实破解滑动拼图验证码的原理和滑块验证码的是一样的,就是找到滑动距离,然后让滑块按照该距离进行滑动即可。


但是滑动拼图验证码,它的滑动距离是随机的,所以我们不能像对滑块验证码一样,通过直接观察滑块和滑轨的长度来确定滑动距离。


我们打开开发者模式,对网页进行观察,果然从中找到了一些线索。如下图所示:



10.gif


从图中可以看出,当我们点击滑块后,拼图和缺角的CSS代码就会展示出来。


11.gif


并且我们发现,滑块移动的距离就是缺口CSS样式中的left值减去拼图CSS样式中的值。


01

确定滑动距离


好了,通过上面的分析,我们已经找到了获取滑块滑动距离的思路了,那么现在就是来将思路转化成代码实现即可。


1. 获取点击滑块后的网页代码


因为点击滑块后,缺口和拼图的CSS样式才会显示出来,获取代码如下:


from selenium import webdriver
import time
driver = webdriver.Chrome(r'chromedriver.exe')
driver.get(url)
jigsawCircle = driver.find_element_by_css_selector('#jigsawCircle')
action = webdriver.ActionChains(driver)
action.click_and_hold(jigsawCircle).perform()
time.sleep(2)
html = driver.page_source


2. 提取CSS样式中的left值


我采用的用BS4库进行提取,有兴趣的读者可以看看这篇文章,提取代码如下:


from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(html,'lxml')
qidian = soup.find_all(id='missblock')[0]['style']
zhongdian = soup.find_all(id='targetblock')[0]['style']
left_hua = re.findall('left:(.*?)px',qidian)
left_que = re.findall('left:(.*?)px',zhongdian)


3. 计算滑动距离


计算代码如下:


distance = float(left_que[0])-float(left_hua[0])


02 模拟滑动


因为在计算滑动距离的时候,我们就已经将鼠标定在滑块位置了,那么我们现在只需移动鼠标到缺口处即可完成校验。代码如下:


action.move_by_offset(distance,0)
action.release().perform()


03小结


1. 本文详细介绍了滑动拼图验证码反爬虫的原理和破解方法。

2. 滑动拼图验证码是现在非常流行的一种验证码反爬虫,所以大家如果想成为一名爬虫工程师,那这绝对是一个必备技能。

3. 破解滑动拼图验证码的关键是要找到拼图和缺口这两者之间距离的联系,只要找到随机移动的距离,那模拟移动,想必对大家来说都不是什么事~

4. 本文仅供学习参考,不做它用。

相关文章
|
6月前
|
前端开发 算法 网络安全
图片滑块验证功能很难吗?做个可以自己抠形状的图片滑块验证组件
图片滑块验证功能很难吗?做个可以自己抠形状的图片滑块验证组件
152 0
|
6月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
405 0
|
算法 前端开发 JavaScript
滑块验证码------啥?你居然还在手动滑动,你不来试试自动滑动吗
滑块验证码------啥?你居然还在手动滑动,你不来试试自动滑动吗
565 0
|
安全 开发工具 Python
滑动拼图验证,摆脱烦人的验证码输入
你最近是否遇到过令人头疼的验证码?为何不让滑动拼图成为你的新选择呢?通过完成一个有趣的滑动拼图来验证你的身份,既能锻炼大脑,又能保护你的隐私。
滑动拼图验证,摆脱烦人的验证码输入
|
6月前
|
JavaScript 前端开发
图片滑动验证
图片滑动验证
35 0
|
安全 PHP 开发工具
滑动拼图验证码,拼出完美画面!
在当今的数字时代,随着网络安全问题的日益突出,人们对于账户安全的需求也越来越迫切。而滑动拼图验证码作为一种创新的验证方式,正逐渐受到广大用户的喜爱和应用。
|
C# 开发工具
C#滑动拼图验证码实现笔记
C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。突发奇想,动手开发一个C#滑动拼图验证码,下面是我开发过程的记录。
C#滑动拼图验证码实现笔记
|
JavaScript 前端开发
记录2分钟破解知识星球验证弹窗
先声明我是这个网站的会员我可以进去
1308 0
|
JavaScript API 数据安全/隐私保护
数美滑块验证码分析
本文以官网的滑块验证码为例,分析验证过程,完成模拟验证。
1419 0
数美滑块验证码分析
|
JavaScript
滑动图片验证
滑动图片验证
51 0