2024年4月1日からreCAPTCHAの無料制限が100万回から1万回に制限が変更されるというニュースがありました。
小さいサイトだと、1万回は問題なさそうですが、ある程度の規模のサイトだと用途によっては簡単に超えてしまいそうです。
v2を継続する場合、1万回を超えると課金ではなく使えなくなるため、今回は既にreCAPTCHA v2を導入しているRailsアプリケーションをreCAPTCHA Enterpriseに切り替える手順を説明します。
今回利用した元々の動作環境
- ruby3.1.4
- rails 7.0.8.1
- reCAPTCHA関連の実装は ambethia/recaptcha の5.12.3 を利用
Site keyを作成する
Google Cloudでプロジェクトを作成後、reCAPTCHA Enterprise API をまず有効にします。
有効にした後、reCAPTCHA Enterpriseのページでキーを作成というリンクがあるのでそこを押しします。
作成画面に入った後、利用するドメインなど適切に埋めていけばよいですが、チェックボックスによる本人確認を使用する
をv2から移行する場合オンにしましょう。
これによってv2で行われていた画像認証が行われるようになります。
こちらは作成時しか設定できないため、設定を忘れた場合は削除して作り直しましょう。
こちらで作成したキー IDをSite keyとして後ほど利用します。
API Keyを作成する
続いて、認証情報のページで認証情報を作成
→APIキーをクリックします。
APIキーを作成されたら編集画面に飛び、クライアントでAPIをたたくわけではないため、Webサイトの指定はせず、reCAPTCHA Enterprise APIのみに使えるように制限を与えます。
これでGoogle Cloudの設定はOKです。
Railsアプリケーションの対応
先ほど作成したSite keyとAPI keyを使ってRails側の設定をします。
reCAPTCHAの設定をしているファイルを開き、以下のように書き換えます。
# 普通直書きしてないと思うので、そこは各アプリケーションの環境変数のお作法に従ってください
Recaptcha.configure do |config|
- config.site_key = # 過去設定していたSite key
+ config.site_key = # 先ほど作成したSite key
- config.secret_key = # 過去設定していたSecret key
+ config.enterprise = true
+ config.enterprise_api_key = # 先ほど作成したAPI Key
+ config.enterprise_project_id = # Site Keyなどを作成したプロジェクトのID
end
ここまで設定すれば、他の面倒な部分はgrecaptcha gemがよしなにやってくれるため必要な対応は完了となります。
フロントエンドをReactなどで記述している場合は別途そちらの対応も必要ですが、公式のドキュメントを参考にすれば問題なく行えると思います。
まとめ
ambethia/recaptchaがかなりよしなにやってくれるので、対応は最小限に済みました。
別サービスへの移行も良いですが、直前や4月以降に知ってこの記事を読んでいる方は、ひとまず少ない工数で行えるreCAPTCHA Enterpriseへの移管をするのが良さそうです。