.NET 使用 Google 验证码(Google reCAPTCHA)

一. 前言

前段时间,发现注册受到了恶意攻击,一天注册量10w+,接口已从IP做了限制,但不管用,对方每一次发起的IP都不一样;紧急做了滑动验证码,虽然上线立马就阻止了恶意请求;

 但好景不长,没过几天,对方估计是接了打码平台,注册量再一次上来了

目前接入google reCAPTCHA 验证码,目前稳定已经跑了两三个月了,目前比较稳定。

二. Google reCAPTCHA 介绍

验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码、刷票、论坛灌水、刷注册等等。现在的网站基本都有使用验证码来对用户的行为进行验证。从简单的文字验证码、图片验证码、滑动验证码、图片选择验证码等,验证码一直在进化,在和“黑恶势力”做斗争。Google 验证码是 Google 提供的一项免费的验证码服务,接入非常简单,推荐用它来替换传统的图片验证码。

Google reCAPTCHA 目前已经推出V3版本,比V2版本更加安全而且简单。本文主要也是介绍V3版本的使用。Google reCAPTCHA 是采用用户行为验证类型的验证码,目前来说几乎不能被打码平台自动打码(这里指 Google reCAPTCHA 并不是指所有用户行为验证码,据说Google reCAPTCHA还是用了js vmp虚拟机技术),也只能人工打码。

V3 版本不需要点击

隐藏验证码浮窗: 

v3版本不需要点击,因此如果你不想要右下角的google reCAPTCHA的浮窗也可以把这个隐藏,隐藏不影响reCAPTCHA v3的校验

 只需要在样式中增加一下内容
 

.grecaptcha-badge {display: none!important;
}

Google reCAPTCHA v3 会对每一个请求返回一个评分,不需要与用户进行交互,该分数基于用户和网站的互动。它的主要流程主要分为五步:

  1. 使用 sitekey 加载JavaScript API
  2. 在操作或页面加载时调用 grecaptcha.execute
  3. 通过请求将令牌发送到后端
  4. 后端将令牌和 SecretKey 发送到 Google 进行验证,Google 将会给你返回一个评分
  5. 判断评分是否和符合要求

评分的数值在0-1之间,越大表示用户越真实,0表示机器人。

大家可能比较关心,国内网络无法正常使用 Google reCAPTCHA ,这点 Google 给了个解决方案,提供了一个额外的域名,来解决 www.google.com 无法正常访问的问题,后文详细介绍。

三. ASP.NET Core 接入

接入过程中会用到XXX上网,请自备。

1. 获取 Google reCAPTCHA V3 Key

Key 主要分为两个 SiteKey 和 SecretKey,它们分别用于前端和后端。访问此处来创建 Key: https://www.google.com/recaptcha/admin/create

需要注意两个地方,版本选择V3,然后域名填写你网站的域名,由于是在本地进行开发测试,所以我这里直接填写 localhost。

注册成功后保存这两个 Key

2. ASP.NET Core 接入

 (1)创建一个 ASP.NET Core MVC 项目

 (2)执行命令安装 reCAPTCHA 组件

Install-Package reCAPTCHA.Net 

(3)打开 appsettings.json 添加配置

