谷歌验证码reCAPTCHA的运用

写在前面

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

本文中对于所有的谷歌接口均做了国内替代,自己可根据需要做相应的替换:

国内使用的api:

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

国外使用的api:

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

文章目录

  • 写在前面
  • 一、reCAPTCHA 概述
    • 1.注册
    • 2.reCAPTCHA v2 和 v3之间的功能比较
      • 2.1 reCAPTCHA v2(“我不是机器人”复选框)
      • 2.2 reCAPTCHA v3
  • 二、reCAPTCHA v2 使用说明
    • 1.配置可视化的reCAPTCHA v2小部件
      • 1.1 自动渲染 reCAPTCHA v2小部件
      • 1.2 显示 reCAPTCHA v2 小部件
      • 1.3 配置可视化的reCAPTCHA v2小部件
    • 2.配置不可见的reCAPTCHA v2小部件
      • 2.1 自动将请求绑定到按钮
      • 2.2 将请求绑定到按钮或调用请求
      • 2.3 调用请求
      • 2.4 配置不可视的reCAPTCHA v2小部件
  • 总结


一、reCAPTCHA 概述

提示:这里可以添加本文要记录的大概内容:

reCAPTCHA是一项免费的Google服务,Google 提供 reCAPTCHA(v3 和 v2)和 reCAPTCHA Enterprise 来帮助您保护您的网站来自欺诈活动、垃圾邮件和滥用行为。它通常是这样的:

reCAPTCHA
我们这时候需要点击验证码上的小框来触发验证,通常情况下,验证码会呈现如下的点选图:
reCAPTCHA验证码展示

1.注册

要开始使用reCAPTCHA,您需要注册一个 API 密钥为您的网站配对。密钥对由站点密钥和密钥。站点密钥用于在站点或移动应用程序上调用 reCAPTCHA服务。私有密钥授权应用程序后端与reCAPTCHA 服务器之间的通信,以验证用户的响应。

注册地址:https://www.google.com/recaptcha/admin

2.reCAPTCHA v2 和 v3之间的功能比较

要开始使用reCAPTCHA,您需要注册一个 API 密钥为您的网站配对。密钥对由站点密钥和密钥。站点密钥用于在站点或移动应用程序上调用 reCAPTCHA服务。私有密钥授权应用程序后端与reCAPTCHA 服务器之间的通信,以验证用户的响应。

reCAPTCHA v2reCAPTCHA v3
每月免费提供多达 100 万次评估每月免费提供多达 100 万次评估
支持“我不是机器人” 小部件不支持“我不是机器人” 小部件
无分数粒度4级安全审查

2.1 reCAPTCHA v2(“我不是机器人”复选框)

“我不是机器人”复选框要求用户单击指示用户不是机器人的复选框。这将立即通过用户(没有验证码),或者挑战他们验证他们是否是人类。这是最简单的集成选项,只需要两行 HTML 即可呈现复选框。
reCAPTCHA v2
reCAPTCHA v2(隐形 reCAPTCHA 徽章)
隐形 reCAPTCHA 徽章

2.2 reCAPTCHA v3

reCAPTCHA v3 允许您在没有任何用户交互的情况下验证交互是否合法。它是一个返回分数的纯JavaScript API,使您能够在站点上下文中采取行动:例如,需要额外的身份验证因素,发送帖子进行审核,或限制可能正在抓取内容的机器人。

二、reCAPTCHA v2 使用说明

1.配置可视化的reCAPTCHA v2小部件

本小节介绍如何在网页上显示和自定义 reCAPTCHA v2 小部件。

1.1 自动渲染 reCAPTCHA v2小部件

在页面上呈现 reCAPTCHA 小部件的最简单方法是包含必要的 JavaScript 资源和 atag。标签是一个 DIV 元素,其类名和属性中的站点键:g-recaptchadata-sitekey

代码如下(示例):

<html><head><title>reCAPTCHA demo: Simple page</title><script src="https://recaptcha.net/recaptcha/api.js" async defer></script></head><body><form action="?" method="POST"><div class="g-recaptcha" data-sitekey="your_site_key"></div><br/><input type="submit" value="Submit"></form></body>
</html>

脚本必须使用HTTPS协议加载,并且可以从任何不受限制地指向页面。

1.2 显示 reCAPTCHA v2 小部件

延迟渲染可以通过指定加载回调函数来实现 并向 JavaScript 资源添加参数。

①.指定回调函数。此函数将在以下情况下被调用 所有依赖项都已加载。onload

