はじめに
うちのサービス、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;
}
//////////////
まとめ
メモですけど、こんな感じ。