因为工作的原因需要使用Google验证码ReCaptcha v3,所以我就上网了解了一下,下面是我的一些学习分享。

大家应该都是用过google的验证码,如

这种情况的需要我们手动去选择,ReCaptcha V3则不需要了,不需要用户去手动的验证。

大白话:用户不用再选择哪些图里有飞机,哪些图里有汽车等。ReCaptcha V3 会在后台对用户的行为进行监测,然后会返回一个分数(0-1)之间,我们就可以自定义了,小于0.5的就是机器人,他们就需要被验证,验证手机号等。

1.首先是去reCaptcha官网网站:https://developers.google.com/recaptcha/

很不幸,这个网站需要翻墙,如果你没有能力,那就算了,因为我不能告诉你怎么翻墙。

标签随便写,这个无所谓

选择第三版

域名可以写自己的域名,也可以用localhost去测试

所有者就是你的google账号了,自己去注册

2.提交之后就会显示两个密钥,一个是客户端的,一个是服务端的

他会提示你怎么去实现,我在这里写我用的实现方法

3.前端页面html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>谷歌ReCaptcha</title>
</head>
<body>
<button>点击我执行验证</button><script src="https://www.recaptcha.net/recaptcha/api.js?render=这里写你的客户端密钥"></script>
<script type="text/javascript">const CAPTCHA_CLIENT_SECRET = "这里也写你的客户端密钥";window.onload = () => {document.querySelector('button').addEventListener('click', () => {grecaptcha.execute(CAPTCHA_CLIENT_SECRET, {action: 'homepage'}).then(function(token) {console.log('客户端token:' + token);fetch('/validate?token=' + token, {method: 'GET'}).then(response => {if (response.ok){response.json().then(message => {console.log('服务端验证');console.log(message);});}});});});};
</script>
</body>
</html>

关键的代码

