reCAPTCHA 的用法
WriterShelf™ is a unique multiple pen name blogging and forum platform. Protect relationships and your privacy. Take your writing in new directions. ** Join WriterShelf**
WriterShelf™ is an open writing platform. The views, information and opinions in this article are those of the author.
Article info
This article is part of:
Categories:
Tags:
Date:
Published: 2019/08/16 - Updated: 2019/08/18
Total: 1883 words
Like
or Dislike
About the Author
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
More to explore
網站上線一段時間後,當你的使用者越來越多時,這時就會有無聊的「駭客」開始對你的網站做奇怪的攻擊,我不喜憨叫他們「駭客」,因為這個名稱已經被「美化」了,好像是個驕傲,其實,他們就是爛咖,就是令人討厭的夭壽鬼,所以我就叫他們是夭壽鬼,夭壽鬼有好幾種,有一種就是會來亂註冊或是亂填表的夭壽鬼,他們很討厭,這篇文章就是來談如何防止:
自動注冊機器人(Spambots)/ 訂閱炸彈(Subscription bombing) / 假註冊(Fake Signups)
看來受害者還不少,網路上有很多的討論,大家基本上用的不外乎就是以下的幾個方法來擋:
Captcha 有很多種,最多人用的應該就是 Google 的 ReCAPTCHA 了,又免費,所以,這篇文章就直接來看看 Google 的 ReCAPTCHA 要怎麼用。
ReCAPTCHA 有三種
ReCAPTCHA(官網) 是 Google 的免費服務,基本上就是用各種方法來辨別來訪的是不是機器人,ReCAPTCHA 可以分成三種類型:
我不曉得各位偉大的讀者覺得如何,當我讀完 Google 的三個選項介紹時,完全沒有方向,而且啊,越看越迷糊,當然,一定是我太笨了,真的看沒有懂,花了好多時間,再加上實作,終於,慢慢的看懂了,以下就是我這笨蛋的心得紀錄,如果您光看 Google 文件就很清楚了,那就「免」看下去了啦,對我,我太健忘,這篇會很棒的幫我留住記憶。
ReCAPTCHA 的 v2 與 v3 最大不同
v2 跟 v3 最大的不同就是:v2 是使用 google 內建的「挑戰(challenge)」的,v3 沒有「挑戰」,等等,什麼是「挑戰」?就是以下這些圖啦,基本上就是用一些寫的怪怪的英文,或是圖像內容,來辨識來訪者是不是「人類」:
所以,重點來了,如果你或是業主,不能接受用 google 內建的「挑戰(challenge)」來辨識使用者的話,那就只能用 v3 了,確實,很多網站使用者對無窮無盡的辨識各國路標很反感,特別是使用 vpn 連線的使用者,那真的會搞很久,火冒三丈,結果就是,使用者走了、流失。
那 v2 跟 v3 使用情境大概是各在那裡呢?以下是我的建議,個人意見啦。
何時用 ReCAPTCHA v2 有核取方塊 checkbox ?
這應該是最常看到的,或者是說,最常能被看到的,使用這種方式的網頁,都可以看到網頁裡有以下這個大按鈕:
使用情境:
所以,這對使用者來說,要按兩次,可能是個負擔。
使用在那裡:如果你的使用者可以接受這樣兩階段操作,業主也對使用 google 內建的「挑戰」來辨識沒意見,那就用這版,最簡單。
要用 ReCAPTCHA v2 invisible 還是 ReCAPTCHA v3?
這兩種外觀都很像,都不用先按 v2 checkbox 那個大按鈕,唯一在網頁上會出現的就是下圖的 ReCAPTCHA Logo,還躲在右下角角:
使用情境:
所以,這對使用者來說,最好的清況,完全無感,很棒。
使用在那裡:如果你的使用者,或業主,一定要使用者正常使用時,完全感覺不到 CAPTCHA,那就是這兩種二選一了,能接受 google 內建的「挑戰」,就用 v2 invisible,不能,就只能用 v3 了。
Rails 使用 ReCAPTCHA
在 Rails 上使用 ReCAPTCHA 很簡單,有一個很棒的 recaptcha gem,套上就好了,如下:
ambethia/recaptcha — ReCaptcha helpers for ruby apps. Contribute to ambethia/recaptcha development by creating an account on GitHub.
GitHub
怎麼用?網路上已經有很多篇很棒的文章,我就不再多寫了,以下是幾篇我覺得寫得超棒的:
其實,這個 gem 的說明寫得很棒,我覺得一定要細看,特別是 v2 invisiblb 因為用到 javascript。
其他記事:
v3 + v2?
我看到很多人介紹 v3 用法時,都是當 v3 回應可能是機器人時,又跳回到用 v2 checkbox 來驗證,這很奇怪,如果要這樣用,那為什麼不直接用 v2 invisible 就好?我覺得可能是 recaptcha gem 的介紹就是如此寫,大家就繼續這樣介紹了,這樣用當然也可以,但是我覺得這就不是 v3 的原意了,v3 就是把驗證機器人的事交給網站了,用 v3 的理由應該讓 v3 做機器海關,如果沒問題就放過,如果 v3 認為有問題,後台就接手,看是要用 sms 或是 email 再做第二階段認證,還是調低使用者優先,或是,乾脆擋住它,這點文件上其實有不錯的建議。
localhost 要加上
網站開發時,要記得在 ReCAPTCHA admin 上的網域上加上 localhost,不然開發時會連不上 ReCAPTCHA,這以前不用,google 後來才移除 localhost 的。
v3 是給誰用,score 要設多少?
Power User! 基本上就是給要自己管控討厭鬼的人,v3 的 score 是個謎,所以,你不能靠 v3 來確定來者是不是機器人,v3 只能大概確認,所以,v3 是個差不多先生,不可靠,你要一路依你的網站流量來微調 score,但是,這個差不多先生有很大的用處,最重要的精神就是:你自己決定開不開門,這在 v2 是做不到的。
ReCAPTCHA 的 key 要設在那裡?
實務上,一個網站可能會混用好幾個 ReCAPTCHA 版本,這時,我建議是放在 secrets.yml 裡,呼叫時,就這樣讀取,很簡單: