reCAPTCHA是Google公司推出的一项验证服务,使用十分方便快捷,在国外许多网站上均有使用。它与许多其他的人机验证方式不同,它极少需要用户进行各种识图验证。

它的使用方式如下如所示,只需勾选复选框即可通过人机验证。

虽然简单但效果很好,因为Google会收集一些浏览器信息,网络信息,鼠标轨迹等信息,最后通过神经网络判断是否为机器人。而且reCAPTCHA还可以记录并分析使用该人机验证的请求次数,并对可以的请求进行统计和监管。

一些准备工作:
需要一个谷歌账号没有的先去注册一个

reCAPTCHA官网:https://developers.google.com/recaptcha/(需要科学上网)

使用reCAPTCHA需要创建密匙对,创建密匙:https://www.google.com/recaptcha/admin

首先先创建密匙
进入 https://www.google.com/recaptcha/admin

创建成功后会产生一对密匙

前端部署
在你需要添加reCAPTCHA的界面添加script标签

<script src="https://www.recaptcha.net/recaptcha/api.js"></script>

然后再你需要显示reCAPTCHA验证框的地方添加

<div class="g-recaptcha" data-sitekey="你的网站密匙"></div>

可以设置验证框的主题默认主题为light,可以添加属性:data-theme="dark" 变为暗色主题

方式一、自动将请求绑定到按钮

1、加载JavaScript API

 <script src="https://www.google.com/recaptcha/api.js"></script>

2、添加一个回调函数来处理令牌

 <script>function onSubmit(token) {document.getElementById("demo-form").submit();}</script>

3、向 html 按钮添加属性

<button class="g-recaptcha" data-sitekey="reCAPTCHA_site_key" data-callback='onSubmit' data-action='submit'>Submit</button>

方式二、以编程方式调用

为了大家方面理解,如上图,可以先看看我做的一个demo:recaptcha

1、用 sitekey(站点秘钥) 加载 JavaScript API

<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>

2、添加一个回调函数来处理令牌

 <script>function onSubmit(token) {document.getElementById("demo-form").submit();}</script>

3、在你需要进行人机验证的操作上调用 grecaptcha.execute 方法

reCAPTCHA v3 引入了一个新概念——动作如:( action: ‘submit / login’ )。当你在每一个执行 reCAPTCHA 的地方指定一个动作名称时,你启用了以下新特性:

1、管理控制台中前10个操作的详细数据分解

2、Adaptive risk analysis based on the context of the action, because abusive behavior can vary.

