極驗滑動驗證碼破解分析

最近碰到了極驗的滑動驗證碼,特別想弄清楚他到底是怎麼個東東 : )

極驗驗證碼驗證的是滑鼠拖動滑塊時的滑鼠軌跡,完整步驟就像這樣:先向目標網站請求一個id,然後拿著id去geetest伺服器請求圖片;接下來就開始拖動滑塊,拖動的過程會被js記錄下來;鬆開滑鼠後會向geetest發送一個驗證的請求,請求包含加密後的滑鼠軌跡、拖動距離、所用時間等信息,如果成功,返回一個秘鑰,用來向目標網站進行下一個請求。

那我們需要做什麼呢?

  1. 向目標網站請求id
  2. 用id去geetest請求圖片
  3. 合成圖片得出拖動距離
  4. 生成滑鼠軌跡
  5. 用Python把加密的方法實現一遍
  6. 發送加密後的數據

思路:

前兩個都還好說

第三個、圖片是混淆之後的圖片,需要按著他的規則把相應的塊換換位置就可以得到完整的圖片了;缺口位置:每張圖片各轉為一個Python列表,每個值對應圖片上每一列像素值的和,然後對兩個列表進行比較(缺口的位置和所需要拖動的距離不相同,有一個固定的差)

第四個、軌跡生成有許多方法,1.找找規律,寫個循環直接生成。如果寫的不好影響成功率。2.找一些樣本,然後隨機選一個,根據自己需要拖動的距離按比例方法縮小23333

第五個、找到相應的js代碼然後用Python實現一遍(體力活費時間,還好我寫好了是吧)。。。或者可以調用v8

-------------------------------------------

在驗證碼分析過程中我搭建一個簡易的後台。極驗有開放的Python demo,flask和django的都有,我用的flask。滑動成功之後,通過js把加密之前的滑鼠軌跡等信息發送到後台,後台存入資料庫。我又在頁面上加了一個圖表,可以把自己的軌跡顯示出來,也可以把後台生成的軌跡顯示出來,看看自己生成的軌跡和自己拖動的軌跡有什麼區別,不過是否通過還是得發到極驗後台去了。

最後放一張測試時搭建的後台。渣前端):

2017年3月9日更新:

極驗的驗證碼更新挺快的,用這種方法去分析請求工作量挺大的,還是控制瀏覽器來的穩定,當然了,以前研究的東西正好可以用在這裡,就像距離計算、軌跡生成之類的。

推薦閱讀:

12306 的圖形驗證碼是否更難破解?
刷票軟體或者秒殺軟體是如何破解驗證碼的?
簡訊驗證碼被亂髮怎麼辦?

TAG:爬虫 | 验证码 | 验证码识别 |