准备

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. python class和class(object)用法区别

    # -*- coding: utf-8 -*- # 经典类或者旧试类 class A: pass a = A() # 新式类 class B(object): pass b = B() # pytho ...

  2. Windows10下virtualenv配置

    1.安装virtualenv pip install virtualenv 2.选定一个目录,作为存储不同环境的总目录 3.安装virtualenvwrapper-powershell(只适用于Pyt ...

  3. linux c调用 mysql代码

    代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql/ ...

  4. java.exe和javaw.exe的区别

    相同点:二者都是Java的虚拟机,用来执行Java程序 区别: 1. javaw.exe运行程序时不会输出控制台信息 (注:“w”就是window的意思). 使用案例  start.bat(y以下代码 ...

  5. xxl-job安装教程

    xxl-job是一个开源的分布式调度框架,其他类似的框架还有airflow,oozie等等,需要进行对比 https://github.com/xuxueli/xxl-job 1.首先git clon ...

  6. Nginx 反向代理获取设备真实的IP地址

    package com.das.common.util; import org.apache.commons.lang3.StringUtils; import org.springframework ...

  7. python2与python3中除法的区别

    python2中的除法 >>>1/2 0 即一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截除了,只留下了整数部分 有时候,这个功能比较有用,譬如在做一些需要取位数 ...

  8. VS每次F5都重新编译代码,即使没有任何修改

    遇到一个奇怪现象,不知道怎么设置了,突然工程的Release模式下,F5每次都要重新编译代码,而且是全部代码都重新编译 而Debug模式没问题 重启VS,重启机器,清理工程重新生成工程都无法解决 最后 ...

  9. 数据库更新锁WITH UPDLOCK

    今天因为并发的问题,又讨论了一遍.之前以为同时两个线程开启,线程A加了更新锁,线程B没有加,线程A更新后,线程B也会继续下去代码.但是今天测试了一下,原来线程A更新后(解锁),线程B将不会继续,会出现 ...

  10. [git/GitHub] git push 时报错:fatal: remote error: You can't push to git://github.com/user/xxx.git(已解决)

    当使用  git push  时,提示以下错误: fatal: remote error: You can't push to git://github.com/user/xxx.git Use ht ...