1. 程式人生 > >複雜背景的驗證碼識別破解 以Discuz的動畫驗證碼為例。

複雜背景的驗證碼識別破解 以Discuz的動畫驗證碼為例。

對於比較複雜的驗證碼,比如DZ論壇最新的驗證碼,處理起來相對麻煩一些,但是原理還是和普通的識別一樣的,無非多了個背景處理的方案,看如下對DZ論壇的驗證碼的識別的思路



首先我們要去除它的背景,對於這樣稍微複雜的背景,用過去的方法很難做到,上圖的例子還不是很明顯,我發現很多圖片背景色和字母色近似,而且字母顏色是不斷變化的,背景也是不斷變化的







那我初始的想法是找到圖片中使用顏色最多的方法,於是我們用HSL表示各點顏色,接著進行統計,得到最大的幾個峰值,這裡便是圖片中幾個最豐富的顏色的L值得累加值



其餘的都可以認為是噪音,我們對每個峰值進行分割,得到如下圖片



你看這樣就把單個顏色圖片分割出來了,接下來就是找到圖片中除去黑色和白色後的圖片



然後進行灰化處理,閥值處理,降噪,得到



接著根據邊界檢測出來的最左側x位置,來排序字母順序



接下來的事情就輕車熟路了,把圖片轉成標準模板,通過少量學習就達到了95%以上的識別率

c:15 j:8 8:7 t:9 9:4 x:7 4:6 2:4 h:7 f:8 e:18 b:5 y:3 k:4 w:3 g:5 3:5 7:6 r:2 m:3 q:4 v:2 p:3 6:2
以上資料表示 c學習15次 j學習8次…


電腦程式設計入門 電腦程式設計入門 創意園區出租 創意園區出租 遊戲製作學習 遊戲製作學習


只要字元不粘連,大部分驗證碼干擾技術都是可以有辦法,所以為什麼google驗證碼看起來很簡單,但是沒有人能夠很好的破解它得原因。

補充,
rise在留言中發現有一些字元加入雜點的問題,由於這種驗證碼不是很普遍,稍微做了研究


CY3E 這個圖片3字中有雜點,其他沒有,按照文章中介紹的辦法,怎麼知道這個3不是像其他顏色雜點一樣的圖片呢?


我覺得需要加入一個步驟,就是對每次過濾顏色生成出來的圖片,進行填充
找到3的雜點原圖:


然後我們進行演算法填充



這個圖片與其他全部是雜點的圖片之間的差別進行過濾,我考慮可以通過以下方法:
1、連貫點的寬度
2、連貫點的個數
這樣剩下的就只剩下CY3E的過濾後的圖片

至於字元傾斜的問題,我覺得完全可以在機器學習過程中,我們自己旋轉正在學習的圖片一定角度,例如從-10到+10度,只不過這樣的學習庫會大一些,但是就10個數字的驗證碼來說,這點效能損失應該可以忽略不計。

相關推薦

複雜背景驗證識別破解 Discuz動畫驗證

對於比較複雜的驗證碼,比如DZ論壇最新的驗證碼,處理起來相對麻煩一些,但是原理還是和普通的識別一樣的,無非多了個背景處理的方案,看如下對DZ論壇的驗證碼的識別的思路 首先我們要去除它的背景,對於這樣稍微複雜的背景,用過去的方法很難做到,上圖的例子還不是很明顯,我發現很多圖片背景色和字母色近似,而且字母顏色是

爬蟲寫法及狀態的認知,小豬短租---爬蟲案例

寫一個最簡單的爬蟲 先介紹,我的環境:                Ubuntu:18.04(64位)          

驗證識別破解