<script type="text/javascript">var onloadCallback = function() {alert("grecaptcha is ready!");};
</script>

②.插入 JavaScript 资源,将参数设置为名称 的加载回调函数和参数。onloadrenderexplicit

<script src="https://www.google.com/recaptcha/api.js?οnlοad=onloadCallback&render=explicit"async defer>
</script>

执行回调时,可以调用方法 来自 JavaScript API。grecaptcha.render

★ 回调函数必须是在 重新验证码API 加载之前定义。确保没有条件:onload
· 首先使用回调对脚本进行排序,然后对 reCAPTCHA 进行排序
· 在“script”标签中使用“async”和“defer”参数

1.3 配置可视化的reCAPTCHA v2小部件

JavaScript(api.js) 参数:

参数描述
onload自选。加载所有依赖项后要执行的回调函数的名称。
renderexplicit
onload
自选。是否显式呈现小组件。默认为 onload,这将在找到的第一个标记中呈现小部件。g-recaptcha
hl自选。强制小部件以特定语言呈现。如果未指定,则自动检测用户的语言。

g-recaptcha 标签属性和 grecaptcha.render 参数:

参数默认描述
data-sitekeysitekey站点密钥 sitekey
data-themethemedark lightlight自选。小组件的颜色主题
data-sizesizecompact normalnormal自选。小组件的大小
data-tabindextabindex0自选。小组件和质询的选项卡索引。如果页面中的其他元素使用 tabindex,则应将其设置为使用户导航更轻松。
data-callbackcallback自选。回调函数的名称,在用户提交成功响应时执行。令牌将传递给您的回调。g-recaptcha-response
data-expired-callback自选。回调函数的名称,在 reCAPTCHA 响应过期且用户需要重新验证时执行。
data-error-callback自选。回调函数的名称,在 reCAPTCHA 遇到错误(通常是网络连接)时执行,并且在连接恢复之前无法继续。如果在此处指定函数,则负责通知用户他们应重试。

JavaScript API:

方法描述
grecaptcha.render(container,parameters)将容器呈现为 reCAPTCHA 小组件,并返回新创建的小组件的 ID。
container
用于呈现 reCAPTCHA 小部件的 HTML 元素。指定container的 ID(string)或 DOM 元素本身。
parameters
包含作为键=值对的参数的对象,例如:{“sitekey”: “your_site_key”, “theme”: “light”}
grecaptcha.reset(opt_widget_id)重置重新验证码小部件
opt_widget_id
可选小组件 ID,如果未指定,则默认为创建的第一个小组件
grecaptcha.getResponse(opt_widget_id)获取 reCAPTCHA 小组件的响应。
opt_widget_id
可选小组件 ID,如果未指定,则默认为创建的第一个小组件

例子
加载回调后

<html><head><title>reCAPTCHA demo: Explicit render after an onload callback</title><script type="text/javascript">var onloadCallback = function() {grecaptcha.render('html_element', {'sitekey' : 'your_site_key'});};</script></head><body><form action="?" method="POST"><div id="html_element"></div><br><input type="submit" value="Submit"></form><script src="https://recaptcha.net/recaptcha/api.js?οnlοad=onloadCallback&render=explicit"async defer></script></body>
</html>

多个小部件的显式呈现

