目前很多網(wǎng)站和APP都用上了滑塊驗(yàn)證碼兆衅,相對(duì)傳統(tǒng)的字符型驗(yàn)證碼镀层,破解難度更大。
網(wǎng)上能找到的破解方案基本上是通過2張圖(一張滑塊圖船逮,一張底圖)進(jìn)行模版匹配顾腊。這種方法不能說不好,網(wǎng)站應(yīng)用可以方便拿到2張圖挖胃,但是APP應(yīng)用就不太方便了杂靶。
下面介紹一種只用一張截圖就可以破解滑塊驗(yàn)證碼的方案。
方案的優(yōu)點(diǎn):
- 只需要一張截圖酱鸭;
- 只需要使用opencv伪煤;
- 同時(shí)支持網(wǎng)站和APP破解;
方案的缺點(diǎn):
- 只針對(duì)于上邊緣或者下邊緣是直線的滑塊驗(yàn)證碼有效凛辣;
- 需要做屏幕截圖和坐標(biāo)轉(zhuǎn)換抱既;
方案介紹:
1. 處理流程:
-
屏幕截圖,獲取到滑塊驗(yàn)證碼的核心區(qū)域扁誓;
基本上驗(yàn)證碼顯示的位置都是固定的防泵,所以這個(gè)步驟比較簡單,獲取到的滑塊驗(yàn)證碼核心區(qū)域如下圖所示:
待處理的滑塊驗(yàn)證碼圖片 -
轉(zhuǎn)換成灰度圖蝗敢,結(jié)果如下圖所示:
滑塊驗(yàn)證碼灰度圖 -
進(jìn)行 Canny 邊緣檢測捷泞,結(jié)果如下圖所示:
滑塊驗(yàn)證碼邊緣檢測圖 -
進(jìn)行 Hough 直線檢測,結(jié)果如下圖所示:
滑塊驗(yàn)證碼直線檢測圖 -
獲取2個(gè)滑塊上邊緣或者滑塊下邊緣直線以后寿谴,再遍歷上一步的邊緣檢測結(jié)果(只需要遍歷最多3行的數(shù)據(jù))锁右,就可以找到兩個(gè)滑塊的具體坐標(biāo),結(jié)果如下圖所示:
滑塊坐標(biāo)檢測 - 找到滑塊坐標(biāo)就好辦了讶泰,根據(jù)截圖方式以及是否有縮放咏瑟,把坐標(biāo)轉(zhuǎn)換成實(shí)際屏幕坐標(biāo),然后通過操作鼠標(biāo)點(diǎn)擊痪署,模擬人類移動(dòng)滑塊即可(這部分網(wǎng)上有很多介紹码泞,可通用)。
2. 代碼實(shí)現(xiàn):
稍后放出狼犯,敬請期待余寥!