針對比較整齊的數字驗證碼 過程:提取資料模型,根據資料模型匹配圖片驗證碼 圖示: 詳細步驟: 一 提取資料模型: 從網路地址獲取圖片 public static void getImage() { try

Opencv+Zbar二維識別(標準條形碼/二維識別

使用Opencv+Zbar組合可以很容易的識別圖片中的二維碼,特別是標準的二維碼,這裡標準指的是二維碼成像清晰,圖片中二維碼的空間佔比在40%~100%之間,這樣標準的圖片,Zbar識別起來很容易,不需要Opencv額外的處理。 下邊這個例程演示兩者配合對條形碼和二維碼的

Linux系統下的vi編輯器的使用(VMware下的Ubuntu64

linux系統 編輯器 一般模式 ubuntu虛擬機 vi編譯器 上午花費一些時間學習vi編輯器,下面把學習的一些經驗記錄在這篇博文中。 vi編輯器是Linux系統下的基本編譯器,工作在字符模式,是一個很高效的文本編譯器,它在系統和服務器管理上的功能是普通的圖形編譯器所不能夠

Linux下command not found(CentOS下沒有telnet

裏的 linu com ins net 文件 bsp netd mman [[email protected]/* */ ~]# telnet bash: telnet: command not found rpm -qa telnet* //查詢是否安裝了

用PHP和Ajax進行前後臺數據交互——用戶登錄

serial click ots 多網站 頁面 用戶註冊 index -s password 很多網站中都有用戶登錄系統,要完成用戶的註冊和登陸,就一定要用到前後臺的數據交互。在這裏以簡單的用戶註冊和登陸為例介紹一下前後臺交互的大致流程。 首先,我們來做一個簡單的登陸界

Mac 創建證書( 創建gdb證書

pick 1-1 src for png b- num iat alt open /Applications/Utilities/Keychain\ Access.app/ 打開 鑰匙串訪問 繼續繼續 創建完畢。 Now that we have a ce

用戶體驗分析: “師路南通網站”

eight 知識 簡單的 用戶控制 活動 用戶體驗設計 素質 文字 平臺 1、目標 針對師路南通,開展UX分析。PS:對比公眾號;UMU學習平臺(umu-umu)、學生安全教育平臺(xueanquan123) *基於實例分析,體會用戶體驗設計的7條準則。 *功能測試腳本及B

2017.11.17——作業四用戶體驗分析: “師路南通網站”

對象比較 center p s 做的 註冊 mar 微信 找到 幫助 作業四.用戶體驗分析:以 “師路南通網站” 為例 作業目標:針對師路南通 ,開展UX分析,基於實例分析,體會用戶體驗設計的 7 條準則。 首先是“師路南通”的簡單頁面介紹 師路南通功能列表: 在頁面的首

軟工作業4:用戶體驗分析: “師路南通網站”

在線咨詢 獲取 平臺 導航欄 二維 無法登陸 我們 圖片 標題 一、目標:針對師路南通 ,開展UX分析。 PS:對比另外2個學習網站:1. UMU學習平臺 ;2. 學生安全教育平臺 基於實例分析,體會用戶體驗設計的 7 條準則。 二、過程 (一)滿意的地

[SakuraiYo][軟工作業(4)]用戶體驗分析: “師路南通網站”

image 頁面設計 無效 課程 工作 匹配 註冊界面 體驗 登錄 一.頁面初覽(“師路南通”、“UMU學習平臺”、“學生安全教育平臺”) 1.“師路南通”頁面初覽。 *初覽亮點:進入網站時的歡迎頁面,不僅切合網站主題,且會變幻顯示各類相關知識內容,會一定程度上吸引初次點

軟工作業(4):用戶體驗分析—— “師路南通網站”

學員 androi blog 賬號 移動 用戶登錄 自動 二維 資源獲取 用戶體驗分析:以 “師路南通網站” 為例 一、目標 (1)針對師路南通,開展UX分 PS:對比另外2個學習網站(學生安

從0開始做垂直O2O個性化推薦-58到家美甲

mda amp 算法 彩繪 .com web 不同的 會有 tro 從0開始做垂直O2O個性化推薦 上次以58轉轉為例,介紹了如何從0開始如何做互聯網推薦產品(回復“推薦”閱讀),58轉轉的寶貝為閑置物品,品類多種多樣,要做統一的寶貝畫像比較難,而分類別做寶貝畫像成本又

Alfred 3 如何設置默認搜索引擎(百度搜索

今天 alfred width city search left 屏幕 由於 -o 今天,由於收到UDACITY的微信新聞,關於使用Alfred 工具的介紹,所以一時興起,決定再把Alfred研究一下,以後再慢慢適應使用Alfred,結果花了近2個小時才總算把Alfred默

unity的assetbundle的自動命名,我的命名lua

length make 命名規則 bst deb pan subst erro char static string testDir = "Assets/LuaScripts/"; [MenuItem("測試/lua命名")] public sta

如何規避適配風險?《亂世王者》,探秘手遊兼容性測試之路

其中 導致 class 自動 activiti 挖掘 除了 手遊 app 歡迎大家前往雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 作者:Lane Li,騰訊適配測試負責人、WeTest專家兼容測試負責人 由 騰訊遊戲雲 發布在雲+社區 項目背景 《亂世王者》是一款歷史架

.NET Framework 2.0/3.0/3.5 v90 平臺工具集目標請確保在計算機上安裝了 Visual Studio 2008

計算 3.5 今天 點擊 右鍵 解決 鼠標右鍵 得到 ima 今天在Visual Studio2010下面開發C++應用的時候發現“.NET Framework 2.0/3.0/3.5 以 v90 平臺工具集為目標。請確保在計算機上安裝了 Visual Studio 200

爆款AR遊戲如何打造?網易楊鵬《悠夢》詳解前沿技術

系統 安全 有著 互聯 其中 應用 中小型 信息 詳解 7月31日,2018雲創大會遊戲論壇在杭州國際博覽中心103B圓滿舉行。本場遊戲論壇聚焦探討了可能對遊戲行業發展有重大推動的新技術、新實踐,如AR、區塊鏈、安全、大數據等。網易AR遊戲生態合作負責人楊鵬表示,傳統遊戲模

jmeter測試之參數化---測試多個用戶登錄

com 密碼 fig 登錄系統 一個 有用 線程組 http src 在測試用戶登錄時,想到要多個用戶輪流登錄系統。這時就想到可以將所有用到的用戶名密碼存儲到login.csv文件裏面,然後通過設置來讀取裏面的內容,完成登錄。具體操作如下: 1.我想四個不同的用戶來輪流登錄