Discuz! 插件阿里雲ESA AI驗證碼
將阿里雲ESA AI驗證碼接入Discuz!, 為用戶註冊、登錄、找回密碼、發帖、回復及帖子點評等場景提供人機驗證,有效降低機器註冊、撞庫登錄和垃圾內容提交風險。
目前阿里雲ESA的AI驗證碼是免費提供
站長們可以享受阿里雲頂級免費風控防護能力
ESA的AI驗證碼免費期限以阿里雲官方公布為準
阿里雲ESA AI驗證碼插件通過Discuz! 原生插件接口,將阿里雲ESA AI驗證能力接入論壇常用業務場景,無需修改系統文件和模板文件。
插件支持嵌入式與彈出式兩種驗證方式,可根據論壇模板和使用場景靈活選擇。 驗證通過后自動繼續原有提交操作,盡量保持Discuz! 原生操作流程和頁面樣式。
主要功能:
-支持用戶註冊驗證
-支持普通登錄、頂部登錄及彈出層登錄驗證
-支持找回密碼驗證
-支持發表主題和快速發帖驗證
-支持發表回復和快速回復驗證
-支持帖子點評彈出層驗證
-支持嵌入式與彈出式驗證碼
-支持自定義嵌入式組件寬度
-支持設置彈出式驗證按鈕顏色
-支持開啟/關閉未驗證提示以及提示樣式和區域
-支持中國內地和新加坡驗證碼地域
-支持一次性通行票據及有效期控制
-支持ESA回源密鑰校驗,降低繞過ESA直接訪問源站的風險
-支持調試日誌,便於排查驗簽及提交問題
-支持Discuz! X3.4、X3.5和X5.0獨立兼容版本
安全說明
插件採用服務端驗簽和一次性通行票據機制。 驗證票據使用后立即失效,並受到有效期、會話及業務場景限制,減少重複使用和跨場景復用風險。
必須配合阿里雲ESA的空Token攔截規則與回源請求頭規則使用,並妥善保管回源密鑰。
使用前準備
使用本插件前,需要先在阿里雲ESA控制台創建AI驗證碼規則,並取得:
-ESA身份標
-ESA場景ID
-驗證碼地域
-回源密鑰(插件後台自帶生成地址)
啟用插件前,請關閉Discuz! 管理中心“安全→驗證設置”中的原生驗證碼功能,避免兩套驗證碼同時啟用產生衝突。
調試日誌
啟用調試日誌后,日誌保存在:
`source/plugin/fjxiaoyi_esacaptcha/data/log/`
日誌必須登錄網站服務器,通過寶塔文件管理器、SSH或其他服務器管理工具查看,插件後台不提供在線日誌查看功能。
調試日誌僅建議在排查問題時開啟,問題解決后請及時關閉。
兼容版本-Discuz! X3.4專用版本
-Discuz! X3.5專用版本
-Discuz! X5.0專用版本
請根據論壇實際版本選擇對應的插件分支安裝,不要跨版本混用。
免責聲明本插件為第三方開發插件,並非阿里雲官方產品。 使用本插件需要自行開通並正確配置阿里雲ESA AI驗證碼服務,相關服務能力、使用限制及費用以阿里雲官方說明為準。
-完成Discuz! X5.0適配,支持UTF8SC、UTF8TC編碼。
-優化PHP 8環境兼容性。
-修復觸屏版註冊、登錄及找回密碼頁面驗證碼圖片不顯示的問題。
-修復電腦版部分登錄、註冊及發帖頁面點擊驗證無響應的問題。
-修復驗證彈層關閉按鈕失效、彈層遮擋及移動端顯示超出邊界的問題。
-優化嵌入式驗證碼寬度及自適應布局。
-驗證通過后不再自動提交,由用戶確認后再次點擊業務按鈕提交。
-新增未驗證提交提示,覆蓋註冊、登錄、找回密碼、發表主題、發表回復及帖子點評。
-支持後台自定義提示開關、提示文字、顯示位置、顏色和樣式。
-優化驗證按鈕狀態,彈出驗證層時不再消失。
-驗證成功狀態精簡為“驗證通過”,避免在登錄浮層中顯示不完整。
-修復其他已知問題,提升電腦版和觸屏版的穩定性。
站點開通阿里雲EAS,請查看下發接入以及相關說明:
目前阿里雲ESA有免費版,備案的域名支持全球免費CDN加速。
相關站點解析等問題,如果您是新手,也可以通過阿里雲的工單諮詢在線客服。
當你配置完站點ESA解析后,可以按照下方步驟進行AI驗證碼的配置
第一步:在阿里雲ESA創建AI驗證碼規則
登錄阿里雲控制台,進入 「邊緣安全ESA」 後台。
在左側菜單中找到:
AI驗證碼→配置→新增規則
按照頁面提示創建一條新的AI驗證碼規則。
其中需要特別注意 「需驗簽的接口」 配置。
請先進入Discuz! 插件後台,複製插件提供的驗簽接口地址,然後填寫到阿里雲ESA後台對應位置。
插件驗簽接口為:
/plugin.php/fjxiaoyi_esacaptcha/verify
具體填寫方式請參考下圖。
重要:
規則保存后,系統會提示是否開啟 「攔截空Token」。
這裏一定要選擇 開啟,否則可能導致驗證碼校驗失效或被繞過。
第二步:填寫場景ID和身份標識
AI驗證碼規則創建完成后,在阿里雲ESA後台找到對應規則。
複製以下兩個參數:
- 場景ID
- 身份標識
然後進入Discuz! 插件後台,將這兩個參數填寫到對應位置並保存。
填寫完成后,建議再次檢查阿里雲ESA後台:
「攔截空Token」必須保持開啟狀態。
具體位置請參考下圖。

