1 如何引用第三方滑动验证码

参考:极验科技:https://docs.geetest.com/install/deploy/server/python

1 安装requests

  pip install requests

2 拷贝你在网站上下载好的软件包下面的sdk下面的geetest文件到你的项目utils目录下面

3 拷贝代码到views.py

from utils.geetest import GeetestLib # 导入滑动验证码的模块
#请在官网申请ID使用,示例ID不可使用
pc_geetest_id = "b46d1900d0a894591916ea94ea91bd2c"
pc_geetest_key = "36fc3fe98530eea08dfc6ce76e3d24c4"

#pcgetcaptcha就是初始化(API1),获取流水标识并设置状态码

def pcgetcaptcha(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)

4 把二次验证的ap12放到登录函数的里面

 1 class LoginView(views.View):
 2     def get(self, request):
 3         return render(request, "login.html")
 4
 5     def post(self, request):
 6         next_url = request.GET.get("next","/index/")
 7         username = request.POST.get("username")
 8         pwd = request.POST.get("password")
 9         # v_code=request.POST.get("vcode","").upper()  #如果用户不写验证码就是空
10         # 滑动验证码开始
11         gt = GeetestLib(pc_geetest_id, pc_geetest_key)
12         challenge = request.POST.get(gt.FN_CHALLENGE, ‘‘)
13         validate = request.POST.get(gt.FN_VALIDATE, ‘‘)
14         seccode = request.POST.get(gt.FN_SECCODE, ‘‘)
15         status = request.session[gt.GT_STATUS_SESSION_KEY]
16         user_id = request.session["user_id"]
17         if status:
18             result = gt.success_validate(challenge, validate, seccode, user_id)
19         else:
20             result = gt.failback_validate(challenge, validate, seccode)
21             #滑动验证码结束
22
23
24         # if v_code==request.session.get("v_code"):
25         if result:
26
27             user_obj = auth.authenticate(username=username, password=pwd)
28             if user_obj:
29                 auth.login(request, user_obj)  # auth认证登录
30                 return redirect(next_url)
31             else:
32                 return render(request, "login.html", {"error_msg": "用户名或密码错误"})
33         else:
34             return render(request, "login.html", {"error_msg": "验证码错误"})

5  urls里面添加url

这个路径是上面api1的路径
url(r‘^ooxx/$‘, views.pcgetcaptcha),

6 修改login登录页面代码

<script src="/static/plugins/jquery-3.3.1.min.js"></script>
{#<script src="/static/js/login.js"></script>#}
<!-- 引入封装了failback的接口--initGeetest -->
<script src="http://static.geetest.com/static/tools/gt.js"></script>
<!--滑动验证码的ajax操作-->
<script>
    var handlerEmbed = function (captchaObj) {
        $("#login-button").click(function (e) {
            var validate = captchaObj.getValidate();
            if (!validate) {
                $("#notice")[0].className = "show";
                setTimeout(function () {
                    $("#notice")[0].className = "hide";
                }, 2000);
                e.preventDefault();
            }
        });
        // 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode
        captchaObj.appendTo("#embed-captcha");
        captchaObj.onReady(function () {
            $("#wait")[0].className = "hide";
        });
        // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
    };
    $.ajax({
        // 获取id,challenge,success(是否启用failback)
        url: "/ooxx/?t=" + (new Date()).getTime(), // 加随机数防止缓存
        type: "get",
        dataType: "json",
        success: function (data) {
            // 使用initGeetest接口
            // 参数1:配置参数
            // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                product: "embed", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
                offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
                // 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config
            }, handlerEmbed);
        }
    });
</script>

7 修改存放验证码的div的id和button按钮的id,都要跟上面的js里面的一致

         <div class="form-group" id="embed-captcha">
                    <p id="wait" class="show">正在加载验证码......</p>
                    <p id="notice" class="hide">请先拖动验证码到相应位置</p>

          </div>

button按钮增加一个id名字跟上面的一致
<button type="submit" class="btn btn-success" id="login-button">登陆</button>

原文地址:https://www.cnblogs.com/huningfei/p/9692501.html

时间: 2024-08-02 04:59:52

1 如何引用第三方滑动验证码的相关文章

selenium处理极验滑动验证码