<html><head><title>reCAPTCHA demo: Explicit render for multiple widgets</title><script type="text/javascript">var verifyCallback = function(response) {alert(response);};var widgetId1;var widgetId2;var onloadCallback = function() {// Renders the HTML element with id 'example1' as a reCAPTCHA widget.// The id of the reCAPTCHA widget is assigned to 'widgetId1'.widgetId1 = grecaptcha.render('example1', {'sitekey' : 'your_site_key','theme' : 'light'});widgetId2 = grecaptcha.render(document.getElementById('example2'), {'sitekey' : 'your_site_key'});grecaptcha.render('example3', {'sitekey' : 'your_site_key','callback' : verifyCallback,'theme' : 'dark'});};</script></head><body><!-- The g-recaptcha-response string displays in an alert message upon submit. --><form action="javascript:alert(grecaptcha.getResponse(widgetId1));"><div id="example1"></div><br><input type="submit" value="getResponse"></form><br><!-- Resets reCAPTCHA widgetId2 upon submit. --><form action="javascript:grecaptcha.reset(widgetId2);"><div id="example2"></div><br><input type="submit" value="reset"></form><br><!-- POSTs back to the page's URL upon submit with a g-recaptcha-response POST parameter. --><form action="?" method="POST"><div id="example3"></div><br><input type="submit" value="Submit"></form><script src="https://recaptcha.net/recaptcha/api.js?οnlοad=onloadCallback&render=explicit"async defer></script></body>
</html>

2.配置不可见的reCAPTCHA v2小部件

本小节介绍如何在网页上启用和自定义不可见的 reCAPTCHA。

2.1 自动将请求绑定到按钮

在页面上使用不可见的 reCAPTCHA 小部件的最简单方法是包含必要的 JavaScript 资源并向 html 按钮添加一些属性。必要的属性是类名、属性中的站点键以及处理属性中验证码完成的 JavaScript 回调的名称。g-recaptchadata-sitekeydata-callback

<html><head><title>reCAPTCHA demo: Simple page</title><script src="https://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="?" method="POST"><button class="g-recaptcha" data-sitekey="your_site_key" data-callback="onSubmit">Submit</button><br/></form></body>
</html>

脚本必须使用HTTPS协议加载,并且可以从任何不受限制地指向页面。

2.2 将请求绑定到按钮或调用请求

延迟绑定可以通过指定 onload 回调函数并向 JavaScript 资源添加参数来实现。这与正常的 reCAPTCHA 请求相同。

2.3 调用请求

可以通过在具有属性的 div 中呈现请求并以调用 execute 来实现调用 reCAPTCHA 验证。data-size=“invisible”

①.创建一个 div 使用。data-size=“invisible”

<div class="g-recaptcha"data-sitekey="_your_site_key_"data-callback="onSubmit"data-size="invisible">
</div>

②.从 javascript 的方法中调用 grecaptcha.execute

grecaptcha.execute();

执行回调时,可以从JavaScript API 调用该方法。grecaptcha.render
★ 必须在加载 reCAPTCHA API 之前定义加载回调函数。要确保没有争用条件,请执行以下操作:
· 首先使用回调对脚本进行排序,然后对 reCAPTCHA 进行排序
· 在“script”标签中使用“async”和“defer”参数

2.4 配置不可视的reCAPTCHA v2小部件

JavaScript(api.js) 参数:

参数描述
onload自选。加载所有依赖项后要执行的回调函数的名称。
renderexplicit
onload
自选。是否显式呈现小组件。默认为 onload,这将在找到的第一个标记中呈现小部件。g-recaptcha
hl自选。强制小部件以特定语言呈现。如果未指定,则自动检测用户的语言。

g-recaptcha 标签属性和 grecaptcha.render 参数:

参数默认描述
data-sitekeysitekey站点密钥 sitekey
data-themethemedark lightlight自选。小组件的颜色主题
data-sizesizecompact normalnormal自选。小组件的大小
data-tabindextabindex0自选。小组件和质询的选项卡索引。如果页面中的其他元素使用 tabindex,则应将其设置为使用户导航更轻松。
data-callbackcallback自选。回调函数的名称,在用户提交成功响应时执行。令牌将传递给您的回调。g-recaptcha-response
data-expired-callback自选。回调函数的名称,在 reCAPTCHA 响应过期且用户需要重新验证时执行。
data-error-callback自选。回调函数的名称,在 reCAPTCHA 遇到错误(通常是网络连接)时执行,并且在连接恢复之前无法继续。如果在此处指定函数,则负责通知用户他们应重试。

JavaScript API:

方法描述
grecaptcha.render(container,parameters)将容器呈现为 reCAPTCHA 小组件,并返回新创建的小组件的 ID。
container
用于呈现 reCAPTCHA 小部件的 HTML 元素。指定container的 ID(string)或 DOM 元素本身。
parameters
包含作为键=值对的参数的对象,例如:{“sitekey”: “your_site_key”, “theme”: “light”}
grecaptcha.reset(opt_widget_id)重置重新验证码小部件
opt_widget_id
可选小组件 ID,如果未指定,则默认为创建的第一个小组件
grecaptcha.getResponse(opt_widget_id)获取 reCAPTCHA 小组件的响应。
opt_widget_id
可选小组件 ID,如果未指定,则默认为创建的第一个小组件

例子:
加载回调后的返回:

<html><head><title>reCAPTCHA demo: Explicit render after an onload callback</title><script>var onSubmit = function(token) {console.log('success!');};var onloadCallback = function() {grecaptcha.render('submit', {'sitekey' : 'your_site_key','callback' : onSubmit});};</script></head><body><form action="?" method="POST"><input id="submit" type="submit" value="Submit"></form><script src="https://recaptcha.net/recaptcha/api.js?οnlοad=onloadCallback&render=explicit"async defer></script></body>
</html>

在客户端验证后调用不可见的 reCAPTCHA 请求。

<html><head><script>function onSubmit(token) {alert('thanks ' + document.getElementById('field').value);}function validate(event) {event.preventDefault();if (!document.getElementById('field').value) {alert("You must add text to the required field");} else {grecaptcha.execute();}}function onload() {var element = document.getElementById('submit');element.onclick = validate;}</script><script src="https://recaptcha.net/recaptcha/api.js" async defer></script></head><body><form>Name: (required) <input id="field" name="field"><div id="recaptcha" class="g-recaptcha"data-sitekey="_your_site_key_"data-callback="onSubmit"data-size="invisible"></div><button id="submit">submit</button></form><script>onload();</script></body>
</html>

总结

提示:reCAPTCHA v3 的使用将在后续推出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4457.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌验证码recaptcha接入

recaptcha是一项谷歌免费验证码服务&#xff0c;本次接入的是reCaptcha v2 1、首先选择reCaptcha的类型&#xff0c;注册申请api密钥对&#xff0c;包含站点密钥和密钥组成&#xff0c;站点密钥用于在网站调用reCAPTCHA服务&#xff0c;密钥则是验证应用后端和 reCAPTCHA 服务校…

技巧|使用Chatgpt在聊天界面直接显示公式

ChatGPT的使用已经越来越多&#xff0c;从问问题到写代码&#xff0c;但是有些时候&#xff0c;当我们问一些数学问题的时候&#xff0c;由于要显示公式&#xff0c;ChatGPT会直接给我们输出Latex代码。有Latex代码当然是好&#xff0c;我们可以把它放到编辑器编辑即可。 但是说…

python实现ChatGPT连续多轮对话

代码如下。注意&#xff0c;api_key需要改成自己的密钥才能成功运行。 import openaiapi_key "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"openai.api_key api_keydef askChatGPT(messages):MODEL "gpt-3.5-turbo"response openai.ChatCom…

用这三本书,探究 ChatGPT 的底层逻辑

最近爆火的ChatGPT能够很好地理解人类的语言&#xff0c;并以流畅且符合逻辑的自然语言来反馈。刚刚发布的GPT-4更是在各种学科考试&#xff08;美国高考SAT、研究生入学考试GRE等&#xff09;和专业考试&#xff08;律师考试等&#xff09;中能拿到前10%的成绩。某种程度上&am…

超火的ChatGPT技术原理与我们关系

文章目录 1 ChatGPT简介2 ChatGPT发展历程3 ChatGPT原理4 ChatGPT与我们关系4.1 ChatGPT与大数据关系4.2 ChatGPT与Java关系 4.3 ChatGPT时代机遇4.4 ChatGPT存在的问题4.5 ChatGPT发展思考 1 ChatGPT简介 众所周知&#xff0c;最近&#xff0c;由美国人工智能公司OpenAI推出的…

这10本书,带你了解 ChatGPT 的底层逻辑!

文章来源&#xff1a;人民邮电出版社 自2022年11月30日发布以来&#xff0c;ChatGPT已经真正意义上地火爆全球&#xff1a;它在不到40天内就拥有了1000万用户&#xff0c;而Instagram足足用了355天&#xff1b;最近它的日活已经达到1000万&#xff0c;这意味着其用户已经超过20…

底层逻辑是什么意思7个,底层逻辑是谁提出来的

本篇文章给大家谈谈底层逻辑是什么意思7个&#xff0c;以及底层逻辑是谁提出来的&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收x藏x本x站喔。 1、chatgpt是什么? chatgpt介绍如下&#xff1a; ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器…

这9本书,带你了解 ChatGPT 的底层逻辑(文末赠书)

自2022年11月30日发布以来&#xff0c;ChatGPT已经真正意义上地火爆全球&#xff1a;它在不到40天内就拥有了1000万用户&#xff0c;而Instagram足足用了355天&#xff1b;最近它的日活已经达到1000万&#xff0c;这意味着其用户已经超过2000万。 ▲ ChatGPT日活数据统计&#…

ChatGPT 正在重塑教育的底层逻辑

让我们思考一个问题&#xff1a;如果不看手机&#xff0c;你能想到几个人的手机号码&#xff1f;我猜你可能只能想到五个人的。这是为什么&#xff1f;因为我们的大脑非常节能&#xff0c;只要有工具可以替代&#xff0c;它就不会再做同样的事情。这是脑科学的一个基本的原理。…

一个插件,让你的 ChatGPT 不再报错!

最近几天&#xff0c;相信大家都发现了 ChatGPT 一个问题&#xff0c;就是官网报错越来越频繁了。 当你需用 ChatGPT 来处理一些比较琐碎的任务时&#xff0c;一旦你离开页面时间比较久&#xff0c;再度返回跟它进行对话&#xff0c;就会出现如下报错&#xff1a; 虽然这个报错…

ChatGPT的N种用法(持续更新中。。。)

————ChatGPT———— ChatGPT可能很多人都不知道是什么今天我们就来说说“他”是什么&#xff1f;为什么这段时间突然就爆火起来了&#xff0c;还有人说中国ChatGPT比绝大部分人类都聪明。真的有大家说的那么神奇吗&#xff1f;让我们一起来看看? 该说不说咱这个这个Chat…

【ChatGPT】如何让 ChatGPT 不再频繁报错,获取更加稳定的体验?

文章目录 一、问题描述二、方案1&#xff1a;使用 OpenAI API Key 来访问 ChatGPT三、方案2&#xff1a;安装 Chrome 插件3.1 介绍3.2 安装步骤3.2.1 插件 & 脚本安装3.2.2 解读功能 一、问题描述 最近一段时间&#xff0c;相信大家都发现了 ChatGPT 一个问题&#xff0c;…

chatgpt使用记录

1.gmail账户注册 移动端下载gmail&#xff0c;注册很快&#xff0c;用中国手机号就行&#xff0c;不像桌面浏览器有各种问题。 2.openai gmail注册 登录openai.com注册即可&#xff0c;然后会跳转到手机号码验证环节 3.openai手机号码验证 登录接码平台&#xff0c;我这里…

【Python爬虫项目实战三】Ddddocr识别Ocr过开放猫验证码(接Authorization认证更新)

目录 &#x1f347;前言&#x1f34d;验证码识别的几个方法&#x1f965;百度AI开放平台&#x1f965;Ddddocr&#x1f991;分析验证码位数&#x1f991;获取验证码接口&#x1f991;算法识别匹配&#x1f991;请求登陆接口 &#x1f34b;总结&#xff1a; &#x1f347;前言 …

Ai工具推荐 - Claude(一款没有任何限制,可以直接使用的媲美ChatGPT产品,手机端也可使用) 保姆级操作手册

ChatGPT现在非常的火爆&#xff0c;很多小伙伴都想体验一下&#xff0c;但体验它是需要一些限制的&#xff0c;比如美国手机号。这无形中给很多人增加了使用的门槛。今天给大家介绍一个没有任何限制&#xff0c;就可以使用的一款与它效果基本一致的AI产品&#xff0c;Claude。它…

< 每日闲谈:你真的了解 “ ChatGPT ” 嘛 ? >

< 每日闲谈&#xff1a;你真的了解 “ ChatGPT ” 嘛 &#xff1f; > &#x1f449; 前言&#x1f449; OpenAI的创立&#x1f449; ChatGPT有何过人之处&#xff1f;> 效果演示 &#x1f449; OpenAI看家之作 — GPT自然语言模型> GPT发展史> 里程碑-GPT3> …

一款 IntelliJ IDEA 神级插件,由 ChatGPT 团队开发,堪称辅助神器!

今天再介绍一款牛逼的IntelliJ IDEA ChatGPT 插件Bito – GPT-4 一、介绍 Bito–GPT-4是一款依托于GPT4的IDEA插件&#xff0c;可以编写代码、解释代码、创建测试。高效的开发每天节省一个小时&#xff01; 功能特点 生成代码&#xff1a;示例&#xff1a;“java 中的代码将…

抓紧赶上ChatGPT这股风,错过这次不知道还有没有下一次

抓紧赶上ChatGPT这股风&#xff0c;错过这次不知道还有没有下一次 演示GTP-4ChatGPT会过滤掉很多“普通人”‍‍抓住机遇&#xff0c;抢占先机GPT规模GPT安全验证利用GPT赚moneyGPT应用的现状思考题 自从GPT-4正式上线以来&#xff0c;及时加入到GPT的小伙伴们发现&#xff0c;…

ChatGPT会颠覆哪些行业,普通人在这个风口上有什么机会?

去年年底ChatGPT横空出世&#xff0c;相信你已经有所耳闻了。关于ChatGPT的介绍&#xff0c;网上已经有大量的视频和文章&#xff0c;我们就不再赘述了。 这篇文章&#xff0c;我们主要来探讨一下ChatGPT的出现会颠覆哪些行业&#xff0c;以及我们普通人在这个风口上有什么机会…

ChatGPT和GPT-4带你选笔记本电脑

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…