第三步:創建ESA回源請求頭規則
進入阿里雲ESA後台:
站點管理→找到已經接入ESA的域名→點擊進入站點
在右側找到:
規則→輪換規則→修改請求頭
進入后,將作用方向選擇為:
ESA到源站
然後點擊:
新增規則
具體位置請參考下圖。

第四步:設置匹配條件
規則名稱可以自行填寫,例如:
小蟻ESA AI驗證碼回源驗證
規則內容選擇:
自定義規則
首先添加第一個條件:
URL路徑→等於→ /plugin.php/fjxiaoyi_esacaptcha/verify
然後點擊 「And」,繼續增加第二個條件:
主機名→等於→選擇您已經接入阿里雲ESA的站點域名
最終規則需要同時滿足兩個條件:
條件1:
URL路徑=/plugin.php/fjxiaoyi_esacaptcha/verify
並且
條件2:
主機名=您當前配置的ESA站點域名
具體配置方式請參考下圖。
第五步:添加回源安全請求頭
在規則下方的 「則執行」 區域中,按照下面的參數填寫:
類型: 靜態
操作方式: 添加
請求頭名稱:
X-Fjxiaoyi-ESA-Origin
請求頭值:
填寫一個隨機生成的32位字符串。
例如:a8F3kL9mP2xT7qW4nR6yH1cV5sD0zB8e(這個是示例,千萬別用)
然後回到Discuz! 插件後台,在:
ESA回源密鑰
一欄中填寫完全相同的32位字符串。
特別注意
阿里雲ESA中填寫的:
X-Fjxiaoyi-ESA-Origin
請求頭值,必須與插件後台的:
「ESA回源密鑰」
完全一致。
包括:
- 字母大小寫
- 數字
- 字符順序
只要有一個字符不同,插件都可能無法正常完成回源驗證。
配置完成后請檢查
全部設置完成后,建議再次確認以下5項:
- 需驗簽接口已經填寫正確;
- 攔截空Token已經開啟;
- 場景ID已經正確填寫到插件後台;
- 身份標識已經正確填寫到插件後台;
- 阿里雲ESA的
X-Fjxiaoyi-ESA-Origin請求頭值,與插件後台的 ESA回源密鑰完全一致。
以上全部確認無誤后,在插件的接入狀態標籤裏面找到“執行安全自檢”,確保測試通過。 即可開始測試AI驗證碼功能。 (如下圖)
第六步:啟用阿里雲ESA AI驗證碼
dz後台安全-驗證設置-組件列表-驗證碼-編輯-啟用阿里雲ESA AI驗證碼