先上效果图

极验的流程

极验官方文档地址 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 大家可以直接测试使用

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.Configure<CookiePolicyOptions>(options =>
  4. {
  5. // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  6. options.CheckConsentNeeded = context => true;
  7. options.MinimumSameSitePolicy = SameSiteMode.None;
  8. });
  9. // GeetestOptions中配置id 与 key
  10. services.AddGeetest(opt=>{
  11. opt.Id = "e2697c763685a34be93a7d255ee06b59";
  12. opt.Key = "7882a2d954106041a731f5e10038982a";
  13. });
  14. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
  15. }

完成获取验证参数与二次验证的类是GeetestManager,它主要有两个方法

获取验证参数方法是Register,它主要有三个参数 userid(用户标识) clientType(客户端类型) 与 ipaddress(客户端ip) 关于参数的细节大家可以去参阅极验文档

  1. Task<GeeTestRegisterResult> Register(string userId = null, string clientType = "unknown", string ipAddress = "unknown")

二次验证方法 Validate 参数为

  • offline 是否离线验证(获取验证参数失败时)
  • UserId 用户标识
  • Challenge
  • Seccode
  • Validate
  1. Task<bool> Validate(GeetestValidateInput input)

下面打开HomeController添加获取验证参数方法,记得注入GeetestManager


  1. private readonly GeetestManager _geetestManager;
  2. public HomeController(GeetestManager geetestManager)
  3. {
  4. _geetestManager = geetestManager;
  5. }
  6. public async Task<GeeTestRegisterResult> GeetestRegister()
  7. {
  8. return await _geetestManager.Register(clientType: "web", ipAddress: "127.0.0.1");
  9. }

下面在HomeController中加入二次验证

  1. public async Task<bool> GeetestValidate(GeetestValidateInput input)
  2. {
  3. return await _geetestManager.Validate(input);
  4. }

服务端部分已经完成,下面打开index.cshtml先引用gt.js

<script type="text/javascript" src="https://static.geetest.com/static/tools/gt.js"></script>

然后添加html元素

  1. <h2>Getest</h2>
  2. <div id="geetestform">
  3. <input type="hidden" name="geetest_challenge" id="geetest_challenge">
  4. <input type="hidden" name="geetest_validate" id="geetest_validate">
  5. <input type="hidden" name="geetest_seccode" id="geetest_seccode">
  6. </div>
  7. <button class="form-control btn-default" id="validate">点我验证</button>

极验有一个初始化的过程,先调用获取验证参数api进行初始化极验

  1. $(function() {
  2. $.ajax({
  3. url: "/home/GeetestRegister",
  4. type: "get",
  5. dataType: "json",
  6. success: function(data) {
  7. // 使用offline判断是否是离线验证
  8. offline = !data.success;
  9. initGeetest({
  10. // 以下配置参数来自服务端 SDK
  11. gt: data.gt,
  12. challenge: data.challenge,
  13. offline: !data.success,
  14. new_captcha: true,
  15. product: "float",
  16. width: "100%"
  17. },function(){
  18. // 初始化元素
  19. captchaObj.appendTo(document.getElementById('geetestform'));
  20. })
  21. }
  22. });
  23. });

这时运行项目已经可以看到极验的验证表单了并且已经可以进行验证,但是还需要添加点击按钮事件进行二次验证

  1. $("#validate").click(() => {
  2. var validate = captchaObj.getValidate();
  3. if (validate === undefined || !validate) {
  4. alert("请进行验证");
  5. return;
  6. }
  7. $.ajax({
  8. url: "/home/GeetestValidate",
  9. method:"post",
  10. data: {
  11. offline: offline,
  12. challenge: validate.geetest_challenge,
  13. validate: validate.geetest_validate,
  14. seccode: validate.geetest_seccode
  15. },
  16. success: function(res) {
  17. if (res) {
  18. alert("二次校验状态成功! 重置验证状态");
  19. captchaObj.reset();
  20. } else {
  21. alert("二次校验状态返回失败! 重置验证状态");
  22. captchaObj.reset();
  23. }
  24. }
  25. });
  26. });

这时功能已经全部完成了,大家可以运行项目查看效果了,关于gt.js的更多用法可以参阅极验的官方文档