要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题https://www.zhihu.com/question/28833985,我按照这思路去大概实现了一下. 1.使用htmlunit(这种方式我没成功,模拟鼠标拖拽后轨迹没生成,可以跳过) 我用的是java,我首先先想到了用直接用htmlunit,我做了点初始化 private void initWebClient() { if (webClient != null) { return; } we

DOS环境下含包并引用第三方jar的java程序的编译及运行

DOS环境下含包并引用第三方jar的java程序的编译及运行 1.程序目录机构 bin:class文件生成目录 lib:第三方jar包目录 src:源程序文件目录 2.程序代码: 3.程序编译 javac –classpath .;..\lib\commons-lang-2.3.jar -d ..\bin com\Test.java 4.编译后的程序目录: 5.运行程序及结果显示 java -classpath .;..\lib\commons-lang-2.3.jar com.Test

淘宝滑动验证码研究

引言 悠闲的时候,总会去找些事做做.前些天在登录淘宝的时候,发现了滑动验证码,虽然已经不是什么新事物,但还是产生了很大的兴趣. 传统的字符输入验证码,变为了滑动验证码,这一看就是产品大师的手笔啊,不知道申请专利没有. 这种“情感化”的验证码设计,可破解度高不高呢?如果是可破解度高,那就真是验证码的一次革命变新了.还是让我先了解一下滑动验证码的资料吧! 没有Google就百度,搜一搜,让我很震惊,一般搜技术的东西,大多数来源于csdn,blogs.cn,更牛批一点的是来源于stackoverflo

IOS 编程中引用第三方的方类库的方法及常见问题(转载)

//原文:http://www.th7.cn/Program/IOS/201407/244585.shtml 方法一:直接复制所有源文件到项目中 这种方法就是把第三方类库的所有源文件复制到项目中,直接把所有.h和.m文件拖到XCode项目中即可. 注意: 1. 如果第三方类库引用了一些系统自带类库,那么在项目中还需要额外引用那些类库. 2. 如果当前的项目启用了ARC,而引用的第三方类库未使用ARC,那还需要在项目信息的Targets – Build Parses 里找到第三方类库的.m文件,并

如何在制作jar包时引用第三方jar包

我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利用好压打开jar包,果然如此.里面只有一行 Manifest-Version: 1.0 需添加Main-Class.在本例中,添加如下: Main-Class: com.luoluo.TestUse.activemq.ActiveMQStateMain 上面,有几点需要注意: 1. Main-Cla

引用第三方框架 不支持ARC

我们会常常遇到一个问题就是引用第三方框架之后发现不支持内存的自己主动处理(ARC) 我们须要这样来操作: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDEyMzIwOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 在文本框中输入-fno-objc-arc 就可以: 如今我们的第三方文件就能用了 . 也许还有点小错误,我在

mapreduce引用第三方jar

要想让mapreduce程序引用第三方jar文件, 可以采用如下方式: 通过命令行参数传递jar文件, 如-libjars等; 直接在conf中设置, 如conf.set(“tmpjars”,*.jar), jar文件用逗号隔开; 利用分布式缓存, 如DistributedCache.addArchiveToClassPath(path, job), 此处的path必须是hdfs, 即自己讲jar上传到hdfs上, 然后将路径加入到分布式缓存中; 第三方jar文件和自己的程序打包到一个jar文件

滑动验证码

自己研究: jQuery拖拽滑动验证码插件 slideunlock.js 原理:(别人说) 响应时间,拖拽速度,时间,位置,轨迹,重试次数等.这些因素能够构成一个采样结果或者辨识特性. 只获取到滑动时间,滑动的长度. 效果: html页面 <link href="css/slide-unlock.css" rel="stylesheet"> <script type="text/javascript" src="js/

IOS 编程中引用第三方的方类库的方法及常见问题

方法一:直接复制所有源文件到项目中 这种方法就是把第三方类库的所有源文件复制到项目中,直接把所有.h和.m文件拖到XCode项目中即可. 注意: 1. 如果第三方类库引用了一些系统自带类库,那么在项目中还需要额外引用那些类库. 2. 如果当前的项目启用了ARC,而引用的第三方类库未使用ARC,那还需要在项目信息的Targets – Build Parses 里找到第三方类库的.m文件,并为它们加上-fno-objc-arc标记. 3. 对于在未启用ARC的项目用引用使用了ARC的第三方类库,则需