極驗滑動驗證碼破解分析
最近碰到了極驗的滑動驗證碼,特別想弄清楚他到底是怎麼個東東 : )
極驗驗證碼驗證的是滑鼠拖動滑塊時的滑鼠軌跡,完整步驟就像這樣:先向目標網站請求一個id,然後拿著id去geetest伺服器請求圖片;接下來就開始拖動滑塊,拖動的過程會被js記錄下來;鬆開滑鼠後會向geetest發送一個驗證的請求,請求包含加密後的滑鼠軌跡、拖動距離、所用時間等信息,如果成功,返回一個秘鑰,用來向目標網站進行下一個請求。
那我們需要做什麼呢?
- 向目標網站請求id
- 用id去geetest請求圖片
- 合成圖片得出拖動距離
- 生成滑鼠軌跡
- 用Python把加密的方法實現一遍
- 發送加密後的數據
思路:
前兩個都還好說
第三個、圖片是混淆之後的圖片,需要按著他的規則把相應的塊換換位置就可以得到完整的圖片了;缺口位置:每張圖片各轉為一個Python列表,每個值對應圖片上每一列像素值的和,然後對兩個列表進行比較(缺口的位置和所需要拖動的距離不相同,有一個固定的差)
第四個、軌跡生成有許多方法,1.找找規律,寫個循環直接生成。如果寫的不好影響成功率。2.找一些樣本,然後隨機選一個,根據自己需要拖動的距離按比例方法縮小23333
第五個、找到相應的js代碼然後用Python實現一遍(體力活費時間,還好我寫好了是吧)。。。或者可以調用v8
-------------------------------------------
在驗證碼分析過程中我搭建一個簡易的後台。極驗有開放的Python demo,flask和django的都有,我用的flask。滑動成功之後,通過js把加密之前的滑鼠軌跡等信息發送到後台,後台存入資料庫。我又在頁面上加了一個圖表,可以把自己的軌跡顯示出來,也可以把後台生成的軌跡顯示出來,看看自己生成的軌跡和自己拖動的軌跡有什麼區別,不過是否通過還是得發到極驗後台去了。
最後放一張測試時搭建的後台。渣前端):
2017年3月9日更新:
極驗的驗證碼更新挺快的,用這種方法去分析請求工作量挺大的,還是控制瀏覽器來的穩定,當然了,以前研究的東西正好可以用在這裡,就像距離計算、軌跡生成之類的。
推薦閱讀: