准备

SDK下载

首先在极验官网下载好SDK,附上官网链接点此可直接下载python版zip包。

模块安装

使用该SDK时发现它依赖两个模块,分别是geetest和requests。

pip install geetest
pip install requests

使用

我这里是在Django环境下测试。

登录页

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>登陆</title>
     <!-- 为使用方便,直接使用jquery.js库,如您代码中不需要,可以去掉 -->
     <script src="http://code.jquery.com/jquery-1.12.3.min.js"></script>
     <!-- 引入封装了failback的接口--initGeetest -->
     <script src="http://static.geetest.com/static/tools/gt.js"></script>
 </head>
 <body>

 <div class="popup">
     <br>
     <p>
         <labe>用户名:</labe>
         <input id="username1" class="inp" type="text" value="admin">
     </p>
     <br>
     <p>
         <label>密&nbsp;&nbsp;&nbsp;&nbsp;码:</label>
         <input id="password1" class="inp" type="password" value="123">
     </p>

     <br>
     <input class="btn" id="popup-submit" type="submit" value="提交">

     <div id="popup-captcha"></div>
 </div>

 <script>
     var handlerPopup = function (captchaObj) {
         // 成功的回调
         captchaObj.onSuccess(function () {
             var validate = captchaObj.getValidate();
             $.ajax({
                 url: "/login/", // 进行二次验证
                 type: "post",
                 dataType: "json",
                 data: {
                     username: $('#username1').val(),
                     password: $('#password1').val(),
                     geetest_challenge: validate.geetest_challenge,
                     geetest_validate: validate.geetest_validate,
                     geetest_seccode: validate.geetest_seccode
                 },
                 success: function (data) {
                     alert(data.msg)
                 }
             });
         });
         $("#popup-submit").click(function () {
             captchaObj.show();
         });
         // 将验证码加到id为captcha的元素里
         captchaObj.appendTo("#popup-captcha");
         // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
     };
     // 验证开始需要向网站主后台获取id,challenge,success(是否启用failback)
     $.ajax({
         url: "/getcaptcha?t=" + (new Date()).getTime(), // 加随机数防止缓存
         type: "get",
         dataType: "json",
         success: function (data) {
             // 使用initGeetest接口
             // 参数1:配置参数
             // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
             initGeetest({
                 gt: data.gt,
                 challenge: data.challenge,
                 product: "popup", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
                 offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
                 // 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config
             }, handlerPopup);
         }
     });
 </script>
 </body>
 </html>

/templates/login.html

注意:需要引入以下js:

<script src="http://code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="http://static.geetest.com/static/tools/gt.js"></script>

相应接口

 from django.shortcuts import render, HttpResponse
 from django.http import JsonResponse
 from geetest import GeetestLib

 pc_geetest_id = "b46d1900d0a894591916ea94ea91bd2c"
 pc_geetest_key = "36fc3fe98530eea08dfc6ce76e3d24c4"

 def getcaptcha(request):
     user_id = 'test'
     gt = GeetestLib(pc_geetest_id, pc_geetest_key)
     status = gt.pre_process(user_id)
     request.session[gt.GT_STATUS_SESSION_KEY] = status
     request.session["user_id"] = user_id
     response_str = gt.get_response_str()
     return HttpResponse(response_str)

 # Create your views here.
 def login(request):
     if request.method == "POST":
         gt = GeetestLib(pc_geetest_id, pc_geetest_key)
         challenge = request.POST.get(gt.FN_CHALLENGE, '')
         validate = request.POST.get(gt.FN_VALIDATE, '')
         seccode = request.POST.get(gt.FN_SECCODE, '')
         status = request.session[gt.GT_STATUS_SESSION_KEY]
         user_id = request.session["user_id"]
         if status:
             result = gt.success_validate(challenge, validate, seccode, user_id)
         else:
             result = gt.failback_validate(challenge, validate, seccode)

         username = request.POST.get('username')
         password = request.POST.get('password')
         if result:
             # 验证成功
             ':
                 result = {'status': 0, 'msg': "登录成功"}
             else:
                 result = {'status': 1, 'msg': "用户名或密码错误"}
         else:
             result = {'status': 2, 'msg': "验证失败"}
         return JsonResponse(result)
     return render(request, 'login.html')

 views.py

