滑塊驗(yàn)證碼的原理和破解方法~

作者 |志斌
來源 | 志斌的python筆記
隨著時間的推移,技術(shù)的進(jìn)步,字符驗(yàn)證碼越來越容易被破解,所以,開發(fā)者開發(fā)了一種新的反爬蟲方式——滑塊驗(yàn)證碼反爬蟲,來限制爬蟲程序。
志斌今天來跟大家分享一下如何解決驗(yàn)證碼反爬蟲中的滑塊驗(yàn)證碼反爬蟲。
01
原理
網(wǎng)站開發(fā)者們認(rèn)為可以從行為方面來區(qū)別人類和計算機(jī)。例如:人們可以自由的完成拖拽、按下和釋放鼠標(biāo)等操作,但是計算機(jī)卻不可以。

02
破解
01
觀察滑塊和軌道的長度
我們首先要打開網(wǎng)頁的開發(fā)者模式,來看一下滑塊和軌道的長度分別是多少。
滑塊長度

軌道長度

從上面我們知道了滑塊的長度是50,軌道的長度是390,也就是說,滑塊需要滑動的距離是340。
02
模擬滑動
在上面我們已經(jīng)知道滑塊要滑動的距離了,那么我們現(xiàn)在就可以開始嘗試模擬滑動了。這里我們使用Selenium來完成滑塊滑動的工作。
關(guān)于Selenium庫的安裝、配置和使用方法,可以看一下這篇文章學(xué)會Selenium,實(shí)現(xiàn)真正的可見即可爬!。
模擬滑動主要分為以下兩步:
1. 將鼠標(biāo)定位到滑塊位置

我們打開開發(fā)者模式,對滑塊進(jìn)行檢查發(fā)現(xiàn),滑塊的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. 移動鼠標(biāo)到軌道終點(diǎn)
Selenium庫中有一個ActionChains模塊,它可以模擬鼠標(biāo)按住滑塊進(jìn)行移動,然后進(jìn)行釋放等操作,很符合我們的需求。代碼如下:
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
小結(jié)
1. 本文詳細(xì)介紹了滑塊驗(yàn)證碼反爬蟲的原理和破解方法。
2. 滑塊驗(yàn)證碼是現(xiàn)在比較流行的一種驗(yàn)證碼反爬蟲,所以大家如果想成為一名爬蟲工程師,那這是一個必備技能。
3. 破解滑塊驗(yàn)證碼主要分兩步:一、計算出滑塊要滑動的距離;二、讓滑塊進(jìn)行移動。
4. 本文僅供學(xué)習(xí)參考,不做它用。
