在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站极验验证码
这就是极验验证码,通过拖动滑块移动拼图来验证.我们观察到点击滑块时拼图才会出现,所以我们可以在点击滑块之前截取图像,点击滑块再截取一次图像,将前后两次图像做比较就可以找到图片改动的位置.获得位置后,我 ...
随机推荐
- 【转】Mac 删除文件夹里所有的.svn文件
转自: mac 删除文件夹里所有的.svn文件 想要把SVN專案作轉移或複製時 舊的「.svn」真的是很煩人的東西 最快的方式是用終端機輸入 sudo find /Users/justfly/Do ...
- [R]R包版本更迭【持续更新】
由于R版本更迭,网上或旧的教材上的包可能没有在维护,或者被其他包替代. 做一个表记录碰到的一些替代方案.个人向,非完整指南. * mvpart 2014年之后不再更新,R 3.0版本后无法安装, 提示 ...
- vscode设置中文语言
https://jingyan.baidu.com/article/7e44095377c9d12fc1e2ef5b.html
- python学习笔记(6)
第6章 组合数据类型 组合类型的三种表达形式:集合.序列.字典 集合类型及操作 定义:集合是多个元素的无序组合 集合类型与数学中的集合概念一致 集合元素之间无序,每个元素唯一,不存在相同元素 集合元素 ...
- vue的环境安装(二)
1.安装淘宝镜像 打开命令行,输入以下命令:npm install -g cnpm --registry= https://registry.npm.taobao.org2.全局安装 vue- ...
- C++ struct结构体定义构造函数和析构函数,构造函数参数从VS2017平台转换到Qt5平台下构建出错,采用字符集转换函数将string类型转换为wstring,构建仍然出错!
调试win硬件驱动,需要利用VS编译的win驱动构建自己的Qt5GUI程序: 其中部分win驱动源码如下 device_file::device_file(const std::string& ...
- java课程之团队开发冲刺阶段1.2
一.总结昨天进度 1.三个任务都已经实现 2.使用时间:四个小时左右 二.遇到的困难 1.对Android原生的侧拉任务栏不了解,导致使用的时候出现了一部分问题 三.今天任务规划 1.对之前的程序重新 ...
- EDI
EDI, Electronic Data Interchange,电子数据交换 EDI 商务是指将商业或行政事务按一个公认的标准,形成结构化的事务处理或文档数据格式,从计算机到计算机的电子传输方法.简 ...
- Live2D插件--漂浮的二次元小姐姐
这个插件找了很久,都没找到,今天偶然翻到一个小哥的博客发现了这个,果断偷走. 教程转自简书:https://www.jianshu.com/p/1cedcf183633 还有这些,你可能有用 修改位置 ...
- [编译] 5、在Linux下搭建安卓APP的开发烧写环境(makefile版)—— 在Linux上用命令行+VIM开发安卓APP
星期三, 19. 九月 2018 02:19上午 - BEAUTIFULZZZZ 0)前言 本文不讨论用IDE和文本编辑器开发的优劣,是基于以下两点考虑去尝试用命令行编译安卓APP的: 了解安卓APP ...