Django中使用极验Geetest滑动验证码过程解析

本文详细介绍了如何在Django项目中部署和使用极验Geetest滑动验证码,包括环境部署、SDK安装、参数配置以及相关代码实现,帮助开发者增强网站安全性。
摘要由CSDN通过智能技术生成

**一,环境部署
**

1.创建一个django测试项目

二,文档部署

1.下载安装python对应的SDK

使用命令从Github导入完整项目:git clone https://github.com/GeeTeam/gt3-python-sdk.git

手动下载压缩包文件: https://github.com/GeeTeam/gt3-python-sdk/archive/master.zip

2.参数配置

修改请求参数(可选)

名称 说明
user_id 用户标识,若担心用户信息风险,可作预处理(如哈希处理)再提供
client_type 客户端类型,web(pc浏览器),h5(手机浏览器,包括webview),native(原生app),unknown(未知)
ip_address 客户端请求您服务器的ip地址,unknow表示未知

三.代码实现

**SDK:utils >geetest.py **


    import sys
    import random
    import json
    import requests
    import time
    from hashlib import md5
    if sys.version_info >= (3,):
      xrange = range  
    
    VERSION = "3.0.0"
    class GeetestLib(object):
      FN_CHALLENGE = "geetest_challenge"
      FN_VALIDATE = "geetest_validate"
      FN_SECCODE = "geetest_seccode"
      GT_STATUS_SESSION_KEY = "gt_server_status"
      API_URL = "http://api.geetest.com"
      REGISTER_HANDLER = "/register.php"
      VALIDATE_HANDLER = "/validate.php"
      JSON_FORMAT = False
      def __init__(self, captcha_id, private_key):
        self.private_key = private_key
        self.captcha_id = captcha_id
        self.sdk_version = VERSION
        self._response_str = ""
      def pre_process(self, user_id=None,new_captcha=1,JSON_FORMAT=1,client_type="web",ip_address=""):
        """
        验证初始化预处理.
        //TO DO arrage the parameter
        """
        status, challenge = self._register(user_id,new_captcha,JSON_FORMAT,client_type,ip_address)
        self._response_str = self._make_response_format(status, challenge,new_captcha)
        return status
    
      def _register(self, user_id=None,new_captcha=1,JSON_FORMAT=1,client_type="web",ip_address=""):
        pri_responce = self._register_challenge(user_id,new_captcha,JSON_FORMAT,client_type,ip_address)
        if pri_responce:
          if JSON_FORMAT == 1:
            response_dic = json.loads(pri_responce)
            challenge = response_dic["challenge"]
          else:
            challenge = pri_responce
        else:
          challenge=" "
        if len(challenge) == 32:
          challenge = self._md5_encode("".join([challenge, self.private_key]))
          return 1,challenge
        else:
          return 0, self._make_fail_challenge()
    
      def get_response_str(self):
        return self._response_str
    
      def _make_fail_challenge(self):
        rnd1 = random.randint(0, 99)
        rnd2 = random.randint(0, 99)
        md5_str1 = self._md5_encode(str(rnd1))
        md5_str2 = self._md5_encode(str(rnd2))
        challenge = md5_str1 + md5_str2[0:2]
        return challenge
    
      def _make_response_format(self, success=1, challenge=None,new_captcha=1):
        if not challenge:
          challenge = self._make_fail_challenge()
        if new_captcha:
          string_format = json.dumps(
            {
   'success': success, 'gt':self.captcha_id, 'challenge': challenge,"new_captcha":True})
        else:
          string_format = json.dumps
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值