前言
為了確保網(wǎng)絡(luò)安全英妓,我們網(wǎng)站采用了文字點選驗證碼來驗證用戶身份挽放。文字點選驗證碼是一種簡單而有效的驗證機制绍赛,通過要求用戶點擊相關(guān)圖像來區(qū)分真實用戶和機器人。它不僅可以防止惡意攻擊辑畦,還能提供用戶友好的驗證體驗吗蚌。
優(yōu)勢
在文字點選驗證碼中,用戶將面對一個包含多個圖像的界面纯出。用戶需要根據(jù)指示點擊與給定條件相符的圖像蚯妇。這些條件可以是點擊所有顯示食物的圖片,或者點擊所有帶有交通工具的圖像潦刃。通過這樣的驗證方式侮措,系統(tǒng)能夠有效區(qū)分真實用戶和機器人,提高網(wǎng)站的安全性乖杠。
文字點選驗證碼的優(yōu)勢在于其簡潔性和可操作性分扎。用戶只需點擊幾個圖像就能完成驗證,而無需輸入復(fù)雜的驗證碼胧洒。這不僅減少了用戶的繁瑣操作畏吓,還提高了用戶的滿意度。
實現(xiàn)代碼
- HTML代碼
<script src="captcha.js"></script>
<script>
kg.captcha({
// 綁定元素卫漫,驗證框顯示區(qū)域
bind: "#captchaBox",
// 驗證成功事務(wù)處理
success: function(e) {
console.log(e);
},
// 驗證失敗事務(wù)處理
failure: function(e) {
console.log(e);
},
// 點擊刷新按鈕時觸發(fā)
refresh: function(e) {
console.log(e);
}
});
</script>
<div id="captchaBox">載入中 ...</div>
- Python代碼
from wsgiref.simple_server import make_server
from KgCaptchaSDK import KgCaptcha
def start(environ, response):
# 填寫你的 AppId,在應(yīng)用管理中獲取
AppID = "AppID"
# 填寫你的 AppSecret列赎,在應(yīng)用管理中獲取
AppSecret = "AppSecret"
request = KgCaptcha(AppID, AppSecret)
# 填寫應(yīng)用服務(wù)域名宏悦,在應(yīng)用管理中獲取
request.appCdn = "https://cdn6.kgcaptcha.com"
# 請求超時時間,秒
request.connectTimeout = 10
# 用戶id/登錄名/手機號等信息包吝,當(dāng)安全策略中的防控等級為3時必須填寫
request.userId = "kgCaptchaDemo"
# 使用其它 WEB 框架時請刪除 request.parse诗越,使用框架提供的方法獲取以下相關(guān)參數(shù)
parseEnviron = request.parse(environ)
# 前端驗證成功后頒發(fā)的 token嚷狞,有效期為兩分鐘
request.token = parseEnviron["post"].get("kgCaptchaToken", "") # 前端 _POST["kgCaptchaToken"]
# 客戶端IP地址
request.clientIp = parseEnviron["ip"]
# 客戶端瀏覽器信息
request.clientBrowser = parseEnviron["browser"]
# 來路域名
request.domain = parseEnviron["domain"]
# 發(fā)送請求
requestResult = request.sendRequest()
if requestResult.code == 0:
# 驗證通過邏輯處理
html = "驗證通過"
else:
# 驗證失敗邏輯處理
html = f"{requestResult.msg} - {requestResult.code}"
response("200 OK", [("Content-type", "text/html; charset=utf-8")])
return [bytes(str(html), encoding="utf-8")]
httpd = make_server("0.0.0.0", 8088, start) # 設(shè)置調(diào)試端口 http://localhost:8088/
httpd.serve_forever()
最后
SDK開源地址:https://github.com/KgCaptcha竭翠,順便做了一個演示:https://www.kgcaptcha.com/demo/