准备

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. Atitit 分布式管理 vs 集中式管理

    Atitit 分布式管理 vs 集中式管理 1. 集中式管理缺点 1 1.1. 单点故障 1 1.2. 没有灵活性 1 1.3. 打败vs 征服 参考 尼可罗·马基雅弗利编著的<君主论> ...

  2. 【转载 Hadoop&Spark 动手实践 2】Hadoop2.7.3 HDFS理论与动手实践

    简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...

  3. input文件上传(上传单个文件/多选文件/文件夹、拖拽上传、分片上传)

    //上传单个/多个文件 <input title="点击选择文件" id="h5Input1" multiple="" accept= ...

  4. 浏览器神器--vimium

    自从学会了正确的坐姿,坐在电脑一整天腰也不酸了.背也不痛了,精神倍棒吃嘛嘛香   zuomeng.png 但奈何使用鼠标久了,手腕.肩膀依旧疼痛.偶尔逛知乎,看到有人推荐chrome浏览器的vimiu ...

  5. Win7 SP1 64位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20180604

    一.系统特色 1.采用微软原版旗舰版定制而成. 2.优化系统服务,关闭一些平时很少使用的服务. 3.精简掉一些无用的东西. 4.系统全程离线制作,不包含任何恶意插件,放心使用. 5.右下角时间加上星期 ...

  6. 【ML入门系列】(三)监督学习和无监督学习

    概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervise ...

  7. Linux下用gSOAP开发Web Service服务端和客户端程序

    网上本有一篇流传甚广的C版本的,我参考来实现,发现有不少问题,现在根据自己的开发经验将其修改,使用无误:另外,补充同样功能的C++版本,我想这个应该更有用,因为能用C++,当然好过受限于C. 1.gS ...

  8. Oracle 10G 安装文档

    Oracle 10G安装指导 1. 解压文件10201_database_win32.zip,并双击解压目录下的setup.exe,出现安装界面,如下: 2. 输入口令和确认口令,如:password ...

  9. Git忽略已经被版本控制的文件(添加.gitignore不会起作用)

    说明:已经被维护起来的文件(需要被远程仓库控制),即使加入.gitignore也会无济于事. .gitignore只对那些只存在在本地,而不在远程仓库的文件起作用.(untraked file). 操 ...

  10. gitlab+jenkins+tomcat CI/CD 部署

    整个项目的框架为: gitlab的安装与使用(Centos7) gitlab的安装 新建yum源 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] nam ...