Top

Geetest服务端部署(django)

一、以路飞学城项目为例

  极验官网:https://docs.geetest.com/

       settings.py文件中关于极验的配置:

  GEE_TEST = {
    "gee_test_access_id": "37ca5631edd1e882721808d35163b3ad",      # 后台生成自己的id
    "gee_test_access_key": "7eb11ccf3e0953bdd060ed8b60b0c4f5",     # 后台生成自己的key
    "verify_status": True,  # 是否启用滑动验证码验证组件(True表示启用)
    "not_verify": [
      "2ba6b08d53a4fd27057a32537e2d55ae",
    ],  # 不用验证的用户(存放着用户的uid)
  }

       captcha_verify.py文件(验证滑动验证码是否正确的方法):

             

     from django.conf import settings
     from api.utils.geetest import GeeTestLib            # 极验官网下载的geetest模块包
def verify(verify_data, uid=None, extend_params=None): """第三方滑动验证码校验. 选用第三方的验证组件, 根据参数进行校验 根据布尔值辨别是否校验通过 Parameters ---------- verify_data : dict 请求数据 uid: string, default: None 用户UID, 如果存在就免受滑动验证码的限制 extend_params : dict 预留的扩展参数 Returns ------- True OR False """ captcha_config = settings.GEE_TEST if captcha_config.get("verify_status"): status = True if uid in captcha_config.get("not_verify"): return True gt = GeeTestLib(captcha_config["gee_test_access_id"], captcha_config["gee_test_access_key"]) challenge = verify_data.get(gt.FN_CHALLENGE, '') validate = verify_data.get(gt.FN_VALIDATE, '') seccode = verify_data.get(gt.FN_SECCODE, '') # status = request.session.get(gt.GT_STATUS_SESSION_KEY, 1) # user_id = request.session.get("user_id") if status: result = gt.success_validate(challenge, validate, seccode, None) else: result = gt.failback_validate(challenge, validate, seccode) return True if result else False else: return True

       captcha.py文件(得到验证码接口对应的视图函数):     

     from rest_framework.views import APIView
     from api.utils.geetest import GeeTestLib
     from django.conf import settings
     import json
     from rest_framework.response import Response


        class CaptchaView(APIView):
            def get(self, request):
                gt = GeeTestLib(settings.GEE_TEST["gee_test_access_id"], settings.GEE_TEST["gee_test_access_key"])
                gt.pre_process()
                # 设置 geetest session, 用于是否启用滑动验证码向 geetest 发起远程验证, 如果取不到的话只是对本地轨迹进行校验
                # self.request.session[gt.GT_STATUS_SESSION_KEY] = status
                # request.session["user_id"] = user_id
                response_str = gt.get_response_str()
                response_str = json.loads(response_str)

                return Response({"error_no": 0, "data": response_str})

 

posted @ 2018-12-18 13:22  勇敢的巨蟹座  阅读(218)  评论(0)    收藏  举报