【筆記】Google reCAPTCHA v3:以 .NET

 前言 

上次介紹 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」

【筆記】Google reCAPTCHA v3:以 .NET

專案名稱我是取「recaptcha-demo」,不過它在這次 Demo 不是重點。

我印象中取名規則要英文開頭大寫,例如:RecaptchaDemo,就看你想怎麼取名。

【筆記】Google reCAPTCHA v3:以 .NET

因為我的電腦有裝「.NET 8」的架構,我就選這個了。

如果你是其他版本,你也可以直接選擇,不會影響本次 Demo。

【筆記】Google reCAPTCHA v3:以 .NET

預設專案會給你「WeatherForcast」的範例檔,下圖就是 ControllerModel

但是它和 reCAPTCHA 都沒有關聯性,所以我先「刪除」這兩個檔案。

【筆記】Google reCAPTCHA v3:以 .NET

接下來調整 Properties 的 launchSettings 這個 JSON 檔案

裡面大多數用來設定專案啟動的參數,像是走 http 或 https。

等專案跑起來,網址就會變成 applicationUrl + launchUrl

例如:localhost:5120/weatherforcast

在這邊我暫時把「launchUrl」變成「空字串」,這樣就變成 localhost:5120

【筆記】Google reCAPTCHA v3:以 .NET

現在新增一個 Recaptcha 專用的 Controller,晚點用 Postman 打 API 看看。

選取 Controllers 右鍵「加入」>「新增項目」

【筆記】Google reCAPTCHA v3:以 .NET

選擇一個「空白 API Controller」,等一下叫 GitHub Copilot 生成範例 Code。

我取名「Recaptcha」Controller,這時候名稱要小心,因為它會影響呼叫 API 的網址

【筆記】Google reCAPTCHA v3:以 .NET

最上方要加入 JSON 相關的命名空間 (namespace):using System.Text.Json

【筆記】Google reCAPTCHA v3:以 .NET

接下來我叫 GitHub Copilot 幫我生成發送 API 的程式碼

第 12-13 行:建立類別屬性,像是用來建立 API 的 HttpClient,還有 reCAPTCHA 私鑰

第 15-18 行:Controller 的建構函式 (constructor),主要注入 HttpClient 的溝通。

【注意】API 私鑰不應該寫在 Code 裡面,應該要使用 Key Vault 保存。

 【筆記】Google reCAPTCHA v3:以 .NET

第 20-28 行:建立 reCAPTCHA API 回傳 JSON 的 Key 屬性,詳細可以看官網文件

【筆記】Google reCAPTCHA v3:以 .NET

第 30-46 行:

這邊準備呼叫 API,採用 C# 非同步的寫法,避免執行多支 API 導致阻塞 (block)

最後回傳 ActionResult 物件,本身就是 HttpResponse,我們可以觀察 body 的內容~

【筆記】Google reCAPTCHA v3:以 .NET

打開 Program.cs,這個就是 ASP.NET 注入服務的檔案。

第 7 行:注入 HttpClient 的服務

【筆記】Google reCAPTCHA v3:以 .NET

最後我們透過 Postman 發送 API 看看回傳的內容!

這邊留意是 https 的網址,我們把前端的 Token 放到查詢字串。

你就會看 Response 的 body「驗證成功」了~

如果 Status 不是 200,可能要看一下 Code 有沒有寫錯囉。

【筆記】Google reCAPTCHA v3:以 .NET

 

今天就跟大家介紹到這邊,如果我有幫助到你,或者你有疑問,都可以在下方跟我聊~

我是 W 先生,我們下次見!

順便打個廣告:我預計在 2025 上半年舉辦我的碩士論文訪談,想參加的可以看這裡

 

 延伸閱讀 

【筆記】Google reCAPTCHA v3:實作前端的機器人驗證

所有文章 / 網頁開發 / 後端

 

 參考文章 

驗證使用者回應 | reCAPTCHA | Google for Developers

ASP.NET Core 網站如何整合 Google 的 reCAPTCHA Enterprise 功能

 

🔥 馬上追蹤本站,千萬別錯過最新文章

🔔 關於本站 / 快速導覽

🔔 Facebook

🔔 Instagram

Mr.W 電腦村莊_FB封面照.png

arrow
arrow
    創作者介紹
    創作者 Mr. W 的頭像
    Mr. W

    Mr. W 電腦村莊

    Mr. W 發表在 痞客邦 留言(0) 人氣()