百度百科:
CMU设计了一个名叫reCAPTCHA的强大系统,让他们的电脑去向人类求助。具体做法是:将OCR软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU。
使用前需注意:
1.reCaptcha官网网站为:https://developers.google.com/recaptcha/(需要翻墙)
2.在国内使用的话,需要将demo中所有的www.google.com替换成www.recaptcha.net不然无法使用reCAPTCHA
3.使用reCaptcha需要去注册google账号,并且去https://www.google.com/recaptcha/admin里面去创建秘钥对()稍等我会标注出来)
reCaptcha方式选择:
1.显示
2.隐式
3.Android
实践第一种(显示):
1.创建google账号,访问https://www.google.com/recaptcha/admin创建秘钥对
2.前端:
-
<!DOCTYPE html>
-
<html lang=“en”>
-
<head>
-
<title></title>
-
<meta charset=“utf-8”>
-
<meta name=“viewport” content=“width=device-width, initial-scale=1”>
-
<script src=‘https://www.recaptcha.net/recaptcha/api.js’></script>
-
</head>
-
<body>
-
-
<form action=“/check” method=“post”>
-
<!– 公钥 –>
-
<div class=“g-recaptcha” data-sitekey=“6Ldnn3cUAAAAANS1T-9rfBL7z6lDnaZj5RXdhApc”></div>
-
<p><button class=“btn btn-primary” type=“submit”>Register</button>
-
</form>
-
</body>
-
</html>
3.服务端
-
“/check”)(
-
-
public String check(HttpServletRequest request) {
-
String checkCode = request.getParameter(“g-recaptcha-response”);
-
Map<String, Object> map = new HashMap<>();
-
// 私钥
-
map.put(“secret”, “6Ldnn3cUAAAAADcNDxCOnw_oBV_k0JsvdBMF-KEI”);
-
map.put(“response”, checkCode);
-
String json = MyHttpRequest.sendPost(“https://www.recaptcha.net/recaptcha/api/siteverify”, map, “UTF-8”);
-
return json;
-
}
实践第二种(隐式):
1.去创建秘钥对,步骤一样,只不过是这里选择项,选择改成第二个了,然后获取新的秘钥对
2.前端
-
<html>
-
<head>
-
<title>reCAPTCHA demo: Simple page</title>
-
<script src=“https://www.recaptcha.net/recaptcha/api.js” async defer></script>
-
<script>
-
function onSubmit(token) {
-
document.getElementById(“demo-form”).submit();
-
}
-
</script>
-
</head>
-
<body>
-
<form id=‘demo-form’ action=“/check2” method=“POST”>
-
<!– data-sitekey 需要填写公钥 –>
-
<button class=“g-recaptcha” data-sitekey=“6LfcoXcUAAAAAC0jA5m50z4C0a7Zggrk6sUvgVKs” data-callback=‘onSubmit’>Submit</button>
-
<br/>
-
</form>
-
</body>
-
</html>
3.服务端
-
“/check2”)(
-
-
public String check2(HttpServletRequest request) {
-
String checkCode = request.getParameter(“g-recaptcha-response”);
-
Map<String, Object> map = new HashMap<>();
-
// 私钥
-
map.put(“secret”, “6LfcoXcUAAAAAE-G2qDI19ZR5r96sY_f5i6mVWNi”);
-
map.put(“response”, checkCode);
-
String json = MyHttpRequest.sendPost(“https://www.recaptcha.net/recaptcha/api/siteverify”, map, “UTF-8”);
-
return json;
-
}
第一种效果:
第二种效果:
服务端调用https://www.recaptcha.net/recaptcha/api/siteverify,返回来的错误码:
Error code | Description |
---|---|
missing-input-secret | The secret parameter is missing. |
invalid-input-secret | The secret parameter is invalid or malformed. |
missing-input-response | The response parameter is missing. |
invalid-input-response | The response parameter is invalid or malformed. |
bad-request | The request is invalid or malformed. |