美文网首页
极验geetest的使用

极验geetest的使用

作者: 晓函 | 来源:发表于2016-09-26 17:27 被阅读5396次

前端:

<script src="http://static.geetest.com/static/tools/gt.js"></script>

<input class='btn btn-default' id="show-mobile-captcha" type="button" value="发送">
<div id="popup-captcha-mobile" class="hide"></div>


<script>

    $("#show-mobile-captcha").click(function () {
        //alert('ok');
        $("#popup-captcha-mobile").removeClass('hide');
    });
    var handlerPopupMobile = function (captchaObj) {
        // 将验证码加到id为captcha的元素里
        captchaObj.appendTo("#popup-captcha-mobile");
        //拖动验证成功后两秒(可自行设置时间)自动发生跳转等行为
        captchaObj.onSuccess(function () {
            var validate = captchaObj.getValidate();
            //alert(validate.geetest_challenge);
            $.ajax({
                url: "mobile-geetest/ajax_validate", // 进行二次验证
                type: "post",
                dataType: "json",
                data: {
                    // 二次验证所需的三个值
                    geetest_challenge: validate.geetest_challenge,
                    geetest_validate: validate.geetest_validate,
                    geetest_seccode: validate.geetest_seccode
                },
                success: function (data) {
                    if (data && (data.status === "success")) {
                        $(document.body).html('<h1>登录成功</h1>');
                    } else {
                        $(document.body).html('<h1>登录失败</h1>');
                    }
                }
            });
        });
        // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
    };
    $.ajax({
        // 获取id,challenge,success(是否启用failback)
        url: "mobile-geetest/register?t=" + (new Date()).getTime(), // 加随机数防止缓存
        type: "get",
        dataType: "json",
        success: function (data) {
            // 使用initGeetest接口
            // 参数1:配置参数
            // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
                // 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config
            }, handlerPopupMobile);
        }
    });
</script>

后端:
首先从https://github.com/GeeTeam/gt-python-sdk/
下载geetest文件夹的geetest.py和init.py这2个文件放入自己的项目,
我使用的是极验3.2版本,python是3.4版本
从极验geetest下载的3.2版本的包,加入项目后,居然导致session出现各种莫名错误,明明在session设置了某个key的值,读取这个key的值就说不存在。莫名其妙,搞了一下午,最后尝试把开头的#!coding:utf8去掉,一下全部正常了,因为python默认就是utf-8的编码格式,不需要再画蛇添足了。

Paste_Image.png

然后是后端调用代码

from ..common.geetest import GeetestLib
import json

#生成图片验证码
@auth.route('/mobile-geetest/register', methods=["GET"])
def get_mobile_captcha():
    mobile_geetest_id = "7c25da6fe21944cfe507d2f9876775a9"
    mobile_geetest_key = "f5883f4ee3bd4fa8caec67941de1b903"
    gt = GeetestLib(mobile_geetest_id, mobile_geetest_key)
    status = gt.pre_process()

    session[gt.GT_STATUS_SESSION_KEY] = status
    response_str = gt.get_response_str()
    return response_str


#验证用户拖动结果
@auth.route('/mobile-geetest/ajax_validate', methods=["GET","POST"])
def mobile_ajax_validate():

    mobile_geetest_id = "7c25da6fe21944cfe507d2f9876775a9"
    mobile_geetest_key = "f5883f4ee3bd4fa8caec67941de1b903"
    gt = GeetestLib(mobile_geetest_id,mobile_geetest_key)
    challenge = request.form[gt.FN_CHALLENGE]
    validate = request.form[gt.FN_VALIDATE]
    seccode = request.form[gt.FN_SECCODE]
    status = session[gt.GT_STATUS_SESSION_KEY]

    if status:
        result = gt.success_validate(challenge, validate, seccode)
    else:
        result = gt.failback_validate(challenge, validate, seccode)
    result = {"status":"success"} if result else {"status":"fail"}

    return json.dumps(result)
    

相关文章

  • 极验geetest的使用

    前端: 后端:首先从https://github.com/GeeTeam/gt-python-sdk/下载geet...

  • Laravel 使用极验(Geetest)

    简述 在网站开发中使用频率最高的工具之一便是验证码,验证码在此也是多种多样,不过简单的图片验证码已经可以被机器识别...

  • ThinkPHP使用极验验证

    1、极验验证官网http://www.geetest.com/,与以往传统验证码不同的是,极验通过分析用户完成拼图...

  • Laravel 集成 Geetest验证码

    Geetest 集成大致过程 实现登录的大致逻辑 注册一个极验的帐号 在 “极验” 的后台管理中注册一个行为验证 ...

  • 极验(geetest)验证码

    刚刚登录简书的时候发现,那个验证码廷高大上的。就想看看怎么弄的,就先跑个测试用例吧。具体的我还没怎么看,我是百度的...

  • Python3千万不要加上#!coding:utf8

    从极验geetest下载的3.2版本的包,加入项目后,居然导致session出现各种莫名错误,明明在session...

  • laravel的项目加入极验验证(geetest)

    laravel不在赘述,什么排行第一的php框架,什么最优雅的代码,什么工匠级框架,谁用谁知道。 最近用larav...

  • 破解极验(geetest)滑动验证码

    极验 目前大多数网站使用的验证方式,极验验证码主要分为点按、滑动、选字、选图、识字组词等方式。如下图所示: 当然这...

  • 极验(geetest)集成到iOS项目中

    首先上官网找到技术文档,然后下载sdk。 照着官方文档进行集成即可,因为我这边项目是后期集成的,同时服务器可能会关...

  • geetest极验行为验证(laravel写接口)

    致敬学习的自己,非计算机专业的程序员就只会写功能,不会讲原理、不会讲算法、就是会被歧视吗,管他大爷的,今天做一个拖...

网友评论

      本文标题:极验geetest的使用

      本文链接:https://www.haomeiwen.com/subject/yfvqyttx.html