滑块验证码的原理和破解方法~
作者 |志斌
来源 | 志斌的python笔记
随着时间的推移,技术的进步,字符验证码越来越容易被破解,所以,开发者开发了一种新的反爬虫方式——滑块验证码反爬虫,来限制爬虫程序。
志斌今天来跟大家分享一下如何解决验证码反爬虫中的滑块验证码反爬虫。
01
原理
网站开发者们认为可以从行为方面来区别人类和计算机。例如:人们可以自由的完成拖拽、按下和释放鼠标等操作,但是计算机却不可以。
02
破解
01
观察滑块和轨道的长度
我们首先要打开网页的开发者模式,来看一下滑块和轨道的长度分别是多少。
滑块长度
轨道长度
从上面我们知道了滑块的长度是50,轨道的长度是390,也就是说,滑块需要滑动的距离是340。
02
模拟滑动
在上面我们已经知道滑块要滑动的距离了,那么我们现在就可以开始尝试模拟滑动了。这里我们使用Selenium来完成滑块滑动的工作。
关于Selenium库的安装、配置和使用方法,可以看一下这篇文章学会Selenium,实现真正的可见即可爬!。
模拟滑动主要分为以下两步:
1. 将鼠标定位到滑块位置
我们打开开发者模式,对滑块进行检查发现,滑块的class属性是hover,所以定位代码如下:
from selenium import webdriver
driver = webdriver.Chrome(r'chromedriver.exe')
url = 'http://www.porters.vip/captcha/sliders.html#'
driver.get(url)
hover = driver.find_element_by_css_selector('.hover')
2. 移动鼠标到轨道终点
Selenium库中有一个ActionChains模块,它可以模拟鼠标按住滑块进行移动,然后进行释放等操作,很符合我们的需求。代码如下:
from selenium import webdriver
import time
move = webdriver.ActionChains(driver)
move.click_and_hold(hover).perform()
time.sleep(1)
move.move_by_offset(340,0)
time.sleep(1)
move.release().perform()
03
小结
1. 本文详细介绍了滑块验证码反爬虫的原理和破解方法。
2. 滑块验证码是现在比较流行的一种验证码反爬虫,所以大家如果想成为一名爬虫工程师,那这是一个必备技能。
3. 破解滑块验证码主要分两步:一、计算出滑块要滑动的距离;二、让滑块进行移动。
4. 本文仅供学习参考,不做它用。
评论