前言
在驗(yàn)證碼項(xiàng)目中,都會(huì)遇到驗(yàn)證碼被惡意大量高頻的調(diào)用,給服務(wù)造成很多無(wú)效的注冊(cè)或登錄,占用大量的系統(tǒng)資源。
而我在想,有沒有哪一款驗(yàn)證碼產(chǎn)品可以設(shè)置黑/白名單限制IP訪問(wèn)和設(shè)置風(fēng)控異常呢?答案是:有,大海茫茫中讓我找到了 KgCaptcha,接下來(lái)我就給大家講講怎么設(shè)置吧!
無(wú)感驗(yàn)證
開啟:當(dāng)用戶通過(guò)驗(yàn)證后,再次訪問(wèn)時(shí),無(wú)需驗(yàn)證,直接通過(guò)。
關(guān)閉:用戶每次都需手動(dòng)驗(yàn)證。
當(dāng)無(wú)感驗(yàn)證開啟,驗(yàn)證碼顯示如下:
部分代碼片段
def sense_verify(self):
""" 檢測(cè)當(dāng)前用戶是否為無(wú)感免驗(yàn)證用戶 """
# 當(dāng)前應(yīng)用是否開啟無(wú)感驗(yàn)證功能
if self.auth.data["sense"] != 1: return 0, self.auth.lang[0]
# 支持客戶端調(diào)時(shí)關(guān)閉無(wú)感驗(yà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)境是否支持無(wú)感驗(yàn)證,無(wú)法獲取/寫入客戶端 COOKIE
if len(str(self.auth.cid)) != 32 or not self.auth.ip: return 40000, self.auth.lang[40000]
....
IP限制(黑/白名單)
黑名單模式:禁止以下IP訪問(wèn)
白名單模式:只允許以下IP訪問(wèn)
通過(guò)選擇黑/白名單,填寫IP列表來(lái)限制指定IP訪問(wèn)驗(yàn)證碼。
當(dāng)訪問(wèn)者IP在黑名單列表里,驗(yàn)證碼顯示如下:
相反,當(dāng)訪問(wèn)者IP在白名單列表里,驗(yàn)證碼正常顯示:
部分代碼片段
# 客戶端IP檢測(cè)
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ù)器黑名單檢測(cè)
if self.auth.client_blacklist():
message = self.auth.lang[40020] # 服務(wù)器黑名單
風(fēng)控異常設(shè)置
一級(jí):適用于開發(fā)調(diào)試及對(duì)安全要求一般的應(yīng)用
二級(jí):標(biāo)準(zhǔn)模式,適用于大部分應(yīng)用
三級(jí):適用于對(duì)安全要求極高的應(yīng)用
當(dāng)指定分鐘內(nèi)錯(cuò)誤記錄達(dá)到指定次數(shù)時(shí),觸發(fā)風(fēng)險(xiǎn)異常提示:
部分代碼片段
# 請(qǐng)求次數(shù)限制檢測(cè)
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)險(xiǎn)檢測(cè),在 x 分鐘內(nèi)出錯(cuò)記錄超過(guò) n 次則拒絕
if self.auth.data["level"] > 0: # self.auth.cid
# if not self.auth.cid: message = self.auth.lang[40007] # 無(wú) COOKIE ID
if not self.auth.risk():
message = self.auth.lang[40006] #
相關(guān)鏈接
SDK下載:
https://github.com/KgCaptcha
在線體驗(yàn):
https://www.kgcaptcha.com/demo/
開發(fā)文檔:
https://www.kgcaptcha.com/article?pid=6