天天看點

極驗驗證的滑動驗證碼破解

題記——毛主席教導我們一切帝國主義都是紙老虎

極驗驗證(http://www.geetest.com)是目前比較前沿新穎的一種驗證方式,相比傳統的字元型驗證碼更加人性化,使用者驗證的時間更短,更具互動性,同時也減少了網站的使用者流失。該網站号稱“超過200種人機行為特征檢測,全面監控可疑機器攻擊,快到每30分鐘全網特征動态更新,迅速應對突發情況,多達5層異構安全模型濾網 ,360度保護網站安全”。部落客最近在寫爬蟲時目标網站用的就是極驗驗證的驗證,順帶着就破解了一下(就是這麼霸氣,哈哈)

我們先看一下極驗驗證是什麼。極驗驗證的驗證方式是給你一幅圖,随機扣掉一塊,讓使用者滑動滑塊把圖拼上,就能驗證通過。

如圖所示

開始時會給你一張原始圖檔

極驗驗證的滑動驗證碼破解

當滑鼠點住滑塊時,會出現拼圖

極驗驗證的滑動驗證碼破解

\

使用者把滑塊拖到拼圖缺失位置時,驗證就會通過(圖配錯了,不過沒關系,意思大家都懂 ^_^ )

極驗驗證的滑動驗證碼破解

第一步:模拟浏覽器

第二步:找到拼圖的位置

首先先通過selenium+phantomjs的截圖的功能獲得原始圖檔

極驗驗證的滑動驗證碼破解

再将滑鼠點選住滑塊(clickandhold),等待幾秒,截圖獲得拼圖的圖檔

極驗驗證的滑動驗證碼破解

我是通過比較像素點的方法找到缺失位置的的,當像素點差異過了一定範圍,這時在比較該點附近的一些點來比較,确定是不是拼圖的邊界。附近的比較點有很大的說道,網上一些人說的橫向比較(x軸)和豎向比較(y軸)考慮的都不太全面,要考慮拼圖上的凸起和凹陷的情況

為什麼不能直接通過差異來确定拼圖缺失塊邊界呢。原因是對比的兩張圖是截圖得來的,或多或少會有一些差異,保不齊就有一兩個點被程式認為是目标位置的邊界。同時也有可能對拼圖的陰影位置誤判。

極驗驗證的滑動驗證碼破解

第三步:滑動軌迹

前面幾步我們知道了滑塊應該滑到的位置,當我們讓程式滑動時會出現下圖的情況

極驗驗證的滑動驗證碼破解

(鑒于不斷有人私信問回歸怎麼做的,部落客在這說一下思路。2017.2.21)

極驗驗證的滑動驗證碼破解
極驗驗證的滑動驗證碼破解

本文轉自 yntmdr 51CTO部落格,原文連結:http://blog.51cto.com/yntmdr/1905937,如需轉載請自行聯系原作者

繼續閱讀