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

當無感驗證開啟,驗證碼顯示如下:

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

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

相反,當訪問者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"])
# 服務器黑名單檢測
if self.auth.client_blacklist():
message = self.auth.lang[40020] # 服務器黑名單
風控異常設置
一級:適用于開發調試及對安全要求一般的應用
二級:標準模式,適用于大部分應用
三級:適用于對安全要求極高的應用

當指定分鐘內錯誤記錄達到指定次數時,觸發風險異常提示:

部分代碼片段
# 請求次數限制檢測
excess = self.auth.excess(0)
if excess:
message = {1: self.auth.lang[40012], 2: self.auth.lang[40013], 3: self.auth.lang[40014]}[excess]
# 風險檢測,在 x 分鐘內出錯記錄超過 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] #
相關鏈接
SDK下載:
https://github.com/KgCaptcha
在線體驗:
https://www.kgcaptcha.com/demo/
開發文檔:
https://www.kgcaptcha.com/article?pid=6