LoginSignup
0

More than 5 years have passed since last update.

Jetty embedded で recaptchaを実装してみる。

Posted at

はじめに

うちのサービス、https://mirm.jp にもreCAPTHCAを実装したいと思い、、、新規サーバー作成時にpostでごりごりアクセスされたら困るんでね。
備忘録なんで、かなり雑です。

html上での実装

https://www.google.com/recaptcha/admin
まずはrecaptchaのキーをもらうために登録してくださいな。

<head>
 。。。。。。

<script src='https://www.google.com/recaptcha/api.js'></script>

。。。。。。
</head>


フォーム内に混ぜてくださいな。

<div class="g-recaptcha" data-callback="clearcall" data-sitekey="ここにサイトキーをいれる"></div>
<input type="submit" value="作成!">

Java側の実装


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;

import org.json.JSONException;
import org.json.JSONObject;

    public class getJsonFromWeb {

        private static String readAll(Reader rd) throws IOException {
            StringBuilder sb = new StringBuilder();
            int cp;
            while ((cp = rd.read()) != -1) {
                sb.append((char) cp);
            }
            return sb.toString();
        }

        public static JSONObject readJsonFromUrl(String url) {
            try (InputStream is = new URL(url).openStream()) {
                BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                String jsonText = readAll(rd);
                return new JSONObject(jsonText);
            } catch (IOException | JSONException e1) {
                return new JSONObject("{\"success\": false,\"error-codes\": \"jsondecodeerror\"}");
            }

        }
}


クエリを出して。。。
//recapthca
                if (recaptchacode == null) {
                    result = create_recaptchaerror;
                    elog("[ReCapError1]"+ip+ua+"[srvid]"+srvid);
                    continue;
                }

                String secretKey = "きーーーーーーー";

                JSONObject jsoned = readJsonFromUrl("https://www.google.com/recaptcha/api/siteverify?secret="+secretKey+"&response="+recaptchacode);

                try {
                    if (!jsoned.getBoolean("success")) {
                        result = create_recaptchaerror;
                        continue;
                    }
                }catch (Exception e){
                    result = create_recaptchaerror;
                    continue;
                }
                //////////////

まとめ

メモですけど、こんな感じ。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0