加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

极验滑动验证码

发布时间:2020-12-15 17:17:58 所属栏目:大数据 来源:网络整理
导读:Django中使用滑动验证码 注册账号 极验官方:? 注册好后去申请key和value 下载SDK 从下载 .zip 文件 这是python的,当然也有其他语言的~~ 知道你们懒,还是贴上来吧:? 运行项目 找到demo里面的django_demo文件夹可以直接启动项目看到效果 当然,里面还有flask和t

Django中使用滑动验证码

注册账号

极验官方:?

注册好后去申请key和value

下载SDK

从下载.zip文件

这是python的,当然也有其他语言的~~

知道你们懒,还是贴上来吧:?

运行项目

找到demo里面的django_demo文件夹可以直接启动项目看到效果

当然,里面还有flask和tornado的项目包

geetest django.contrib django.http django.shortcuts request.method == ret = {: 0,: username = request.POST.get(= request.POST.get( gt == request.POST.get(gt.FN_CHALLENGE,= request.POST.get(gt.FN_VALIDATE,= request.POST.get(gt.FN_SECCODE,== request.session[ </span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt; status: result </span>=<span style="color: #000000;"&gt; gt.success_validate(challenge,validate,seccode,user_id) </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;: result </span>=<span style="color: #000000;"&gt; gt.failback_validate(challenge,seccode) </span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt; result: </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; 验证码正确</span> <span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; 利用auth模块做用户名和密码的校验</span> user = auth.authenticate(username=username,password=<span style="color: #000000;"&gt;pwd) </span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt; user: </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; 用户名密码正确</span> <span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; 给用户做登录</span> auth.login(request,user) <span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; 将登录用户赋值给 request.user</span> ret[<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;msg</span><span style="color: #800000;"&gt;"</span>] = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;/index/</span><span style="color: #800000;"&gt;"</span> <span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;: </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; 用户名密码错误</span> ret[<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;status</span><span style="color: #800000;"&gt;"</span>] = 1<span style="color: #000000;"&gt; ret[</span><span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;msg</span><span style="color: #800000;"&gt;"</span>] = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;用户名或密码错误!</span><span style="color: #800000;"&gt;"</span> <span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;: ret[</span><span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;status</span><span style="color: #800000;"&gt;"</span>] = 1<span style="color: #000000;"&gt; ret[</span><span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;msg</span><span style="color: #800000;"&gt;"</span>] = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;验证码错误</span><span style="color: #800000;"&gt;"</span> <span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; JsonResponse(ret) </span><span style="color: #0000ff;"&gt;return</span> render(request,<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;login.html</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

<span style="color: #008000;">#<span style="color: #008000;"> 请在官网申请ID使用,示例ID不可使用
pc_geetest_id = <span style="color: #800000;">"<span style="color: #800000;">b46d1900d0a894591916ea94ea91bd2c<span style="color: #800000;">"<span style="color: #000000;">
pc_geetest_key = <span style="color: #800000;">"<span style="color: #800000;">36fc3fe98530eea08dfc6ce76e3d24c4<span style="color: #800000;">"

<span style="color: #008000;">#<span style="color: #008000;"> 处理极验 获取验证码的视图
<span style="color: #0000ff;">def<span style="color: #000000;"> get_geetest(request):
user_id = <span style="color: #800000;">'<span style="color: #800000;">test<span style="color: #800000;">'<span style="color: #000000;">
gt =<span style="color: #000000;"> GeetestLib(pc_geetest_id,pc_geetest_key)
status =<span style="color: #000000;"> gt.pre_process(user_id)
request.session[gt.GT_STATUS_SESSION_KEY] =<span style="color: #000000;"> status
request.session[<span style="color: #800000;">"<span style="color: #800000;">user_id<span style="color: #800000;">"] =<span style="color: #000000;"> user_id
response_str =<span style="color: #000000;"> gt.get_response_str()
<span style="color: #0000ff;">return HttpResponse(response_str)

django.conf.urls app01 = url(r
欢迎登录

<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="container"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="row"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">form <span style="color: #ff0000;">class<span style="color: #0000ff;">="form-horizontal col-md-6 col-md-offset-3 login-form"<span style="color: #0000ff;">><span style="color: #000000;">
{% csrf_token %}
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="form-group"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">label <span style="color: #ff0000;">for<span style="color: #0000ff;">="username"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="col-sm-2 control-label"<span style="color: #0000ff;">>用户名<span style="color: #0000ff;"></<span style="color: #800000;">label<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="col-sm-10"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="text"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="form-control"<span style="color: #ff0000;"> id<span style="color: #0000ff;">="username"<span style="color: #ff0000;"> name<span style="color: #0000ff;">="username"<span style="color: #ff0000;"> placeholder<span style="color: #0000ff;">="用户名"<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="form-group"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">label <span style="color: #ff0000;">for<span style="color: #0000ff;">="password"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="col-sm-2 control-label"<span style="color: #0000ff;">>密码<span style="color: #0000ff;"></<span style="color: #800000;">label<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="col-sm-10"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="password"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="form-control"<span style="color: #ff0000;"> id<span style="color: #0000ff;">="password"<span style="color: #ff0000;"> name<span style="color: #0000ff;">="password"<span style="color: #ff0000;"> placeholder<span style="color: #0000ff;">="密码"<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="form-group"<span style="color: #0000ff;">>
<span style="color: #008000;">
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">id<span style="color: #0000ff;">="popup-captcha"<span style="color: #0000ff;">></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="form-group"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="col-sm-offset-2 col-sm-10"<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">button <span style="color: #ff0000;">type<span style="color: #0000ff;">="button"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="btn btn-default"<span style="color: #ff0000;"> id<span style="color: #0000ff;">="login-button"<span style="color: #0000ff;">>登录<span style="color: #0000ff;"></<span style="color: #800000;">button<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">span <span style="color: #ff0000;">class<span style="color: #0000ff;">="login-error"<span style="color: #0000ff;">></<span style="color: #800000;">span<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">form<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>

<span style="color: #0000ff;"><<span style="color: #800000;">script <span style="color: #ff0000;">src<span style="color: #0000ff;">="/static/jquery-3.3.1.js"<span style="color: #0000ff;">></<span style="color: #800000;">script<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">script <span style="color: #ff0000;">src<span style="color: #0000ff;">="/static/bootstrap/js/bootstrap.min.js"<span style="color: #0000ff;">></<span style="color: #800000;">script<span style="color: #0000ff;">>
<span style="color: #008000;"><!--<span style="color: #008000;"> 引入封装了failback的接口--initGeetest <span style="color: #008000;">-->
<span style="color: #0000ff;"><<span style="color: #800000;">script <span style="color: #ff0000;">src<span style="color: #0000ff;">="http://static.geetest.com/static/tools/gt.js"<span style="color: #0000ff;">></<span style="color: #800000;">script<span style="color: #0000ff;">>
<span style="color: #0000ff;"><<span style="color: #800000;">script<span style="color: #0000ff;">>

<span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; 极验 发送登录数据的</span>
<span style="background-color: #f5f5f5; color: #0000ff;"&gt;var</span><span style="background-color: #f5f5f5; color: #000000;"&gt; handlerPopup </span><span style="background-color: #f5f5f5; color: #000000;"&gt;=</span> <span style="background-color: #f5f5f5; color: #0000ff;"&gt;function</span><span style="background-color: #f5f5f5; color: #000000;"&gt; (captchaObj) {
    </span><span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; 成功的回调</span>

<span style="background-color: #f5f5f5; color: #000000;"> captchaObj.onSuccess(<span style="background-color: #f5f5f5; color: #0000ff;">function<span style="background-color: #f5f5f5; color: #000000;"> () {
<span style="background-color: #f5f5f5; color: #0000ff;">var<span style="background-color: #f5f5f5; color: #000000;"> validate <span style="background-color: #f5f5f5; color: #000000;">=<span style="background-color: #f5f5f5; color: #000000;"> captchaObj.getValidate();
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 1. 取到用户填写的用户名和密码 -> 取input框的值
<span style="background-color: #f5f5f5; color: #0000ff;">var<span style="background-color: #f5f5f5; color: #000000;"> username <span style="background-color: #f5f5f5; color: #000000;">=<span style="background-color: #f5f5f5; color: #000000;"> $(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">#username<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">).val();
<span style="background-color: #f5f5f5; color: #0000ff;">var<span style="background-color: #f5f5f5; color: #000000;"> password <span style="background-color: #f5f5f5; color: #000000;">=<span style="background-color: #f5f5f5; color: #000000;"> $(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">#password<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">).val();
$.ajax({
url: <span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">/login/<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">,<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 进行二次验证
<span style="background-color: #f5f5f5; color: #000000;"> type: <span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">post<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">,dataType: <span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">json<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">,data: {
username: username,password: password,csrfmiddlewaretoken: $(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">[name='csrfmiddlewaretoken']<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">).val(),geetest_challenge: validate.geetest_challenge,geetest_validate: validate.geetest_validate,geetest_seccode: validate.geetest_seccode
},success: <span style="background-color: #f5f5f5; color: #0000ff;">function<span style="background-color: #f5f5f5; color: #000000;"> (data) {
console.log(data);
<span style="background-color: #f5f5f5; color: #0000ff;">if<span style="background-color: #f5f5f5; color: #000000;"> (data.status) {
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 有错误,在页面上提示
<span style="background-color: #f5f5f5; color: #000000;"> $(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">.login-error<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">).text(data.msg);
} <span style="background-color: #f5f5f5; color: #0000ff;">else<span style="background-color: #f5f5f5; color: #000000;"> {
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 登陆成功
<span style="background-color: #f5f5f5; color: #000000;"> location.href <span style="background-color: #f5f5f5; color: #000000;">=<span style="background-color: #f5f5f5; color: #000000;"> data.msg;
}
}
});
});

     $(</span><span style="background-color: #f5f5f5; color: #000000;"&gt;"</span><span style="background-color: #f5f5f5; color: #000000;"&gt;#login-button</span><span style="background-color: #f5f5f5; color: #000000;"&gt;"</span><span style="background-color: #f5f5f5; color: #000000;"&gt;).click(</span><span style="background-color: #f5f5f5; color: #0000ff;"&gt;function</span><span style="background-color: #f5f5f5; color: #000000;"&gt; () {
        captchaObj.show();
    });
    </span><span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; 将验证码加到id为captcha的元素里</span>

<span style="background-color: #f5f5f5; color: #000000;"> captchaObj.appendTo(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">#popup-captcha<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">);
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
<span style="background-color: #f5f5f5; color: #000000;"> };
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 当input框获取焦点时将之前的错误清空
<span style="background-color: #f5f5f5; color: #000000;"> $(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">#username,#password<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">).focus(<span style="background-color: #f5f5f5; color: #0000ff;">function<span style="background-color: #f5f5f5; color: #000000;"> () {
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 将之前的错误清空
<span style="background-color: #f5f5f5; color: #000000;"> $(<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">.login-error<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">).text(<span style="background-color: #f5f5f5; color: #000000;">""<span style="background-color: #f5f5f5; color: #000000;">);
});

</span><span style="background-color: #f5f5f5; color: #008000;"&gt;//</span><span style="background-color: #f5f5f5; color: #008000;"&gt; 验证开始需要向网站主后台获取id,challenge,success(是否启用failback)</span>

<span style="background-color: #f5f5f5; color: #000000;"> $.ajax({
url: <span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">/pc-geetest/register?t=<span style="background-color: #f5f5f5; color: #000000;">" <span style="background-color: #f5f5f5; color: #000000;">+<span style="background-color: #f5f5f5; color: #000000;"> (<span style="background-color: #f5f5f5; color: #0000ff;">new<span style="background-color: #f5f5f5; color: #000000;"> Date()).getTime(),<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 加随机数防止缓存
<span style="background-color: #f5f5f5; color: #000000;"> type: <span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">get<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">,success: <span style="background-color: #f5f5f5; color: #0000ff;">function<span style="background-color: #f5f5f5; color: #000000;"> (data) {
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 使用initGeetest接口
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 参数1:配置参数
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
<span style="background-color: #f5f5f5; color: #000000;"> initGeetest({
gt: data.gt,challenge: data.challenge,product: <span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">popup<span style="background-color: #f5f5f5; color: #000000;">"<span style="background-color: #f5f5f5; color: #000000;">,<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
<span style="background-color: #f5f5f5; color: #000000;"> offline: <span style="background-color: #f5f5f5; color: #000000;">!<span style="background-color: #f5f5f5; color: #000000;">data.success <span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 表示用户后台检测极验服务器是否宕机,一般不需要关注
<span style="background-color: #f5f5f5; color: #008000;">//<span style="background-color: #f5f5f5; color: #008000;"> 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config
<span style="background-color: #f5f5f5; color: #000000;"> },handlerPopup);
}
})

<span style="color: #0000ff;"></<span style="color: #800000;">script<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">body<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">html<span style="color: #0000ff;">>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读