前言
上次介紹 Google reCAPTCHA v3 在前端的處理方式,這次輪到後端了。
後端可以用 C# / Java / Go 等語言實作,你可以選自己喜歡的來寫!
我拿「ASP.NET Core Web API」搭配 HttpClient 發送 API,透過 Token 拿回驗證結果。
驗證結果有很多參數,我認為最重要的就是「score」(分數)。
如果分數太低,例如 < 0.5,可能就是機器人在操作你的網頁。
此時你就可以在後端的商業邏輯進行阻擋,有效降低惡意流量。
本次實作都是從 Google reCAPTCHA Admin 取得公、私鑰~
我試著減輕 API 串接的複雜度,現在就往下看吧!
【注意】本篇文章需要搭配前端文章一起學習,不然你會看不懂喔...
本文目次
使用情境
你已經串接 reCAPTCHA 前端 API,想要使用 C# 實作後端 API。
實際操作
開啟你的 Visual Studio,先建立一個新的專案。
因為這次要寫 API,所以選擇「ASP.NET Core Web API」。
專案名稱我是取「recaptcha-demo」,不過它在這次 Demo 不是重點。
我印象中取名規則要英文開頭大寫,例如:RecaptchaDemo,就看你想怎麼取名。
因為我的電腦有裝「.NET 8」的架構,我就選這個了。
如果你是其他版本,你也可以直接選擇,不會影響本次 Demo。
預設專案會給你「WeatherForcast」的範例檔,下圖就是 Controller 和 Model。
但是它和 reCAPTCHA 都沒有關聯性,所以我先「刪除」這兩個檔案。
接下來調整 Properties 的 launchSettings 這個 JSON 檔案
裡面大多數用來設定專案啟動的參數,像是走 http 或 https。
等專案跑起來,網址就會變成 applicationUrl + launchUrl。
例如:localhost:5120/weatherforcast
在這邊我暫時把「launchUrl」變成「空字串」,這樣就變成 localhost:5120。
現在新增一個 Recaptcha 專用的 Controller,晚點用 Postman 打 API 看看。
選取 Controllers 右鍵「加入」>「新增項目」
選擇一個「空白 API Controller」,等一下叫 GitHub Copilot 生成範例 Code。
我取名「Recaptcha」Controller,這時候名稱要小心,因為它會影響呼叫 API 的網址。
最上方要加入 JSON 相關的命名空間 (namespace):using System.Text.Json
接下來我叫 GitHub Copilot 幫我生成發送 API 的程式碼
第 12-13 行:建立類別屬性,像是用來建立 API 的 HttpClient,還有 reCAPTCHA 私鑰。
第 15-18 行:Controller 的建構函式 (constructor),主要注入 HttpClient 的溝通。
【注意】API 私鑰不應該寫在 Code 裡面,應該要使用 Key Vault 保存。
第 20-28 行:建立 reCAPTCHA API 回傳 JSON 的 Key 屬性,詳細可以看官網文件。
第 30-46 行:
這邊準備呼叫 API,採用 C# 非同步的寫法,避免執行多支 API 導致阻塞 (block)。
最後回傳 ActionResult 物件,本身就是 HttpResponse,我們可以觀察 body 的內容~
打開 Program.cs,這個就是 ASP.NET 注入服務的檔案。
第 7 行:注入 HttpClient 的服務
最後我們透過 Postman 發送 API 看看回傳的內容!
這邊留意是 https 的網址,我們把前端的 Token 放到查詢字串。
你就會看 Response 的 body 是「驗證成功」了~
如果 Status 不是 200,可能要看一下 Code 有沒有寫錯囉。
今天就跟大家介紹到這邊,如果我有幫助到你,或者你有疑問,都可以在下方跟我聊~
我是 W 先生,我們下次見!
順便打個廣告:我預計在 2025 上半年舉辦我的碩士論文訪談,想參加的可以看這裡。
延伸閱讀
【筆記】Google reCAPTCHA v3:實作前端的機器人驗證
參考文章
驗證使用者回應 | reCAPTCHA | Google for Developers
ASP.NET Core 網站如何整合 Google 的 reCAPTCHA Enterprise 功能
🔥 馬上追蹤本站,千萬別錯過最新文章~