grecaptcha.execute(CAPTCHA_CLIENT_SECRET, {action: 'homepage'}).then(function(token) {    //执行请求到google去获得一个takenconsole.log('客户端token:' + token);fetch('/validate?token=' + token, {  //将得到的请求发送到服务端,服务端做相应的处理method: 'GET'}).then(response => {if (response.ok){response.json().then(message => {console.log('服务端验证');console.log(message);});}});
}

4.后端代码

@RequestMapping("/validate")@ResponseBodypublic String check(HttpServletRequest request) {String checkCode = request.getParameter("token");String secret = "6LdTTf8cAAAAAJnW4jipqR0t03pG-84zpPwGPXfQ";String param = "secret="+secret+"&response="+ checkCode;String json = HttpSendUtil.instance().sendPost("https://www.recaptcha.net/recaptcha/api/siteverify", param, "UTF-8");return json;}

首先你会发现你没有这个HttpSendUtil,没关系,我有

package com.sendy.boot.controller;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;public class HttpSendUtil {private HttpSendUtil() {}private static class HttpSendUtilInstance {private static final HttpSendUtil INSTANCE = new HttpSendUtil();}public static HttpSendUtil instance() {return HttpSendUtilInstance.INSTANCE;}public String sendPost(String sendUrl, String params, String encodType) {StringBuffer receive = new StringBuffer();HttpURLConnection URLConn = null;BufferedWriter bw = null;BufferedReader br = null;try {URL url = new URL(sendUrl);URLConn = (HttpURLConnection) url.openConnection();URLConn.setRequestMethod("POST");URLConn.setDoOutput(true);URLConn.setDoInput(true);URLConn.setUseCaches(false);URLConn.setAllowUserInteraction(true);HttpURLConnection.setFollowRedirects(true);URLConn.setInstanceFollowRedirects(true);URLConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");URLConn.setRequestProperty("Content-Length", String.valueOf(params.getBytes().length));DataOutputStream dos = new DataOutputStream(URLConn.getOutputStream());dos.writeBytes(params);br = new BufferedReader(new InputStreamReader(URLConn.getInputStream(), encodType));String line;while ((line = br.readLine()) != null) {receive.append(line).append("\r\n");}br.close();} catch (java.io.IOException e) {receive.append("访问产生了异常-->").append(e.getMessage());e.printStackTrace();} finally {if (bw != null) {try {bw.close();} catch (IOException ex) {bw = null;ex.printStackTrace();} finally {if (URLConn != null) {URLConn.disconnect();URLConn = null;}}}if (br != null) {try {br.close();} catch (IOException e) {br = null;throw new RuntimeException(e);} finally {if (URLConn != null) {URLConn.disconnect();URLConn = null;}}}}return receive.toString();}public String sendGet(String sendUrl, String encodType) {StringBuffer receive = new StringBuffer();BufferedReader br = null;HttpURLConnection URLConn = null;try {URL url = new URL(sendUrl);URLConn = (HttpURLConnection) url.openConnection();URLConn.setDoInput(true);URLConn.setDoOutput(true);URLConn.connect();URLConn.getOutputStream().flush();br = new BufferedReader(new InputStreamReader(URLConn.getInputStream(), encodType));String line;while ((line = br.readLine()) != null) {receive.append(line).append("\r\n");}} catch (IOException e) {receive.append("访问产生了异常-->").append(e.getMessage());e.printStackTrace();} finally {if (br != null) {try {br.close();} catch (java.io.IOException ex) {br = null;ex.printStackTrace();} finally {if (URLConn != null) {URLConn.disconnect();URLConn = null;}}}}return receive.toString();}
}

上面这个代码直接用就可以

5.返回的数据

  1. action: "homepage"
  2. challenge_ts: "2021-10-30T03:11:43Z"  //验证的时间
  3. hostname: "localhost"  //请求的地址
  4. score: 0.9  //验证得到的分数 0-1
  5. success: true  //是否验证成功

我们可以对这个score进行自定义处理,比你得分低于0.5,你就让他进行验证,怎么验证取决于你自己

上面的地址我都是给你们替换过的,为什么要替换?   因为你不能翻墙啊

www.google.com  替换成  www.recaptcha.net

这一步你不需要做,我在上面已经换好了。

拜拜

Google验证码ReCaptcha V3相关推荐

  1. Google验证码reCAPTCHA接入Web

    文章目录 1. 介绍 2. 接入 (1) site key (2) 方式一:DOM中加入 (3) 方式二:Js 渲染 3. 配置 (1) 引用api.js的url参数 [1] onload [2] r ...

  2. 使用python selenium解决谷歌验证码(reCAPTCHA)

    来自 [ 不止于python ] 简介 reCAPTCHA项目是由卡内基梅隆大学所发展的系统,主要目的是利用CAPTCHA技术来帮助典籍数字化的进行,这个项目将由书本扫描下来无法准确的被光学文字识别技 ...

  3. SSM-网站后台管理系统制作(3)---Google的reCaptcha验证码

    网上找了好久,也不知道怎么接入,后来看到一篇博客才搞好 reCaptcha官网:https://www.google.com/recaptcha/admin#site/344147946 参考博客:h ...

  4. 验证码之google的reCAPTCHA使用

    天热了,各种选秀节目不断,互联网活动上的各种选秀节目也不少.有了选秀,就会有投票,票数的多少导致的名次先后之争直接牵扯到选手的利益.于是,各种刷票产业应运而生. 笔者用过各种防刷票的方法来杜绝,基本都 ...

  5. 注册Maltego显示ReCaptcha is not valid,解决Google验证码服务reCaptcha失效问题

    注册Maltego显示ReCaptcha is not valid,解决Google验证码服务reCaptcha失效问题 Maltego注册地址: https://www.paterva.com/we ...

  6. 解决外域 Google 图形验证码 reCaptcha 无法访问的方法

    背景 外域网站注册账号时会遇到需要输入图形验证码的情况,多数外域网站都喜欢使用 Google 的图形验证码工具 reCaptcha ,但是国内因为无法访问到 Google 的资源,就没有办法输入图形验 ...

  7. 谷歌验证码reCAPTCHA的运用

    写在前面 提示:reCAPTCHA因为依赖谷歌网站验证,在国内是无法使用的.但是谷歌提供了国内接口,将google.com替换为recaptcha.net即可. reCAPTCHA在国内的接口示例:h ...

  8. Spring Boot 下使用谷歌 reCAPTCHA v3

    JSP 时代,我写一个图片验证码组件<JSP 实用程序之简易图片验证码>,那是很老的技术,安全性很低,纯粹练手. 图片验证码(Captcha)这类应用,还是采用第三方提供的好,比较放心.于 ...

  9. 【技术开发】谷歌验证码 ReCaptcha 破解教程,简单方便从零开始。

    本文章转载于:静觅 » [技术开发]谷歌验证码 ReCaptcha 破解教程,简单方便从零开始. 很久没有做爬虫破解类相关的分享了,之前交流群里有朋友提问谷歌系的reCAPTCHA V2 验证码怎么破 ...

  10. 谷歌验证码recaptcha接入

    recaptcha是一项谷歌免费验证码服务,本次接入的是reCaptcha v2 1.首先选择reCaptcha的类型,注册申请api密钥对,包含站点密钥和密钥组成,站点密钥用于在网站调用reCAPT ...

最新文章

  1. “不会Linux,到底有多危险?”骨灰级成程序员:基本等于自废武功!
  2. [转载]Outlook 2016 显示正在启动... 无法进入Outlook的解决方案
  3. pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...
  4. 中文排版规则_非设计师的5条排版规则
  5. android 本地数据库sqlite的封装
  6. 免費玩雲端運算,Amazon Web Service 雲端運算平台攻略 【1】
  7. python入门经典27版_【python】编程语言入门经典100例--27
  8. python中的多线程求值串行和并行_python多线程和多进程——python并行编程实验
  9. Android多媒体学习八:调用Android自带的音频录制程序,实现录制
  10. 3django url name详解
  11. Javashop 7.0 前后端代码更新发布方法
  12. linux qt socket编程视频教程,Qt视频教程第二十八集socket之UDP
  13. 关于新手入坑vue,页面跳转样式错位刷新又好了的情况
  14. AutoRunner简介
  15. 魔兽世界 | 宏命令教程
  16. win10下office2013命令激活参考
  17. Ant Design Pro(5)-3.UI配置
  18. 《构建之法》第4.17章读书笔记
  19. 携程福利变噩梦 上海妇联:严肃处理旗下杂志
  20. mysql超市表格_py mysql结合面向对象,实现类似超市导购机器的功能【1.初始化表数据】...

热门文章

  1. 11款超5000星 后台管理模板, 总有一款适合你!
  2. GIWAXS数据处理流程详细
  3. 《深入解析Windows操作系统第4版》随笔记录03
  4. 多家科技公司坐等维基解密共享CIA机密文件
  5. delphi 组件安装教程详解
  6. delphi7IDE技巧
  7. linux open详解,Linux系统open函数详解
  8. 优酷吃土豆后果严重么?
  9. 单片机0 99c语言程序,单片机C语言程序设计实训99例.doc
  10. 单片机c语言编程实训心得,单片机实训心得体会