コード変更のイメージ
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script><button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
.onSuccess(res => onToken(res.token))
.bindTo('#login-btn'));
</script>const res = await fetch('https://www.google.com/recaptcha/api/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
secret: process.env.RECAPTCHA_SECRET,
response: req.body['g-recaptcha-response'],
}),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })const res = await fetch('https://apiv1.captcha.la/v1/validate', {
method: 'POST',
headers: {
'X-App-Key': process.env.CAPTCHALA_APP_KEY,
'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
'Content-Type': 'application/json',
},
body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })移行手順
- 1
登録して App Key と Secret を取得する
無料の CaptchaLa アカウントを作成し、サイトを追加して App Key(公開用)と App Secret(サーバー側用)をコピーします。クレジットカード不要です。
- 2
フォーム内のウィジェットタグを差し替える
reCAPTCHA の div とスクリプト src を CaptchaLa 相当のものに置き換えます。タグの class は g-recaptcha から captchala へ、data-sitekey は data-app-key へ変わり、スクリプト URL は当社の CDN を指します。
- 3
フォーム送信のフィールド名を更新する
reCAPTCHA は g-recaptcha-response という隠しフィールドを挿入します。CaptchaLa は captchala-token を使います。フォームハンドラーがフィールドを名前で読んでいる場合は定数名を変更してください。そうでなければ隠し入力は自動的に流れます。
- 4
サーバー側の検証を更新する
検証リクエストの宛先を apiv1.captcha.la/v1/validate に変更し、認証情報をヘッダー(X-App-Key / X-App-Secret)に、pass_token を JSON ボディに入れます。レスポンスは reCAPTCHA と同じ valid フラグ(data.valid)を返すため、既存の分岐コードはそのまま使えます。
- 5
段階的にロールアウトする
多くのチームはまず1つのフォーム(多くはトラフィックの少ないニュースレター登録やお問い合わせ)に導入し、数時間かけてコンバージョンとチャレンジ率を観察してから拡大します。最低利用量も契約もないので、カナリアリリースは無料です。
よくある質問
すべてのフォームを一度に移行する必要がありますか?
いいえ。2つのシステムは同じサイト上で共存できます(状態や Cookie を共有しません)。フォームを1つずつ移行できます。
reCAPTCHA Enterprise のリスクスコアはどうなりますか?スコアは引き継げますか?
スコアは引き継げません(ベンダー内部のものです)が、CaptchaLa は検証レスポンスで独自のリスクスコアを返します。数値範囲と判定ロジックはドキュメント化されており、多くのチームは既存のしきい値(例: 0.5)を1時間以内に当社の値へマッピングします。
Google Site Verification など他の Google 連携が壊れませんか?
いいえ。reCAPTCHA は Search Console / Site Verification / Analytics とは別物です。reCAPTCHA タグを削除しても、他の Google サービスには一切影響しません。
reCAPTCHA タグが多数埋め込まれたサイト向けの移行スクリプトはありますか?
提供していません(置換はリポジトリごとに1つの正規表現で済み、テンプレートの作りはコードベースごとに異なるためです)。多くのチームが使う10行程度のシェルスニペットはドキュメントにあります。