{"Logging": {"LogLevel": {"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"AllowedHosts": "*","GoogleRecaptcha": {"SiteKey": "<你的SiteKey>","SecretKey": "<你的SecretKey>","Domain": "www.recaptcha.net","MinScore": "0.3" //最小评分,低于此评分则认为是机器人}
}

Domain 指使用的 Google reCAPTCHA 服务的域名,可以是www.recaptcha.net 或者 www.google.com,使用前者可以在国内正常使用,不受GFW影响。

(4)在 Startup ConfigureServices 方法里配置

services.AddGoogleRecaptcha(Configuration.GetSection("GoogleRecaptcha"));

(5)添加一个登录表单 (Razor),并添加 Google reCAPTCHA JS

<script src="https://www.recaptcha.net/recaptcha/api.js?render=@options.Value.SiteKey"></script>
<script type="text/javascript">grecaptcha.ready(function () {grecaptcha.execute('@options.Value.SiteKey', { action: 'login' }).then(function (token) {//将Token写入隐藏域等等$("#googleToken").val(token);});});
</script>

前端代码:

 (6)后端验证

AccountViewModel:

public class AccountViewModel
{[Required]public string Username { get; set; }[Required]public string Password { get; set; }[Required]public string GoogleToken { get; set; }
}

后端代码:

public class AccountController : Controller
{private readonly IRecaptchaService _recaptcha;public AccountController(IRecaptchaService recaptcha){_recaptcha = recaptcha;}// GET[HttpGet]public IActionResult Login(){returnView();}[HttpPost]public async Task<IActionResult> Login(AccountViewModel model){if (ModelState.IsValid){var recaptchaReault = await _recaptcha.Validate(model.GoogleToken);if (!recaptchaReault.Success || recaptchaReault.Score == 0m){ModelState.AddModelError(string.Empty, "人机验证失败,请稍后重试");}}return View(model);}
}

主要的验证逻辑:

var recaptchaReault = await _recaptcha.Validate(model.GoogleToken);if (!recaptchaReault.Success || recaptchaReault.Score == 0m)
{ModelState.AddModelError(string.Empty, "人机验证失败,请稍后重试");
}

注入 IRecaptchaService 使用其 Validate 方法来进行验证,需要将前端生成的Token传入,返回的结果 success 表示Token是否有效,score 表示返回的评分

四.测试运行

我们将验证逻辑的阈值改为 1,实际上很少能到达这个表示完美的值(线上目前我们设置的小于0.3验证失败),以此来触发验证失败的情况:

可以看到我们的页面显示了验证失败:

五、生产使用情况  

目前项目上线之后稳定跑了一段时间,目前控制为小于0.3为人机,大于等于0.3为正常用户(这个视项目具体情况而定,项目要求高一点可以设置为0.6)。基本正常,即使有极个别用户第一次请求评分为0.1,用户重新发起一次请求基本也是0.7或0.9,基本不会出现阻止正常用户的情况。

 六.资料

Google reCAPTCHA v3 doc

reCAPTCHA.AspNetCore

Admin Console 验证码使用情况

ASP.NET Core 使用 Google 验证码

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

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

相关文章

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

前言: 为了防止机器人攻击&#xff0c;国外很多网站都使用了 Google reCaptcha 验证码。reCaptcha 对于国外用户非常的友好&#xff0c;但是…对于国内用户就不怎么友好了。究其原因&#xff0c;则是国内网络全线屏蔽 Google 服务&#xff0c;导致 reCaptcha 完全加载不出来。这…

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

注册Maltego显示ReCaptcha is not valid&#xff0c;解决Google验证码服务reCaptcha失效问题 Maltego注册地址&#xff1a; https://www.paterva.com/web7/community/community.php 1.打开火狐浏览器&#xff0c;点击右上角-打开菜单-添加附件-寻找更多附加组件&#xff0c;查询…

巴比特 | 元宇宙每日必读:奋起直追,谷歌内部发布“红色指令”,要求几个月内将生成式人工智能技术集成到所有主要产品中...

摘要&#xff1a;据新浪科技报道&#xff0c;OpenAI的突然成功让谷歌母公司Alphabet不得不加快速度&#xff0c;试图在这个领域迎头赶上。一名知情人士透露&#xff0c;谷歌高级管理层已经宣布“红色指令”&#xff0c;其中要求谷歌的所有重要产品&#xff0c;包括用户数超过10…

和数集团助力开启区块链应用新时代

今年&#xff0c;中共中央、国务院等国家层面发布政策6条&#xff0c;不仅在全国统一大市场的广泛性政策中提及&#xff0c;并同时涵盖了区块链在数字文化、提振消费、交通运输以及促稳经济等多个层面的应用。可以看出&#xff0c;我国区块链产业呈现蓬勃发展之势。政策、技术、…

能链科技携手中智关爱通共建基于区块链的新人力服务网络

原文发布于 2020-06-19 原“能链科技”现更名为“零数科技” 6月16日上午&#xff0c;零数科技&#xff08;原“能链科技”&#xff09;与中智关爱通&#xff08;上海&#xff09;科技股份有限公司&#xff08;以下简称关爱通&#xff09;签署战略合作协议。双方将结合能链科技…

云图说丨华为云区块链引擎服务:高安全的区块链技术服务平台,轻松部署,快速上链

摘要&#xff1a;华为云区块链引擎服务以BCS自主研发区块链内核为底座&#xff0c;结合可信硬件&#xff0c;具有高安全、高性能、高可扩展、强隐私保护等特点&#xff0c;满足企业级和金融级的可信和协同要求。 本文分享自华为云社区《【云图说】 第251期 华为云区块链引擎服务…

基于区块链技术的智慧供应链创新应用

随着区块链技术的不断成熟&#xff0c;智慧供应链得到了长足的发展&#xff0c;通过基于华为云的几个智慧供应链和物流行业的应用创新项目&#xff0c;诠释在实际应用场景中如何通过区块链和物流面临的调整和困难&#xff0c;达到优化流程、提高效率、降低成本的效果。 随着区…

量化策略初探——使用tushare进行沪深300ETF双均线策略

使用tushare采集沪深300ETF数据&#xff0c;并对沪深300ETF采用简单移动平均、指数移动平均、进行双均线策略&#xff0c;最后使用backtrader进行回测。 一、基本概念 双均线策略&#xff1a;运用两条不同周期的移动平均线&#xff0c;即短周期移动平均线和长周期移动平均线的…

【python量化】广发证券研报:Transformer 架构下的量价选股策略

以下内容来自知乎链接&#xff1a; https://zhuanlan.zhihu.com/p/620820228 作者&#xff1a;日暮途远 已获得作者同意转载。 最近看到了一篇广发证券的关于使用Transformer进行量化选股的研报&#xff0c;在此进行一个复现记录&#xff0c;有兴趣的读者可以进行更深入的研究…

MT5 EA交易期货-市价单开仓平仓

该例子演示了EA如何报期货市价单开仓&#xff0c;开仓后10秒钟报市价单平仓。 在外汇交易里没有市价单&#xff0c;而期货交易有市价单&#xff0c; 市价单报单时不指定价格&#xff0c;让交易所自行成交&#xff0c;就是做多无论多贵都买&#xff0c;做空无论多便宜都卖&…

ETF大小盘轮动策略回测分析

从前面的ETF基金定投策略回测和周内效应分析文章中可以看到&#xff0c;代表大盘指数的沪深300ETF基金510300和代表小盘的创业板ETF基金159915的收益在长期来看差别较大。但是单独定投小盘指数收益高&#xff0c;但是回撤比较大&#xff1b;单独定投大盘指数回撤也不小&#xf…

量化基金 获取基金持仓情况;获取优秀基金人气组合持仓基金情况

通过点击显示全部ajax接口加载获取数据 import requests import re from lxml import etree import csvdef get_stock_lists(id):url2 f"https://fundf10.eastmoney.com/FundArchivesDatas.aspx?typejjcc&code{id}&topline10&year2021&month3&rt0…

TensoRT量化第四课:PTQ与QAT

目录 PTQ与QAT注意事项一、2023/5/8更新二、2023/5/12更新前言1. TensorRT量化2. PTQ3. QAT4. QAT实战4.1 环境配置4.2 pytorch_quantization简单示例4.3 自动插入QDQ节点4.4 手动插入QDQ节点4.5 自定义层量化4.6 官方案例 总结 PTQ与QAT 注意事项 一、2023/5/8更新 新增手动…

Vicuna-13B量化模型单GPU可跑

链接在这&#xff08;需要科学上网&#xff09; Vicuna-13B: Best Free ChatGPT Alternative According to GPT-4 &#x1f92f; | Tutorial (GPU) 有人在B站转了人家的视频 ChatGPT&#xff1a;在你的本地电脑上运行Vicuna-13B &#x1f92f;|教程 (GPU) 下面就是部署的步骤…

“Hey Siri” 背后的黑科技大揭秘!

作者 | Vishant Batta 译者 | 苏本如&#xff0c;责编 | 伍杏玲 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 以下是译文&#xff1a; 如今苹果手机可随时检测并回答“Hey Siri”命令&#xff0c;有人可能会想&#xff0c;它是不是在随时记录我们的日常生活对…

ChatGLM-RM(Reward Model)实现代码逐行讲解

这里我们尝试通过RM训练让模型学会从给定上下文中提取信息&#xff0c;来进行RM模型的实践。你可以从下面链接获取代码 GitHub - Pillars-Creation/ChatGLM-RLHF-LoRA-RM: ChatGLM-6B添加了RLHF的实现&#xff0c;以及部分核心代码的逐行讲解 ,实例部分是做了个新闻短标题的生成…

wochao!chatgpt 真的可以提高我的工作效率!

正确使用指南&#xff1a; https://www.explainthis.io/zh-hant/chatgpt/guidehttps://github.com/PlexPt/awesome-chatgpt-prompts-zh/

小马识途谈如何借助chatGPT提升工作效率

ChatGPT这么聪明会不会大家都要失业了&#xff1f;不用担心&#xff01;ChatGPT不是跟人来抢饭碗的&#xff0c;是来帮助人提升工作效率的&#xff0c;当然也可以是一个很好的学习工具&#xff0c;小马识途营销顾问认为网络营销从业者可以利用它快速提升自己的能力。 1. 学习新…

优思学院|质量人如何利用ChatGPT提升工作效率?

在许多人知道怎么用ChatGPT之后&#xff0c;不少人开始思考如何利用这个工具来提升自己的工作效率。 质量人也不例外&#xff0c;在质量管理中&#xff0c;有许多重复的任务需要人手去完成。这些任务可能包括检查文档、审查流程、跟踪错误等。这些任务既耗费时间&#xff0c;又…

比起“一键脱衣”,这种 AI 技术更可怕

随着科技的发展&#xff0c;现在出现了许多高科技产品&#xff0c;比如 AI、ChatGPT 等等。 可以说 AI 颠覆了我们的认知&#xff0c;因为许多事情我们都可以交给人工智能去做&#xff0c;比如写程序、写论文、写PPT、绘图等等&#xff5e; 目前我们打开一些软件后&#xff0c;…