CAPTCHAは、オンラインユーザーが人間であり、botではないかどうかを判断する、スパム対策のためのプログラムです。
CAPTCHAは「Completely Automated Public Turing test to tell Computers and Humans Apart(完全に自動化された、コンピューターと人間を区別する公開 チューリングテスト )」を意味します。
登録したサイトへのログインや、ネットショッピングの際に、以下のような画像をみたことがある、また解いたことがある方は多いことでしょう。
これらをユーザーがCAPTCHAを解くことで人間であることが証明されて、次のステップに進むことができます。
中でも、Googleによって無料で提供されているCAPTCHAは 「reCAPTCHA 」と呼ばれます。
reCAPTCHAは、一般的なCAPTCHAテストよりも高度に作られてています。
近年のAI技術の進歩により、機械の画像認識・識別能力は飛躍的に発達しており、reCAPTCHAで使用する問題の難易度を上げることで、スパムbotの突破を防いでいるのです。
reCAPTCHAをサイトに導入しようとしたとき、「reCAPTCHAv2」と「reCAPTCHAv3」のどちらを導入するかの選択を迫られます。
それでは、reCAPTCHAv2とreCAPTCHAv3の違いは何なのでしょうか?
reCAPTCHA v2
reCAPTCHA v2は、ユーザー側にアクションを行ってもらうことで自分はbotではないと証明してもらう認証方式です。
「私はロボットではありません」というチェックボックスをクリックした時点で、botの可能性がある場合は画像認証などをを表示して、人間かbotかを検証します。
reCAPTCHA v2のメリットは、ユーザーにアクションを行ってもらうことにより、かなり高い精度で判定ができることです。
欠点としては、ユーザビリティの低下です。
実際に認証問題を解く煩わしさがを感じたことがある方は多いことでしょう。
画像のタップミスや問題のわかり難さから認証失敗が多発し、サイト離脱するケースもあります。
また、Wi-Fi接続時のブラウジングを保護するためにVPNを使用している場合、「私はロボットではありません」というメッセージが無限に表示されるというデメリットもあります。
これはVPNの仕組みにより、他のユーザーと共有の静的IPアドレスが割り当てられるため、多くの異なるユーザーが同じIPアドレスを使用して同じウェブサイトにアクセスしていることになります。このような場合、reCAPTCHAは1つのIPアドレスからのアクセスが増加したことを検出し、Webサイトやサービスの不正利用を防止するために、認証画面を常に表示させるのです。
ちなみにこの問題については、ユーザー側が負荷の少ないサーバーや、固定IPアドレスでIP制限付きのネットワークに接続することで解決ができます。
また、Torやプロキシからのアクセスの場合でも、bot扱いとされることが多いです。
reCAPTCHA v2を導入しようとした際、さらに次の3種類の選択があります。
一般的名称 | 選択の表示 | 動作 |
---|---|---|
reCAPTCHA v2 | 「私はロボットではありません」チェックボックス (CheckBox reCAPTCHA) | チェックボックスをクリックさせてリクエストを検証し、botの可能性がある場合と判断されたら画像認証が表示される。 |
reCAPTCHA v2 invisible | 非表示 reCAPTCHA バッジ(Invisible reCAPTCHA) | チェックボックスをクリックさせてリクエストを検証し、botの可能性がある場合と判断されたら画像認証が表示される。 |
reCAPTCHA Android | Androidアプリ専用 |
【「私はロボットではありません」チェックボックス】を、一般的にreCAPTCHA v2とよばれています。
こちらは必ずユーザーがチェックボックスにチェックを入れてもらう必要があります。そしてbotによるアクセスの可能性がある場合、画像認証が表示されます。
【非表示 reCAPTCHA バッジ】は「reCAPTCHA v2 invisible」と呼ばれています。invisibleの和訳は「見えない」です。
こちらはreCAPTCHA v2から「私はロボットではありません」というチェックボックスを無くしたものです。reCAPTCHA v2 invisibleは、invisibleという名前の通り、ユーザーに「reCAPTCHAがある」と意識させない作りになっています。
reCAPTCHA v2 invisibleは、ユーザーが確認ボタンや送信ボタンをクリックした際、botによるアクセスの可能性がある場合、v2同様画像認証が表示され認証を行います。
サイトに導入する場合、reCAPTCHA v2チェックボックスを表示させるよりは、reCAPTCHA v2 invisibleの非表示を選択し直接画像選択させた方がシンプルであるといえます。
なお、PythonのSeleniumを使ってreCAPTCHA V2の画像認証を突破するコードは既にあり、出回っております。
これでアタックしてくるスパムがどれほどいるのかは分かりませんが、過信のし過ぎはしないようにご留意ください。
reCAPTCHA v2導入方法は、こちらの記事をご参照ください。
reCAPTCHA v3
v3の仕組み
reCAPCHA v3はユーザー側からアクションを起こしてもらうことはなく、ユーザーがサイトにアクセスした時点でユーザーの環境や行動パターンによりスコアが自動的に設定され、そのスコアによって許可するかどうか判定します。
例えば、記事の閲覧時間やクリックした場所・マウスポインターの動きIPアドレス・ブラウザ情報などを総合的にみて、それをスコア化し、人間かbotかをバックグラウンドで判断しています。
判定するスコアについては、0.0~1.0の数値で設定します。スコアが0に近いほど、botの可能性が高くいと判定されているということになります。
WordPressでの初期値は0.5となっており、0.5未満スコアのコメントや問い合わせの送信は弾くようになります。
(Googleによると0.5がbotと人の閾値とのこと。)
v3はユーザビリティ向上になり得る
見た感目はreCAPTCHA v2 invisibleと変わりませんが、reCAPTCHA v3は最新版のreCAPTCHAです。
reCAPTCHA v3は、ユーザーが人間かどうかを判断するために、ユーザーに何らかのアクションを求めることはありません。つまり、v2のような認証画像が表示され、ユーザーがアクションを起こす必要ないのです。
そのためv2に比べてユーザービリティを損なうことなく、botを検知できるのです。
チェックを入れるなどのアクションや認証されていることを自覚することなく進めるので、ユーザーからすればストレスを感じません。
v3の欠点1.人間と遮断し、botを通す可能性がある
v3の最大の欠点として、スコアが低い場合は人間が操作していた場合でもbotと判定され、そこから先に進めずに強制的に離脱させられる可能性があります。
逆に、スコアが高ければbotも通してしまいます。
reCAPTCHA v3の判定はブラックボックスであり、サイト運営者でも対応はできません。
このようにreCAPTCHA v3は100%の判断基準ではないため、サイト運営者はこの点を考慮する必要があります。
v3の欠点2.サイトの表示速度が遅くなる
Googleが提供しているサイトスピードを調べるサービスにて「PageSpeed Insights」でサイト測定をすると、reCAPTCHA v3設置後は評価が低くなるなります。
この原因は、「reCAPTCHA」のスクリプトが全ページで読み込まれてしまうことに起因しています。
これを回避するために、サイト全体には導入しないで、問い合わせフォームなどの一部フォームにのみv3を入れるという方法を紹介している方もおられますが、それではreCAPTCHA v3の性能を十分に発揮できない可能性があります。
Googleは、v3 は、ユーザのインタラクションを邪魔しないため、できるだけ複数のページに導入することが推奨されています。
またContact Form 7は、お問い合わせフォーム作成プラグイン Contact Form 7 では、v3 を全ページに導入する 前提でスパム対策を行っているようです。v3 を全ページに連動させることで、精度が出せるという判断であると考えられます。
サイトの表示速度の対応方法として、Contact Form 7でreCAPTCHAの設定はしないで、プラグイン「Invisible reCaptcha」にてreCAPTCHAを導入すると、ある程度速度遅延対策となります。
Invisible reCaptchaを使ってのreCAPTCHAv3導入方法は、こちらの記事をご参照ください。
PageSpeed Insightsのスコアを気にしすぎるのも考え物ですが、やはり表示速度はある程度は改善しておきたいものです。
reCAPTCHA v3設置後の表示速度改善方法については、別記事にまとめます。
v3の分析対象
reCAPTCHA v3はログイン画面など一部フォームに限らず、基本的にサイトのすべてのウェブページに導入されるという特徴があります。
reCAPTCHA v3はCookieを使用していますのでこれにより、サイト内でのユーザーの行動を観察することで、ボットを見分けるリスク評価の精度を高めるという合理的な理由があります。
しかし、これは見方を変えればreCAPTCHAをv3を導入しているサイトにアクセスすると、ユーザーの閲覧がGoogle側に筒抜けになるということでもあります。
さらに、ウェブページに埋め込まれたreCAPTCHAはソーシャルメディア機能に対応しているため、reCAPTCHAの影響は特定のサイトを超えてSNSにまで及ぶ可能性もあります。この点についてはGoogleも注意を払っており、Googleは「reCAPTCHAで取得されたデータは、広告のターゲティングやユーザーの興味や関心の分析には使用しない」と発表しています。
v3のスコアが下がる原因
人間が操作していても、reCAPTCHA V3のスコアが高確率で下がってしまう環境がいくつか報告されています。
VPNやプロキシを使用した場合
VPNやプロキシを使用した場合に極端にスコアが下がってしまいます。
bot攻撃などはよくプロキシを経由して行われるため、質の低い無料プロキシを利用していますとスコアが下がってしまう原因となります。
管理人の場合、VPN環境化でメルカリでコメントを残そうとしたときに、コメントが投稿できなかったことがあります。
これはbot判定されて弾かれたよい経験です。VPNやプロキシを無効化することで、解消することができます。
何度も繰り返し実行した場合
繰り返しreCAPTCHAを実行した場合もスコアが下がります。reCAPTCHA V3はフォーム送信ボタンをクリックしたときなど、任意のタイミングでbotかどうかの判別を実行します。
この実行を極端にやりすぎるとスコアが下がってしまうのです。
これは、botで不正ログインを試みるスパム対策としては大変有効といえます。
しかしながら、例えば、スコアが0.3の人がサイトにログインしようとするが、bot判定されてv3に弾かれてしまうとします。しかしユーザーからすればログインできない理由が分からず、ログインできないと何度もログイン操作を行ってしまうと、スコアが「0.1」とかまで下がって、ますます状況が悪化してしまうことも考えられます。
このような場合には、v3からv2へ実装変更するなどの対応が必要となります。
仮想環境 (BrowserStack など)を使用した場合
仮想環境とは、パソコンやストレージなどのハードウェア内で仮想的に構築された環境のことです。
WEBサイト制作には欠かせないものではありますが、こちらでアクセスすると低スコアになるデータがでています。
Selenium、Puppeteer など
オープンソースのブラウザ自動化ソリューションは完全にbot扱いされます。
これは当然の結果ですね。
reCAPTCHA v2とreCAPTCHA v3の違いまとめ
reCAPTCHA v2 | reCAPTCHA v3 |
---|---|
怪しいリクエストが来たら、画像認証のクイズを出して、botをシャットアウトしようとする。 | サイト閲覧者をスコア化して、閾値以下は通さない。 |
v2の認証はOKかNGかの2選。 | 2v3の認証は0~1.0のスコアで示される。 |
ユーザーにとって画像認証のクイズの煩わしさがある。 | ユーザーは何もしなくてよい。 |
アクションが起きる特定のページにだけ導入すればよい。 | (インタラクションを邪魔しないので)できるだけ複数のページに導入することが推奨されている。 |
ー | ページの表示速度が遅くなる(PageSpeed Insightsスコア低下) |
Python・SeleniumでreCAPTCHA V2を突破できるコードは既にある。 | ー |
ちなみに、reCAPTCHA v1もあった
reCAPTCHA v1というサービスも過去にはありました。2018年 3月に提供が終了している為、現在は利用できません。
以下の画像のように歪んだ英数字をユーザーに提示し、入力させるタイプのシステムです。
reCAPTCHA v1が廃止された理由として、画像認識精度もあがってきた為に、botが歪んだ文字も認識できるようになり、reCAPTCHA v1は破られるようになったためです。
そのうち、v2の画像認識も破られる可能性もありますが、現段階でv2の廃止の予定はないようです。
reCAPTCHAv2とreCAPTCHAv3、どちらを選ぶ?
結論からいいますと、reCAPTCHAv3をおすすめします。
管理人自身、画像認証の面倒くささを体感しておりますので、v2ではなくv3を選択しました。
reCAPTCHAv3の導入方法は、こちらの記事をご参照ください。
Google公式では「どちらを選ぶかはお好みで」とアナウンスがされておりますので、ご自身の環境に合ったご選択をされてください。
reCAPTCHA測定効果の見方
reCAPTCHA管理画面から、reCAPTCHAで測定したリクエスト数やスコア分布が確認できます。
以下のようにリクエスト数とスコアの分布が表示されます。
最大で過去90日間まで遡って、トラフィックの確認が可能です。
リクエスト数
サイトからreCAPTHCAに送付されたリクエスト数。(ページへのアクセス数とは違います。)
スコア分布
スコアの範囲は 0.0 ~ 1.0 で、0.0 は不正トラフィックを示し、1.0 は良好なトラフィックを示します。
トップ10アクション
リクエストごとにアクション名を指定していると、アクションごとのトップ10を表示してくれます。1つしか設定していない場合は、常に1軸のみです。
不審なトラフィックトップ10
こちらもリクエストごとにアクション名を指定していると表示されます。こちらはアクションごとの「不審なトラフィック」のトップ10を表示してくれます。
有料版「reCAPTCHA Enterprise」もある
Google reCAPTCHAは基本無料ですが、「reCAPTCHA Enterprise」という有料版も提供されています・
以下のような条件のを使用するには、reCAPTCHA Enterpriseの申し込みが必要です。
- 1か月で100万以上のページで使う場合
- 1秒間に1000リクエスト以上使う場合
- サポート体制が欲しい
- Webだけでなくアプリで使用したい
- 追加でセキュリティ機能も欲しい
かなりのアクセス数をたたいている稼いでいるあろうサイト用という感じですね。
ほとんどの人は無料版で全く問題ありません。
まとめ
reCAPTCHAはbotスパムをフィルタリングするのに、とても有効的な方法と言えます。
ぜひサイトに導入して、ご自身のサイトを守ってください。
スパム対策まとめ
- プラグイン「Akismet」を入れる
- Google「reCAPTCHA」を導入する( 効果大 )
reCAPTCHA v3の導入
reCAPTCHA v2の導入 - Contact Form 7にチェックボックスを入れる
- Contact Form 7にクイズを入れる
- Contact Form 7の本文にひらがなが含まれていないと、メッセージ送信できない
- 禁止ワードを登録する
このサイトはアフィンガーを使用しています
WING(AFFINGER6 ver)
デザイン簡単、SEO対策と広告収入UPの機能が標準装備。さらに美しく、パワフルに。「稼ぐ」に特化したテーマ。
2022年最新!おすすめレンタルサーバー
月額料金がライトプランで220円〜(税込)なので、コスパよく爆速なサイト運営が可能に!
管理画面は使いやすくなっているので、これからはじめてサイト運営をする方にもおすすめです!
\ Twitterでも口コミ良好! /