博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码
阅读量:5061 次
发布时间:2019-06-12

本文共 2355 字,大约阅读时间需要 7 分钟。

Image result for reCAPTCHA v3

写在前面

友情提示:

Google reCAPTCHA(v3下同) 的使用不需要“梯子”,但申请账号的时候需要!

Google reCAPTCHA 的使用不需要“梯子”,但申请账号的时候需要!

Google reCAPTCHA 的使用不需要“梯子”,但申请账号的时候需要!

那天上班路上刷博客园,看到大佬的手痒不已,回家立马抽空自己也写了一遍(基本上抄晓晨大佬的),趁周末写个文,挥发下余温;(然而今天晚上下班才匆忙收尾。。。)

日常所见各类奇葩验证码

这个太有名了,必须前排

1555769673891

京东的

1555769755756

中文的:

1555769838576

丧心病狂的:

1555769913750

面对这堆无力吐槽的验证码,降低用户体验不说,也提高了开发成本;

很多现在很多公司验证码是用了第三方的,、等等。

也有很多公司的验证码(人机识别)模块是自己做的,有的甚至做了几套,还有更甚的甚至用上了理解图卷积算法,堪称丧心病狂;

但现在爬虫横行,恶意爬取数据,大量肉鸡爬取几乎等于dos攻击等,这算轻的;稍有不慎,暴力破解、数据泄露等安全问题也着实严峻;

so,如果现在说,有人帮你搞定这些(人机识别),让你的登录页面清清爽爽,没有验证码,你想不想爽一把。

我看你也跟我一样,定抵不住这这妖艳货色婀娜的身姿;

Google.reCAPTCHA(v3)

本文讲的reCAPTCHA都是v3,下同;

官方文档: 英文好的自己看看;

一句带过:reCAPTCHA 会以嵌入js的方式,给网站后台返回一个分数,这个分数是用于判断用户是否是机器人,分数的范围是0~1,分数约接近0,越像机器人;

顺便提一句,reCAPTCHA 这妖艳货色是免费的哦!

申请Google.reCAPTCHA接入权限

注册站点:

这里很简单啦,照着我的图瞎点就行了;

1555603088777

点提交之后,得到:

这两个kes是配置用的,作用页面也说清楚了;

1555603128328

很简单,ok,接下来看看怎么在.net core站点中使用;

继承入Asp.net Core中

1、创建项目

1555603893270

2、引用程序包

install-package Unicorn.reCAPTCHA.AspNetCore

这个包是晓晨大佬改过的(我也不知道改了什么[捂脸]),就先用它

不想用这个的,可以用

3、写个简单的登录页

AccountViewModel

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

后端:

public IActionResult Login()        {            return View();        }        [HttpPost]        public async Task
Login(AccountViewModel model) { if (ModelState.IsValid) { var recaptchaReault = await _recaptcha.Validate(model.GoogleToken); if (!recaptchaReault.success || recaptchaReault.score < 0.08m) { ModelState.AddModelError(string.Empty, "老实说,你是不是机器人!"); } else { ModelState.AddModelError(string.Empty, "登录成功~"); } } return View(model); }

前端:

 

appsettings.json

{  "RecaptchaSettings": {    "SiteKey": "刚刚申请的SiteKey",    "SecretKey": "刚刚申请的SecretKey",    "Version": "v3",    "Domain": "www.recaptcha.net"  }}

Startup

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

4、简单测试

我们先把这里改成这样

1555772858463

然后调试会得到:

12

我还放到了对外地址上,大家有空可以点来玩玩(但提交不要点太快哦,js异步加载token太快会报错)

哦,对了,还有一个坑,就是你点登录按钮后点浏览器的返回按钮,再点登录,这个时候百分百识别为机器人,线上用的时候要注意这个问题

总结

以后做有人机验证需求的登录页面,多了个选择,后面多玩下,自己试着用爬虫摸一下这个页面什么的,可靠的话我就投入生产了;

(也没写什么新内容,大部分是看晓晨大佬那篇博客自己实现了一遍)

参考

转载于:https://www.cnblogs.com/xiaxiaolu/p/10753583.html

你可能感兴趣的文章
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
linux基础-命令
查看>>
java对象的深浅克隆
查看>>
Hadoop流程---从tpch到hive
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
V2019 Super DSP3 Odometer Correction Vehicle List
查看>>
Python 3.X 练习集100题 05
查看>>
今时不同往日:VS2010十大绝技让VS6叹服
查看>>
设计器 和后台代码的转换 快捷键
查看>>
在线视频播放软件
查看>>
用代码生成器生成的DAL数据访问操作类 基本满足需求了
查看>>
28初识线程
查看>>
Monkey测试结果分析
查看>>
Sublime Text 3 设置
查看>>
浅谈C++底层机制
查看>>