洧杰 已發佈 2019-10-24

Google reCaptcha v3 - 用 AI 辨識你是不是機器人

大家逛網站的時候,多少都會遇到下面這張圖吧?

images

這其實是 Google 所推出的服務,名字叫做 Google reCaptcha,好處就是會由它來幫你驗證對方是不是機器人,避免有人惡意攻擊你的網站。

不過多少會影響使用者體驗,畢竟你流程跑到一半,還要跑驗證實在很麻煩,Google 可能也獲得了許多回饋,也在今年推出了 v3 版本。

Google reCaptcha v3

這裡先附上他的官方文件。你可以搭配文件再觀看我下面的介紹會更清楚。

這次 v3 不會要客戶在你在網頁上做任何操作,只有網頁上會多一個標誌,讓客戶知道他是用 reCaptcha 服務。

如果用一句話講解他的服務,就是「Google 會去幫你偵測他是不是機器人,你得將資訊傳到後端,再讓後端用 POST API 去問 reCaptcha ,他會吐給你一個評分從 0 到 1,如果 0.8~0.9 表示他是真人,你可以寫規則讓他繼續瀏覽,但假使低於 0.5 ,你就可以判定他是機器人。」

申請流程

擁有 Google 帳號後,前往此網址就可申請。申請一個新的驗證時,裡面會問一些問題,像是下面截圖。v2 版本就是傳送九宮格,問你哪些格子有路燈路牌之類的,而 v3 則是分數評分。如果你是要先在本機測試,請記得填寫 localhost 或 127.0.0.1。

images

新增完後你會獲得兩組金鑰,上面那組是放在網頁端,下面那組是伺服器端,而 Google 也很佛心地提供了範例程式碼來進一步了解。

images

實際運作流程

我整個跑完流程後,歸納了以下圖片,這裡我將會以網站登入流程來說明。

images

  1. 網頁上會載 reCaptcha 的 JS,一開始網頁會向 reCaptcha 請求索取一個 token
  2. reCaptcha 會透過 JS 回傳給你一個新 token,每次重整網頁都會獲得新 token
  3. 當登入時,除了送過去帳號與密碼外,也必須將 token 傳送給後端
  4. 後端拿到這位使用者 token 後,用他提供的 POST API 問這個人是不是機器人
  5. reCaptcha 將會 respone 你一個 JSON ,裡面會有個 score 資訊。
  6. 如果 0.8~0.9 表示他是真人,你可以寫規則讓他繼續瀏覽,但假使低於 0.5 ,你就可以判定他是機器人。

最後也釋出我的 Node.js 範例,在 view 與 router 換上自己的前後端金鑰就可以哩 :D

總結

我在玩的時候,其實測試了很多的異常瀏覽方式,例如說用 Postman 傳遞,或是打開網頁直接觸發 submit 傳送、或者是換 VPN 是國外流量。但測試出來的評分都是在 0.8~0.9。

所以如果你有辦法自己測試,能讓自己評分信用在 0.1~0.5 ,那麼還請順便分享給我知道 XD

如果想了解更多,也可以參考 Google 所推出的這部分影片。

參考文獻

關於筆者

暱稱:洧杰

介紹:六角學院校長,熱愛分享與交流的前端工程師,目前專注於兼容桌面/移動網頁前端開發,期間已協助數百位平面設計師,網頁設計師導入標準網頁設計。

文章列表 文章列表