Published on

大量発生していたスパム登録を防ぐことができたreCAPTCHAを紹介

Authors

サービスを運用していると、スパムによるユーザー登録に遭遇することがあります。 一度ならまだしも、頻繁にスパム登録をされてしまうと不要なデータが大量に発生してしまいます。

もし、スパム登録にお悩みであればGoogleが提供しているreCAPTCHAの導入をおすすめします。

以前、大量のスパム登録に困ったいたところreCAPTCHAを導入してから途絶えたので、かなり有効なのではないかと思っています。

reCAPTCHAとは

reCAPTCHAは、悪質なボットなどによるWebフォームからの送信を防ぐ機能です。

年々、ボットもreCAPTCHAの制限を突破するために進化してきているため、reCAPTCHAもバージョンが更新されています。 本記事投稿時点では、v3が出ています。

v1

v1は歪んだ文字列をユーザーに提示し、入力したものが正解しているかを判定するものです。 現在はボットの画像認識精度が向上し、突破されるようになったため非公開となっています。

v2

v2は「私はロボットではありません」というメッセージにチェックすると、問題付きの画像を表示させるものです。 よく見かける、自動車の写っている画像を複数ある画像の中から全て選ばせるようなやつです。 現在も使っているサイトが多いのではないでしょうか。

v2 invisible

v2から「私はロボットではありません」というチェックボックスを無くしたものです。 ボットの可能性がある場合は、v2同様に画像付きの問題が表示されます。ボットでないと判定された場合は、そのままフォームを送信できます。

v3

v3はユーザーに対して何らかのアクションを求めずにボットかどうかの判定を行います。 仕組みとしてはWebページ上の行動を読み取り、ボットか否かを機械学習で判定します。

reCAPTCHA導入

導入にあたり、Google reCAPTCHAの初期設定をする必要があります。 こちらの記事で分かりやすく紹介されているため、ご参考にしてください。

https://rishuntrading.co.jp/blog/security/google_recaptcha_v3/

使用するreCAPTCHAのバージョンについては、できるだけ最新のものをおすすめします。

プラグイン

様々なフレームワークやCMSでreCAPTCHA導入のためのサードパーティが提供されています。個人的に使用して正解だったものや、使えそうなものを一部紹介します。

Django編

https://github.com/django-recaptcha/django-recaptcha

こちらは実際に使用したもので、導入が容易にできました。

Rails編

スター数も多く、紹介しているサイトも多くありました。 更新頻度も高かったです。

https://github.com/ambethia/recaptcha

WordPress

WordPressでフォームを作る時の定番プラグイン、Contact FormにはreCAPTCHAの設定機能が備わっています。

https://ja.wordpress.org/plugins/contact-form-7/

参考

https://cheq.ai/ja/blog/fighting-spam-sign-ups/

https://qiita.com/Kazuki7222/items/6e759886a0ff9831e424

https://pikawaka.com/rails/recaptcha