reCAPTCHA v3 のスコア解説: チャレンジなしでサイトが訪問者を判断する仕組み
reCAPTCHA v3 はチャレンジを表示しません。ページの裏側で動作し、訪問者を観察して、0.0 から 1.0 のスコアを返します。数値が高いほど、訪問者が人間である可能性が高いことを示します。スコアをどう扱うかは、サイトのバックエンドが決めます。サインアップフォームは、0.7 では通し、0.3 ではブロックするかもしれません。Scarnox の reCAPTCHA v3 サポートは近日公開予定です。このガイドでは、スコアの仕組みと、自動化された作業がボットとしてスコアされないための正当な方法を説明します。
スコアの生成方法
ページは reCAPTCHA のスクリプトを読み込み、login や signup のようなアクションを指定して呼び出します。スクリプトはブラウザ内で信号を集め、それを Google に送り、Google がトークンを返します。サイトのサーバーは、そのトークンをシークレットキーと一緒に Google の検証エンドポイントに送り、スコアとアクション名を受け取ります。
スコアは、いくつかの種類の信号から作られるリスク推定です。
- ブラウザ環境。標準的なデスクトップブラウザに見えるかどうかを含みます。
- ページ上の振る舞い。マウスの動き、スクロール、タイミングなどです。
- サイトに対する訪問者の履歴。以前に成功したセッションなどです。
- リクエストのパターン。一つのアドレスからどれくらいの頻度で、どれくらい速くリクエストが届くかを含みます。
重み付けは公開されておらず、変わります。公開されているのは契約の内容です。サイトがしきい値を選び、スコアが結果を決めます。
自動化のスコアが低くなる理由
自動化されたトラフィックは、予測しやすい理由でスコアが低くなりがちです。デフォルト設定のヘッドレスブラウザは、通常と異なる信号を出します。新しいセッションには履歴がありません。速く、一定のリクエストパターンは、人間がブラウズしている様子とは異なります。データセンターのアドレスは、家庭用の回線よりも疑わしく扱われます。それぞれが信号であり、いくつかが重なるとスコアがしきい値を下回ることがあります。
目に見えるチャレンジがないため、スコアが低いことは、静かな失敗として現れることが多いです。ページは読み込まれるのに、フォームは拒否され、理由は何も知らされません。サーバー側でエラーを確認できるようにログを設計してください。
スコアを健全に保つ正当な方法
これらのアプローチは、自分自身の作業と正当なデータ収集のためのものです。
- 本物のブラウザプロファイルを使う。 通常の設定と拡張機能を持つ通常のブラウザは、機能を削ぎ落としたヘッドレスビルドよりもボットとしてスコアされにくいです。ブラウザフィンガープリントのガイドで、ブラウザ環境がどのように読み取られるかを説明しています。
- セッションを温かく保つ。 リクエストをまたいでクッキーを維持し、すべてのページを空の状態から始めないでください。
- リクエストのペースを守る。 人間の訪問者は、1秒間に100ページも読み込みません。遅延を加え、妥当な範囲でランダムにしてください。
- 明らかな手がかりを避ける。 デフォルトの User-Agent、言語設定の欠落、一貫しない画面サイズは、修正しやすい簡単な信号です。
- 自分のしきい値でテストする。 サイトを運営しているなら、ステージングでスコアを確認し、どの信号がスコアを下げているかを調べてください。Google のテストキーは、実際のスコアリングなしで連携をテストするのに役立ちます。
これらの手順は、正当な作業における誤判定を減らします。乱用のために人間らしいスコアを偽造する手段ではありません。どのアプローチも、しきい値を決めるのはサイトの所有者である、という事実を変えるものではありません。
スコアにできないこと
スコアは、訪問者が人間であることを証明しません。また、訪問者のスコアが低い理由も教えてくれません。スコアが低い原因は、珍しいけれど正当なブラウザ、共有ネットワーク、VPN かもしれません。スコアは一つの入力として扱ってください。正当な作業のスコアがずっと低いままなら、正直な答えは、サイトの所有者に許可リストや API を依頼することであることが多いです。
Scarnox の現状
Scarnox は現在、reCAPTCHA v3 をライブで解決していません。現在ライブのタスク種別は、プロキシなしの PopularCaptcha だけです。reCAPTCHA v3 は近日公開予定です。スコアベースのソルバーは、見えるパズルを解くことと異なる問題であり、有効なトークンをサイトが受け入れる形で返す必要があります。そのため、連携の詳細はサポートが提供される時点で API リファレンスに記載します。
アカウントを作成すると、クレジットカード不要の無料トライアルクレジットを受け取れ、サポートが開始されたときにすぐ使えるようになります。
自分のログでスコアを読む
目に見えるチャレンジがないため、スコアベースの失敗を理解する唯一の方法はログに記録することです。自分のサイトでは、バックエンドが検証の呼び出しで受け取ったスコア、アクション名、成功フラグを、リクエストのタイムスタンプと送信元のパスとともに記録してください。一週間分のトラフィックがあれば、どのページやフローのスコアが低いかのパターンが通常分かります。常に低いフローは、ボットの問題ではなく、正当なユーザーにとっての実際の問題かもしれません。たとえば、ページ読み込み直後にすぐ進んでしまうサインアップの手順などです。
同じアクションのスコアを、異なるブラウザやネットワーク間で比べることも有効です。通常の訪問者が家庭用回線では高いスコアを得て、同じ訪問者が会社の VPN では低いスコアを得る場合、スコアはブラウザではなくネットワークに反応しているのであり、解決策は自動化の変更ではなく、アクセスについての話し合いです。
ログには個人データを含めないでください。スコアとアクション名があれば、ほとんどの問題は診断できます。必要以上のものを保存すると、避けたい個人情報の保護義務が生じます。
責任を持ったスクレイピング
スクレイピングのジョブの前に、robots.txt とサイトの利用規約を確認してください。リクエスト頻度を低く保ち、必要のない個人データは収集せず、スコアベースのチェックはサイトが自ら選んだ防御手段であることを覚えておいてください。大規模にそれを回避することは、そのジョブを見直すか、所有者と合意すべきサインです。より広い全体像はウェブスクレイピングは合法か?で扱っています。