前言
在驗證碼項目中,都會遇到驗證碼被惡意大量高頻的調(diào)用,給服務(wù)造成很多無效的注冊或登錄,占用大量的系統(tǒng)資源。
而我在想,有沒有哪一款驗證碼產(chǎn)品可以設(shè)置黑/白名單限制IP訪問和設(shè)置風(fēng)控異常呢?答案是:有,大海茫茫中讓我找到了 KgCaptcha,接下來我就給大家講講怎么設(shè)置吧!
無感驗證
開啟:當(dāng)用戶通過驗證后,再次訪問時,無需驗證,直接通過。
關(guān)閉:用戶每次都需手動驗證。

當(dāng)無感驗證開啟,驗證碼顯示如下:

部分代碼片段
def sense_verify(self):
""" 檢測當(dāng)前用戶是否為無感免驗證用戶 """
# 當(dāng)前應(yīng)用是否開啟無感驗證功能
if self.auth.data["sense"] != 1: return 0, self.auth.lang[0]
# 支持客戶端調(diào)時關(guān)閉無感驗證:$_GET["sence"] = 1 關(guān)閉、默認(rèn)為 0 即開啟 <script src="captcha.js?&sence=1"></script>
if self.kg["GET"].get("sence", "ON") == "OFF": return 40004, self.auth.lang[40004]
# 客戶端環(huán)境是否支持無感驗證,無法獲取/寫入客戶端 COOKIE
if len(str(self.auth.cid)) != 32 or not self.auth.ip: return 40000, self.auth.lang[40000]
....
IP限制(黑/白名單)
黑名單模式:禁止以下IP訪問
白名單模式:只允許以下IP訪問
通過選擇黑/白名單,填寫IP列表來限制指定IP訪問驗證碼。

當(dāng)訪問者IP在黑名單列表里,驗證碼顯示如下:

相反,當(dāng)訪問者IP在白名單列表里,驗證碼正常顯示:

部分代碼片段
# 客戶端IP檢測
ip_list = self.auth.ip_list()
if ip_list == 1: message = "%s : %s" % (self.auth.lang[40010], self.kg["HTTP_ADDR"])
if ip_list == 2: message = "%s : %s" % (self.auth.lang[40011], self.kg["HTTP_ADDR"])
# 服務(wù)器黑名單檢測
if self.auth.client_blacklist():
message = self.auth.lang[40020] # 服務(wù)器黑名單
風(fēng)控異常設(shè)置
一級:適用于開發(fā)調(diào)試及對安全要求一般的應(yīng)用
二級:標(biāo)準(zhǔn)模式,適用于大部分應(yīng)用
三級:適用于對安全要求極高的應(yīng)用

當(dāng)指定分鐘內(nèi)錯誤記錄達(dá)到指定次數(shù)時,觸發(fā)風(fēng)險異常提示:

部分代碼片段
# 請求次數(shù)限制檢測
excess = self.auth.excess(0)
if excess:
message = {1: self.auth.lang[40012], 2: self.auth.lang[40013], 3: self.auth.lang[40014]}[excess]
# 風(fēng)險檢測,在 x 分鐘內(nèi)出錯記錄超過 n 次則拒絕
if self.auth.data["level"] > 0: # self.auth.cid
# if not self.auth.cid: message = self.auth.lang[40007] # 無 COOKIE ID
if not self.auth.risk():
message = self.auth.lang[40006] #
相關(guān)鏈接
SDK下載:
https://github.com/KgCaptcha
在線體驗:
https://www.kgcaptcha.com/demo/
開發(fā)文檔:
https://www.kgcaptcha.com/article?pid=6