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

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

大家好,我是辰哥~

在之前的文章中,给大家介绍了关于滑动验证码的原理和破解方法,在这个基础上给大家在介绍一种新的反爬虫方式——滑动拼图验证码。

辰哥今天来跟大家分享一下如何解决验证码反爬虫中的滑动验证码反爬虫。

01

原理

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

02

破解

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

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

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

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

并且我们发现,滑块移动的距离就是缺口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. 本文仅供学习参考,不做它用。

END

最近辰哥利用空闲时间瞎弄了一个可视化平台,感兴趣的小伙伴可以去看一看。

链接:show.chenlove.cn

如果大家对这个平台有什么更好的建议可以在下方留言,辰哥一定加以改进,谢谢????

今日推荐

针对不同场景的Python合并多个Excel方法

2021-08-09

花几天时间肝了一个在线制作词云图网站(文末送书)

2021-08-06

相关推荐

舞龙 气势磅礴的中华民俗
365bet体育在线赌场

舞龙 气势磅礴的中华民俗

📅 09-18 👁️ 7199
ps素材怎么用
365游戏注册

ps素材怎么用

📅 10-09 👁️ 5993
下载的软件不用了怎么注销(如何注销不再使用的下载软件)
嬖童的解释
365游戏注册

嬖童的解释

📅 09-06 👁️ 3077
北京通州区必玩十大景区,北京通州区有哪些景点推荐、旅游十大必去景区
砭射 - 中医百科 - 专业的中医百科
365bet体育在线赌场

砭射 - 中医百科 - 专业的中医百科

📅 08-30 👁️ 7274
安卓手机上看mobi电子书,哪款APP最好用?
365bet体育在线赌场

安卓手机上看mobi电子书,哪款APP最好用?

📅 08-09 👁️ 3186
2018maya怎么加点_如何在maya制作中直接在物体面上加点
小小航海士什么势力好 小小航海士势力选择
365游戏注册

小小航海士什么势力好 小小航海士势力选择

📅 07-21 👁️ 2453