reCaptcha 的使用(只需申请密钥时fq)

这是reCaptcha在各个版本中的demohttps://recaptcha-demo.appspot.com/

下面讲一下实现方式:

V2版

1.申请使用的密钥

打开链接填写申请的相关信息:https://www.google.com/recaptcha/admin

reCaptcha 的使用(只需申请密钥时fq)_第1张图片

提交信息后会给你两个密钥,其中一个是客户端使用,一个是服务器端使用

reCaptcha 的使用(只需申请密钥时fq)_第2张图片

2.因为我填写的地址为wlyyb.xxx.cn,所以在本地测试时,可以配host地址,将wlyyb.xxx.cn映射到127.0.0.1这个地址中,这样启动服务器,访问wlyyb.xxx.cn下面的页面地址,就能访问到本机了

reCaptcha 的使用(只需申请密钥时fq)_第3张图片

3.配置页面及客户端校验

这块有一点说明,因为正常的api.js地址是www.google.com,而这个地址已经在国内被墙了,可以把代码中所有的都替换成www.recaptcha.net即可


  
  reCAPTCHA demo 
   
  
  
  

这样启动服务器,访问相应页面,就能看到验证码已经集成好了

reCaptcha 的使用(只需申请密钥时fq)_第4张图片

reCaptcha 的使用(只需申请密钥时fq)_第5张图片

在验证成功后,可以看到上面代码中回调函数rebotVerified的第一个参数是有值的,它是用来进行服务器端校验的参数

4.服务器端校验

服务器端为了进行二次校验,防止前端用户跳过客户端校验而直接请求数据。

服务器端只要发送一个get请求即可,校验的地址为:https://recaptcha.net/recaptcha/api/siteverify

需要的参数至少有两个:

1)1中申请获得的服务器端密钥

2)页面校验成功后,回调函数第一个参数值

3)非必填,客户端的IP地址

如图所示,这样服务器端也就校验成功了

reCaptcha 的使用(只需申请密钥时fq)_第6张图片

 

=======================分隔线 ============================

 

V3版

1.申请密钥

和上面一样,只是选择的是reCAPTCHA 类型:第 3 版

2.步骤相同,同样是申请的wlyyb.xxx.cn地址,配的host

3.配置页面及校验

和v2不同的是,v2直接就有前端的校验,而这个页面没有一点div,完全是用户无感知的。回调的方法有token,拿着token同样去后端进行服务端的校验,把校验结果给前端


  
  reCAPTCHA demo 
  
  
 
 
  
 

4.服务端校验

这个和v2的一样,只是上面的例子我用的工具请求的,这个是代码示例

@RequestMapping(value = "/verify")
@ResponseBody
public Map login(String token) {
	String secret = "服务端的密钥";
	String result = HttpUtils.get("https://recaptcha.net/recaptcha/api/siteverify?secret=" + secret + "&response=" + token);
	Map map = JSONObject.parseObject(result);
	return map;
}

返回的结果的json格式如下:

{challenge_ts: "2019-03-06T08:33:46Z", score: 0.9, hostname: "wlyyb.bj.xdf.cn", success: true}

score是得分,得分高说明是人工访问,得分太低可能是机器访问的

你可能感兴趣的:(html,reCaptcha)