在AspNetCore中使用极验做行为认证的更多相关文章

  1. vue中使用极验验证码(附demo)

    前言: vue中使用极验验证码,最好是在页面渲染的时候(mounted)进行验证码的初始化,然后在初始化回调中绑定触发弹出验证码的事件.这样在点击按钮或者进行特定操作时能够快速的弹出验证码. 关键代码 ...

  2. 在ASP.NET MVC项目中使用极验验证(geetest)

    时间 2016-03-02 18:22:37 smallerpig 原文  http://www.smallerpig.com/979.html 主题 ASP.NET MVC   geetest开发体 ...

  3. Django中使用极验Geetest滑动验证码

    一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...

  4. selenium处理极验滑动验证码

    要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题https://www.zhihu.com/question/28833985,我按照这思路去大概实现了 ...

  5. Geetest 极验验证 验证图片拼图

    今天要求做一个跟魅族官网登陆的一个验证效果一样的界面 是一个拖动滑动图片进行拼图 那个效果看着很好,刚开始拿到不知道好不好做 从网上搜资料发现这是一种“极验验证码” 让用户通过滑动拼图来进行验证. 网 ...

  6. 极验3.0滑动拼图验证的使用--java

    [ 前言: 在登录其他网站的时候,看到有个滑动拼图的验证觉得挺好玩的,以前做一个图片验证的小demo,现在发现很多网站都开始流行滑动拼图的验证了,今天也想自己动手来弄一个. 废话不多说,开始撸起来! ...

  7. 极验验证使用-滑动&选字验证码

    准备 SDK下载 首先在极验官网下载好SDK,附上官网链接,点此可直接下载python版zip包. 模块安装 使用该SDK时发现它依赖两个模块,分别是geetest和requests. pip ins ...

  8. 极验(Geetest) Laravel 5 集成开发包,让验证更安全

    简述 在网站开发中使用频率最高的工具之一便是验证码,验证码在此也是多种多样,不过简单的图片验证码已经可以被机器识别,极验验证码提供了一个安全可靠的滑动验证码体系,让网站开发更加安全. 先感受一下这种验 ...

  9. 破解b站极验验证码

    这就是极验验证码,通过拖动滑块移动拼图来验证.我们观察到点击滑块时拼图才会出现,所以我们可以在点击滑块之前截取图像,点击滑块再截取一次图像,将前后两次图像做比较就可以找到图片改动的位置.获得位置后,我 ...

随机推荐

  1. WinForm 中 comboBox控件之数据绑定

    一.IList 现在我们直接创建一个List集合,然后绑定 1 IList<string> list = new List<string>(); 2 list.Add(&quo ...

  2. 我的 FPGA 学习历程(11)—— 实验:按键消抖

    按键是一个输入设备,在理论上可以归为开关一类,理想的按键波形如下: 然而由于按键的机械特性,断开和闭合动作是不可能在一瞬间完成的,实际的波形如下: 抖动期间电平处于临界值,由于晶振的频率相当的高,数字 ...

  3. iOS-ERROR ITMS-90086:"missing 64-bit support...解决办法

    BUG描述:Untiy4.7.1导出的iOS工程包,使用Xcode8.3 Application Loader上传ipa包,遇到ERROR ITMS-90086报错 解决办法:查看错误描述确认是没有支 ...

  4. 11-Cookie&Session

    中文文件下载 针对浏览器类型,对文件名字做编码处理 Firefox (Base64) , IE.Chrome ... 使用的是URLEncoder /* * 如果文件的名字带有中文,那么需要对这个文件 ...

  5. oracle之序列用法

    序列用于生成唯一.连续序号的对象序列是可以升序.降序的使用create sequence语句创建序列SQL>CREATE SEQUENCE stu_seq    START WITH 1     ...

  6. oc中的反射机制

    好久没有总结过了,一直在赶项目... 今天来总结一下OC中的反射机制,有什么不对的地方,还请多多海涵. 反射机制,简单的说就是在程序运行期间通过类的名字来动态的获取类的信息,从而实现动态的创建类,以及 ...

  7. MariaDB dos 下连接

    本地 DOS 连接 将文件目录切换到 bin 文件夹下 cd C:\xampp\mysql\bin 输入连接命令 输入 status,查看数据库版本 远程DOS 连接

  8. mysql import error

    mysql导入文件一直出错,显示ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option s ...

  9. Java语法细节 - 内存和枚举

    目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...

  10. 权限系统设计-day02

    练习中的问题: 1,<s:url action="employee_input" />这个标签用来让struts自动生成请求的路径,struts生成的路径是一个全路径, ...