reCAPTCHAをPythonに導入してみる(v2)

こんにちは!増田拓海です。

今回はreCAPTCHAをバックエンドがPythonのサイトに導入する方法を紹介したいと思います。

reCAPTCHAとは?

reCAPTCHAとはBotからのアクセスを防げるツール(?)です。

よく会員登録とかで私はロボットではありませんって出てくるやつです。

Googleが運営しています。

最近v3が公開されて話題になりました。(v3ではユーザーが画像を選ばなくてもロボットかどうか確認できる)

なぜv3じゃ無いのか

普通にv3のドキュメント読んだりしたけどJavaScriptの部分を理解できなかったので今回はv2について
書きます。(そのうちv3の記事も書くと思います)

登録

こちらからサイトの登録・keyの発行等ができます。(googleアカウントが必要です)

アクセスしたら右上のMyreCAPTCHAをクリックしてサイトを登録してください。

ローカル環境でとりあえず使ってみたいという場合にはドメインはlocalhostでも大丈夫です。

フロントエンド導入

headタグ内に下記のコードを追加してapiを取り込みます。

次にform内に次のコードを入れます。

サイトキーには先ほど登録した際に発行されたsite keyを入れてください。

これだけでは分かりにくいかもしれないのでこちらのindex.htmlが実装例になっているので参考にしてみてください。

これでフロントエンドは完了です。

これだけでは簡単にすり抜けられてしまうのでバックエンドも実装します。

バックエンド実装

バックエンドも実装します。

先ほど実装したフォームを送信すると”g-recaptcha-response”で5分間だけ有効なtokenがCGIに送信されるので
Pythonで受け取って有効か確認します。

Pythonで確認するのが地味に面倒なのでライブラリにしてgithubで公開しておきました。

今回はそのライブラリの使い方を説明します。

確認にはシークレットキーが必要なので確認しておいてください。

ダウンロード

ライブラリはこちらからダウンロードできます。

ダウンロードしたらrecaptcha.pyをcgiと同じフォルダに入れてください。

コード


import cgi
from recaptcha import recaptcha
form = cgi.FieldStorage()
data = form.getvalue("g-recaptcha-response")
ans = recaptcha("シークレットキー",data)
if (ans == True):
    print("あなたはロボットではありません")
else:
    print("あなたはロボットです。")

これでPython環境でもreCAPTCHAを導入できます。

もう少しドキュメントを読んでv3も実装してみたいと思います。

最後まで読んでいただきありがとうございました!

お寿司を送る BitZenyを送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。