操作可能只包含字母数字字符、斜线和下划线。

   <script>function onClick(e) {e.preventDefault();grecaptcha.ready(function() {grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'}).then(function(token) {// Add your logic to submit to your backend server here.});});}</script>

注意:

尝试将执行调用挂钩到有趣的动作,如注册、密码重置、购买或播放。

你可以使用ajax提交,也可以把 token 插入到 HTML 的 input hidden 隐藏框,一起提交到后端进行校验。

4、将令牌(token)立即发送到网站后端,并发送要验证的请求。

后端部署
在每次验证完成后会生成一个g-recaptcha-response验证码,需要将这个验证码和你的密匙一起发送至:https://www.recaptcha.net/recaptcha/api/siteverify (使用GET方式传参)

传参的格式:secret=xxxxxx&response=xxxxxxx

下图为需要传递的参数及其含义


接口返回的数据是json格式

{"success": true|false,"challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)"hostname": string,         // the hostname of the site where the reCAPTCHA was solved"error-codes": [...]        // optional
}

验证通过后success返回的值为“true”,如果验证失败则会返回error-code,下面为error-code及其对应原因

使用Google reCAPTCHA进行人机验证相关推荐

  1. 浅谈如何使用Google reCAPTCHA进行人机验证

    reCAPTCHA是Google公司推出的一项验证服务,使用十分方便快捷,在国外许多网站上均有使用.它与许多其他的人机验证方式不同,它极少需要用户进行各种识图验证. 它的使用方式如下如所示,只需勾选复 ...

  2. Google 人机验证(reCaptcha)无法显示解决方案

    Google 人机验证无法显示解决方案 第一步 安装插件 Chrome/Edge 电脑版 Firefox 电脑版 第二步 配置插件 原理 参考文章 前言:为了防止机器人攻击,国外很多网站都使用了 Go ...

  3. GOOGLE 人机验证(RECAPTCHA)无法显示解决方案(可解决大多数 CSP 问题)

    前言: 为了防止机器人攻击,国外很多网站都使用了 Google reCaptcha 验证码.reCaptcha 对于国外用户非常的友好,但是-对于国内用户就不怎么友好了.究其原因,则是国内网络全线屏蔽 ...

  4. 谷歌人机验证Google reCAPTCHA

    reCAPTCHA是Google公司推出的一项验证服务,使用十分方便快捷,在国外许多网站上均有使用.它与许多其他的人机验证方式不同,它极少需要用户进行各种识图验证. 它的使用方式如下如所示,只需勾选复 ...

  5. GOOGLE 人机验证(RECAPTCHA)无法显示解决方案(转)

    前言: 为了防止机器人攻击,国外很多网站都使用了 Google reCaptcha 验证码.reCaptcha 对于国外用户非常的友好,但是-对于国内用户就不怎么友好了.究其原因,则是国内网络全线屏蔽 ...

  6. 解决Google人机验证reCaptcha失效问题

    安装Redirector插件 Firefox浏览器 1. 下载Firefox浏览器,并安装插件 2. 打开Redirector插件的界面 3. 弹出如下界面 4. 按照如下形式填写 Chrome浏览器 ...

  7. 在vue中使用Google Recaptcha验证

    我们最近的项目中需要使用谷歌机器人验证,这个最主要的就是要有vpn,还需要有公司申请的google账号(自己申请的没用)用于商用的,利用这个账号去申请秘钥,然后有了秘钥之后就可以了. 部分代码如下: ...

  8. 解压bz2;kaggle(google人机验证);pycharm加上参数运行;no module named ‘torch_sparse;像这种在kaggle中运行程序报错—— invalid syn

    https://jingyan.baidu.com/article/86fae3461437c53c48121a50.html 关于kaggle一些问题解决办法 - Y-flower - 博客园 Go ...

  9. 避免跳出谷歌人机验证 reCAPTCHA界面的解决方法

    第一次遇到跳出谷歌人机验证 reCAPTCHA界面只要点击窗口就没有问题了,心里还感叹了下谷歌能把人机验证这事做的这么好,不错.然而这个窗口还是会不断调出来扰人= =,导致使用Chrome浏览器搜索变 ...

最新文章

  1. 小学计算机制作表格教案,小学信息技术《表格的制作》教案
  2. 建立数组并写入数据_VBA数组与字典解决方案第37讲:在VBA中字典的应用
  3. 计数排序vs基数排序vs桶排序
  4. 高性能滚动scroll(防抖和节流)
  5. 【算法】第76题 Minimum Window Substring
  6. 【评测通知】中国计算语言学大会(CCL 2021)发布5项技术评测任务
  7. Hadoop组件启动的三种方式及配置SSH无密码登入
  8. 2021蓝桥杯C/C++B组真题
  9. java 获取上周开始时间和结束时间,上上周开始和上上周结束时间
  10. cerebro 通过https访问ES docker集群
  11. java输出GPA_请完成下列Java程序:实现换算GPA,对于学生学习的每一门课程,都输入两个..._考试资料网...
  12. 【Fracturing amp; Destruction】Unity3D的物体爆裂、炸裂、碎裂效果
  13. USB 协议分析之 HID 设备
  14. mysql 自顶向下递归查询 使用next字段查子集 单链表查询
  15. mysql开发与实践_MySQL开发与实践
  16. windows下php下载与安装
  17. Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)
  18. 建站操作——WordPress添加用户注册与登录功能(三种方法)
  19. 大数据调度系统为什么选型Apache DolphinScheduler ?
  20. 如何减轻偏头痛的症状

热门文章

  1. 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析
  2. php f4v元数据,IIS设置支持flv,f4v,mp4,ogv,webm
  3. NIO和BIO和AIO区别
  4. 守护绿水青山,环保数采仪一马当先!
  5. 使用XML作为数据库
  6. java中获取日期属于哪一年的第几周
  7. TPS,MIS,DSS,ESS,临时表
  8. Python程序题练习
  9. Mac系统升级,降级PHP出现的问题解决办法
  10. linux 算术命令,shell中进行算术运算的各种方法