google,

Google reCAPTCHA v3 的用法

2019-05-02 · 1 min read
Google reCAPTCHA v3 的用法

一般設計使用者登入的驗證碼,不外乎是填寫英文數字與後端的 SESSION 是否符合,如果是符合就可以登入,而驗證碼上面可以加上一些干擾圖案之類的,爲的就是防止機器人登入。

reCAPTCHA v3 的版本與過往 reCAPTCHA v2 最大的不同點,在於網站使用者不再需要透過圖型驗證碼或打勾確認你是否真人,而是在網站後段自動紀錄使用者在網站中瀏覽的行為過程,假設有類似在連絡表單中不斷提交重複文字之類的行為時,將會將其判定為機器人。

所以 reCAPTCHA v3 是判斷你的分數,它是有 0.1 ~ 1.0 之間分數,不過建議是方式大於 0.5 以上才算是一般人,這個方式是由 Google 的方式,不能由開發者可以干擾,所以它有一定的資料量讓你可以判斷才行。

之前介紹過 Google reCAPTCHA「我不是機器人」爲網站添加安全驗證機制,這次來介紹 v3 的使用方法

reCAPTCHA v3 的使用方法

看過之前的 reCAPTCHA v2 所以就不再介紹它的申請

這次是 v3 爲主,跟之前一樣,有個網站金鑰以及密鑰

reCAPTCHA v3

先給登入網站載入 api.js

<script src="https://www.google.com/recaptcha/api.js?render=[你的網站金鑰]"></script>

然後看登入頁面,應該有 reCAPTACHA 的圖案在右下角出現

reCAPTCHA v3

然後送出去給網站驗證,驗證的部分改一下

$captcha = $_POST['recaptcha_response'];
$secretKey = '複製前面的密鑰';

$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response, true);

if ($responseKeys['score'] >= 0.5) {
   // success
} else {
   // failure
}

主要是 score 的分數,只要是 >= 5.0 以上,就算真人了

這樣是不是更簡單了

如何知道 Google reCAPTCHA v3 在正常運作?

直接看後端就可以知道它有沒有實際的運作,以底下的圖來看就可以看出左邊是實際有多少人使用它,以及圖案顯示 7 天的使用狀況

在它的右邊是平均達到多少分數,以及它的人次,表示所有人都是 0.9 的分數,所以全部屬於真人在登入

因爲裏面沒有可疑的流量,所以沒有可以看出來這部分的流量

google_recaptcha_v3

只是它依然是要有點防護,譬如 SESSION[‘google_code’] 記住某個值,只要與前端不符合的就直接讓它退出 這樣至少先讓自己的 server 過濾,而不是只有單純靠它的 server 爲主

驗證碼是要使用 v2 還是 v3 ?

reCAPTCHA v3 是一項全新的技術,不排除 v3 的方法,但是絕大部分的人而言 reCAPTCHA v2 還是網站保護的首選,它還是看得到保護的機制是看得到的,對網站運作而言也比較穩定,如果有任何關於 reCAPTCHA 網站驗證方面的問題,也歡迎在下方留言討論吧!

如果您喜歡這篇文章,請幫我按 5 下拍手,這可以讓我收到來自 LikeCoin 基金會的獎勵,謝謝您囉!

Patrick Her
編寫者 Patrick Her Follow
我是 PHP 工程師,主要是 Laravel 結合 Voyager 做成 CMS 服務大衆


我的蝦皮



Laravel 搭配 Voyager 建置 CMS 網站



打造 LINE 聊天機器人



Facebook Messenger AI 聊天機器人