1
|
package eu.dnetlib.openaire.user.utils;
|
2
|
|
3
|
import org.apache.log4j.Logger;
|
4
|
|
5
|
import javax.json.Json;
|
6
|
import javax.json.JsonObject;
|
7
|
import javax.json.JsonReader;
|
8
|
import javax.net.ssl.HttpsURLConnection;
|
9
|
import java.io.BufferedReader;
|
10
|
import java.io.DataOutputStream;
|
11
|
import java.io.InputStreamReader;
|
12
|
import java.io.StringReader;
|
13
|
import java.net.URL;
|
14
|
|
15
|
public class VerifyRecaptcha {
|
16
|
|
17
|
public static final String url = "https://www.google.com/recaptcha/api/siteverify";
|
18
|
|
19
|
//private final static String USER_AGENT = "Mozilla/5.0";
|
20
|
|
21
|
private static Logger logger = Logger.getLogger(VerifyRecaptcha.class);
|
22
|
public static boolean verify(String gRecaptchaResponse, String secret) {
|
23
|
|
24
|
logger.debug("Recaptch secret " + secret);
|
25
|
logger.debug("response " + gRecaptchaResponse);
|
26
|
|
27
|
if (gRecaptchaResponse == null || "".equals(gRecaptchaResponse)) {
|
28
|
return false;
|
29
|
}
|
30
|
|
31
|
try{
|
32
|
URL obj = new URL(url);
|
33
|
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
|
34
|
|
35
|
// add reuqest header
|
36
|
con.setRequestMethod("POST");
|
37
|
//con.setRequestProperty("User-Agent", USER_AGENT);
|
38
|
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
|
39
|
|
40
|
String postParams = "secret=" + secret + "&response="
|
41
|
+ gRecaptchaResponse;
|
42
|
|
43
|
// Send post request
|
44
|
con.setDoOutput(true);
|
45
|
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
|
46
|
wr.writeBytes(postParams);
|
47
|
wr.flush();
|
48
|
wr.close();
|
49
|
|
50
|
int responseCode = con.getResponseCode();
|
51
|
logger.debug("\nSending 'POST' request to URL : " + url);
|
52
|
logger.debug("Post parameters : " + postParams);
|
53
|
logger.info("recaptcha response Code : " + responseCode);
|
54
|
|
55
|
BufferedReader in = new BufferedReader(new InputStreamReader(
|
56
|
con.getInputStream()));
|
57
|
String inputLine;
|
58
|
StringBuffer response = new StringBuffer();
|
59
|
|
60
|
while ((inputLine = in.readLine()) != null) {
|
61
|
response.append(inputLine);
|
62
|
}
|
63
|
in.close();
|
64
|
|
65
|
// print result
|
66
|
logger.debug(response.toString());
|
67
|
|
68
|
//parse JSON response and return 'success' value
|
69
|
JsonReader jsonReader = Json.createReader(new StringReader(response.toString()));
|
70
|
JsonObject jsonObject = jsonReader.readObject();
|
71
|
jsonReader.close();
|
72
|
|
73
|
return jsonObject.getBoolean("success");
|
74
|
|
75
|
} catch(Exception e){
|
76
|
logger.error("Error validating recaptcha");
|
77
|
return false;
|
78
|
}
|
79
|
}
|
80
|
|
81
|
}
|