views.py

运行

配置好路由,运行。访问localhost:8000/login/,点击提交。效果如下图:

选字验证码

在我测试C#版Demo的时候发现它的验证码是选字验证码,最后发现只要把C#版Demo中的id和key替换上述views.py中的5、6行的id和key,页面就是选字验证码。id和key如下:

pc_geetest_id = "48a6ebac4ebc6642d68c217fca33eb4d"
pc_geetest_key = "4f1c085290bec5afdc54df73535fc361"

如下图:

完整示例下载

点此下载完整示例

极验验证使用-滑动&选字验证码的更多相关文章

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

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

  2. GeeTest 极验验证

    前台Html页面 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> ...

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

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

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

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

  5. python+selenium破解极验验证登录

    1.前言: 目前很多网站会在正常的账号密码认证之外加一些验证码,以此来明确区分人/机行为,最典型的就是极验滑动验证.(如下图) 这里我们以简单实例说明如何实现自动校验类似验证. 2.步骤: 1)点击验 ...

  6. luffy之多条件登录与极验滑动验证码

    多条件登录 JWT扩展的登录视图,在收到用户名与密码时,也是调用Django的认证系统中提供的authenticate()来检查用户名与密码是否正确. 我们可以通过修改Django认证系统的认证后端( ...

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

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

  8. 对极验geetest滑块验证码图片还原算法的研究

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  9. 【原创】Python 极验滑块验证

    本文仅供学习交流使用,如侵立删! 记一次 极验滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.seleniumwire 分析 最近在做的一个项目登录时会触发 ...

随机推荐

  1. Spring 事务 readOnly 到底是怎么回事?

    Spring的事务经常会有这样的配置: 1 <tx:method name="search*" read-only="true" /> 或者这样的注 ...

  2. Python定期删除文件、整理文件夹

    1.根据传入的参数,文件所在目录,匹配文件的正则表达式,过期天数进行删除,这些可写在配置文件del_file.conf. del_file3.py #!/usr/bin/env python # en ...

  3. 一对一voip,直播连麦,在线会议,兼容webrtc,IM音视频

    功能 IM消息系统 一对一 高清音视频实时通信,可无缝切换P2P传输,节省服务器带宽 一对多互动直播 多对多在线会议 手机实时录屏传输 高度定制化 网络检测,动态码率与动态帧率,抗网络抖动,微信级效果 ...

  4. 利用Navicate把SQLServer转MYSQL的方法(连数据)

    中文乱码问题:https://pqcc.iteye.com/blog/661640 本次转换需要依赖使用工具Navicat Premium. 首先,将数据库移至本地SQLServer,我试过直接在局域 ...

  5. linux配置 数据库主从同步

    数据库的读写分离能很大程度上减轻数据库的压力,读写分离的前提就是主从数据同步,然后在主库做增删改,从库做查询. 例如: 主库:192.168.0.1 从库:192.168.0.2 两个数据库都安装了M ...

  6. Ubuntu命令行快捷启动Matlab

    转载:https://blog.csdn.net/striker_v/article/details/52884485 Matlab R2015b默认安装目录/usr/local/MATLAB/R20 ...

  7. Spring-Cloud-Config学习笔记(一):使用本地存储

    简介 Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以为所有环境中的应用程序管理其外部属性.它非常适合spring应用,也可 ...

  8. 给你的app添加桌面widget

    首先,什么是桌面widget,桌面widget是一种桌面插件,如下图: 这种类型的控件叫做widget,一般长按桌面会弹出一个界面让你选择控件,选择完了拖到桌面就能使用了. 下面我们为这个app来添加 ...

  9. 蜕变成蝶~Linux设备驱动中的阻塞和非阻塞I/O

    今天意外收到一个消息,真是惊呆我了,博客轩给我发了信息,说是俺的博客文章有特色可以出本书,,这简直让我受宠若惊,俺只是个大三的技术宅,写的博客也是自己所学的一些见解和在网上看到我一些博文以及帖子里综合 ...

  10. Docker-集群swarm(5)

     Docker集群的概念 群集是一组运行Docker并加入集群的计算机.在此之后,您继续运行您习惯使用的Docker命令,但现在它们由群集管理器在群集上执行.群中的机器可以是物理的或虚拟的.加入群组后 ...