在AspNetCore中使用极验做行为认证
先上效果图
极验的流程
极验官方文档地址 https://docs.geetest.com/install/deploy/server/csharp
简单说明一下极验的验证流程
引用官方的图片
- 向服务器发送请求获取验证参数
- 客户端sdk完成验证
- 由客户端sdk验证数据提交服务器二次验证
在netcore中使用极验
在我查看官方的sdk过后,发现不是特别好用,根据极验的流程写了一套适用于netcore的极验sdk 开源地址 已经发了nuget包 搜索sharpplug.geetest
即可
使用方式很简单,下面通过一个例子来进行讲解
使用命令dotnet new mvc
创建一个mvc项目
下一步使用命令dotnet add package sharpplug.geetest
安装nuget包
打开startup文件在ConfigureServices中配置geetest服务
我在极验申请了一个测试用的id和key 大家可以直接测试使用
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
// GeetestOptions中配置id 与 key
services.AddGeetest(opt=>{
opt.Id = "e2697c763685a34be93a7d255ee06b59";
opt.Key = "7882a2d954106041a731f5e10038982a";
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
完成获取验证参数与二次验证的类是GeetestManager,它主要有两个方法
获取验证参数方法是Register,它主要有三个参数 userid(用户标识) clientType(客户端类型) 与 ipaddress(客户端ip) 关于参数的细节大家可以去参阅极验文档
Task<GeeTestRegisterResult> Register(string userId = null, string clientType = "unknown", string ipAddress = "unknown")
二次验证方法 Validate 参数为
- offline 是否离线验证(获取验证参数失败时)
- UserId 用户标识
- Challenge
- Seccode
- Validate
Task<bool> Validate(GeetestValidateInput input)
下面打开HomeController添加获取验证参数方法,记得注入GeetestManager
private readonly GeetestManager _geetestManager;
public HomeController(GeetestManager geetestManager)
{
_geetestManager = geetestManager;
}
public async Task<GeeTestRegisterResult> GeetestRegister()
{
return await _geetestManager.Register(clientType: "web", ipAddress: "127.0.0.1");
}
下面在HomeController中加入二次验证
public async Task<bool> GeetestValidate(GeetestValidateInput input)
{
return await _geetestManager.Validate(input);
}
服务端部分已经完成,下面打开index.cshtml先引用gt.js
<script type="text/javascript" src="https://static.geetest.com/static/tools/gt.js"></script>
然后添加html元素
<h2>Getest</h2>
<div id="geetestform">
<input type="hidden" name="geetest_challenge" id="geetest_challenge">
<input type="hidden" name="geetest_validate" id="geetest_validate">
<input type="hidden" name="geetest_seccode" id="geetest_seccode">
</div>
<button class="form-control btn-default" id="validate">点我验证</button>
极验有一个初始化的过程,先调用获取验证参数api进行初始化极验
$(function() {
$.ajax({
url: "/home/GeetestRegister",
type: "get",
dataType: "json",
success: function(data) {
// 使用offline判断是否是离线验证
offline = !data.success;
initGeetest({
// 以下配置参数来自服务端 SDK
gt: data.gt,
challenge: data.challenge,
offline: !data.success,
new_captcha: true,
product: "float",
width: "100%"
},function(){
// 初始化元素
captchaObj.appendTo(document.getElementById('geetestform'));
})
}
});
});
这时运行项目已经可以看到极验的验证表单了并且已经可以进行验证,但是还需要添加点击按钮事件进行二次验证
$("#validate").click(() => {
var validate = captchaObj.getValidate();
if (validate === undefined || !validate) {
alert("请进行验证");
return;
}
$.ajax({
url: "/home/GeetestValidate",
method:"post",
data: {
offline: offline,
challenge: validate.geetest_challenge,
validate: validate.geetest_validate,
seccode: validate.geetest_seccode
},
success: function(res) {
if (res) {
alert("二次校验状态成功! 重置验证状态");
captchaObj.reset();
} else {
alert("二次校验状态返回失败! 重置验证状态");
captchaObj.reset();
}
}
});
});
这时功能已经全部完成了,大家可以运行项目查看效果了,关于gt.js的更多用法可以参阅极验的官方文档
在AspNetCore中使用极验做行为认证的更多相关文章
- vue中使用极验验证码(附demo)
前言: vue中使用极验验证码,最好是在页面渲染的时候(mounted)进行验证码的初始化,然后在初始化回调中绑定触发弹出验证码的事件.这样在点击按钮或者进行特定操作时能够快速的弹出验证码. 关键代码 ...
- 在ASP.NET MVC项目中使用极验验证(geetest)
时间 2016-03-02 18:22:37 smallerpig 原文 http://www.smallerpig.com/979.html 主题 ASP.NET MVC geetest开发体 ...
- Django中使用极验Geetest滑动验证码
一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...
- selenium处理极验滑动验证码
要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题https://www.zhihu.com/question/28833985,我按照这思路去大概实现了 ...
- Geetest 极验验证 验证图片拼图
今天要求做一个跟魅族官网登陆的一个验证效果一样的界面 是一个拖动滑动图片进行拼图 那个效果看着很好,刚开始拿到不知道好不好做 从网上搜资料发现这是一种“极验验证码” 让用户通过滑动拼图来进行验证. 网 ...
- 极验3.0滑动拼图验证的使用--java
[ 前言: 在登录其他网站的时候,看到有个滑动拼图的验证觉得挺好玩的,以前做一个图片验证的小demo,现在发现很多网站都开始流行滑动拼图的验证了,今天也想自己动手来弄一个. 废话不多说,开始撸起来! ...
- 极验验证使用-滑动&选字验证码
准备 SDK下载 首先在极验官网下载好SDK,附上官网链接,点此可直接下载python版zip包. 模块安装 使用该SDK时发现它依赖两个模块,分别是geetest和requests. pip ins ...
- 极验(Geetest) Laravel 5 集成开发包,让验证更安全
简述 在网站开发中使用频率最高的工具之一便是验证码,验证码在此也是多种多样,不过简单的图片验证码已经可以被机器识别,极验验证码提供了一个安全可靠的滑动验证码体系,让网站开发更加安全. 先感受一下这种验 ...
- 破解b站极验验证码
这就是极验验证码,通过拖动滑块移动拼图来验证.我们观察到点击滑块时拼图才会出现,所以我们可以在点击滑块之前截取图像,点击滑块再截取一次图像,将前后两次图像做比较就可以找到图片改动的位置.获得位置后,我 ...
随机推荐
- 读《31天学会CRM项目开发》记录4 - WEB服务配置
好几天没有更新记录了,因为最近都在看本书的基础内容,然后跟着练习.等看到数据库部分,就晕菜了,只能草草浏览一遍,想在后面的实战中再加强. 下面是对IIS 和ASP.NET的配置! 一.什么是IIS? ...
- TCP(控制传输协议)详解
1.传输层概述 在OSI参考模型中,网络层是面向通信的最高层但同时也是面向用户程序的最底层. 传输层的主要作用: 复用:在发送端,多个应用程序公用一个传输层: 分用:在接收端,传输层把从网络层接收到的 ...
- python d:\test.py File "<stdin>", line 1 python d:\test.py ^ SyntaxError: invalid syntax
pyhton出错: python d:\test.py File "<stdin>", line 1 python d:\test.py ^SyntaxError: i ...
- 201771010126 王燕《面向对象程序设计(Java)》第十六周学习总结
实验十六 线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: ‐多线程 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. ...
- R语言S3类的理解与构建
R语言类 R语言的类有S3类和S4类,S3类用的比较广,创建简单粗糙但是灵活,而S4类比较精细,具有跟C++一样严格的结构.这里我们主要讲S3类. S3类的结构 S3类内部是一个list,append ...
- Spring Security中html页面设置hasRole无效的问题
Spring Security中html页面设置hasRole无效的问题 一.前言 学了几天的spring Security,偶然发现的hasRole和hasAnyAuthority的区别.当然,可能 ...
- ssh网上商城源码
本人承诺源码免费,只是出于前期发布很多免费资源反而落不到好下场,总是被一些人说三道四.就算你去找到资源版本不符合你也运行不起来.如果想要资源加QQ1397617269,或者电话短信1395630164 ...
- python处理参数的getopt的使用
在写脚本程序的时候需要添加一些额外的参数来实现脚本的附加功能或者增强功能,通常的做法是同sys.argv[i]直接来获取参数的值,但是这个比较局限,要求参数的输入一定要按照顺序. fileName = ...
- python从入门到实践-8章函数
#!/user/bin/env python# -*- coding:utf-8 -*- # 给形参指定默认值时,等号两边不要有空格 def function_name("parameter ...
- MySQL 5.7 安装指南
1.下载1)进⼊入官⽹网下载5.7.23压缩包 下载地址:https://dev.mysql.com/downloads/mysql /5.7.html#downloads 2.安装与配置 1)将下载 ...