寫在前面
說(shuō)起來(lái)比較丟臉。我們有個(gè)手機(jī)的驗(yàn)證碼發(fā)送邏輯需要使用驗(yàn)證碼,這塊本來(lái)項(xiàng)目里面就有驗(yàn)證碼繪制邏輯,.Net Framework的,使用的包是
System.Drawing,我把這驗(yàn)證碼繪制邏輯復(fù)制到.Net Core的新項(xiàng)目引用對(duì)應(yīng)包System.Drawing.Common
,windows下面驗(yàn)證碼正常,CentOs下面死活不能正常,像這樣:
(左邊為CentOs運(yùn)行結(jié)果,右為Windows)
* 依賴庫(kù)檢查安裝;
* 字體檢查安裝;
* 邏輯檢查;
折騰了一天多放棄了,決定重新寫。
我看了市面上的各種驗(yàn)證碼,使用第三方的,免費(fèi)的都有很多限制,并隨時(shí)有可能開始收費(fèi)(用戶量上去后就收費(fèi),俗稱“養(yǎng)豬”);
有些比較大平臺(tái)的已經(jīng)開始收費(fèi)或者即將收費(fèi)(無(wú)可厚非,不點(diǎn)名);
視野有限,沒(méi)有都一一了解到,如果有免費(fèi)的,限制又比較少的,使用體驗(yàn)不錯(cuò)的第三方驗(yàn)證碼,歡迎留言~~
綜上,我決定自己繪制
選擇圖片繪制庫(kù)
GitHub上面我看到比較多星的是:
SixLabors / ImageSharp <https://github.com/SixLabors/ImageSharp>
dlemstra / Magick.NET <https://github.com/dlemstra/Magick.NET>
mono / SkiaSharp <https://github.com/mono/SkiaSharp>
綜合考慮后選擇了:ImageSharp
官方文檔:https://sixlabors.github.io/docs/ <https://sixlabors.github.io/docs/>
成果
Hei.Captcha
一個(gè).net core,跨平臺(tái)的驗(yàn)證碼生成工具包,基于ImageSharp <https://github.com/SixLabors/ImageSharp>
。
中文泡泡驗(yàn)證碼
字母數(shù)字組合驗(yàn)證碼
表單Demo
使用
Install-Package Hei.Captcha /// <summary> /// 泡泡中文驗(yàn)證碼 /// </summary> ///
<returns></returns> public IActionResult BubbleCode() { var code =
_securityCode.GetRandomCnText(2); var imgbyte =
_securityCode.GetBubbleCodeByte(code); return File(imgbyte, "image/png"); } ///
<summary> /// 數(shù)字字母組合驗(yàn)證碼 /// </summary> /// <returns></returns> public
IActionResult HybridCode() { var code =
_securityCode.GetRandomEnDigitalText(4); var imgbyte =
_securityCode.GetEnDigitalCodeByte(code); return File(imgbyte, "image/png"); }
高級(jí)
參照Demo, 通過(guò)修改/豐富應(yīng)用程序運(yùn)行目錄./fonts目錄下的字體文件,生成更多不同字體組合的驗(yàn)證碼。
總結(jié)
滑塊驗(yàn)證碼、點(diǎn)擊選擇驗(yàn)證碼、軌跡驗(yàn)證碼等的實(shí)現(xiàn)時(shí)間成本,技術(shù)要求都比較高,并且各種防破解上面可能也需要花很多時(shí)間。綜合需求考慮選擇了個(gè)性價(jià)比比較高的“土味”驗(yàn)證碼繪制方案;
本驗(yàn)證碼我自己也沒(méi)有去嘗試去破解過(guò),不知道破解難度,有興趣的同學(xué)試試,能告訴我結(jié)果就最好了[比心]
驗(yàn)證碼肉眼辨認(rèn)上面,可能稍難體驗(yàn)差了點(diǎn)。自己修改下泡泡的數(shù)量,繪制的參數(shù)改改,代碼不多,都有備注。
希望能幫到大家,也希望大家積極PR,豐富驗(yàn)證碼樣式。
源碼
喜歡留個(gè)星~
https://github.com/gebiWangshushu/Hei.Captcha
<https://github.com/gebiWangshushu/Hei.Captcha>
參考
https://sixlabors.github.io/docs/ <https://sixlabors.github.io/docs/>
熱門工具 換一換
