zoukankan      html  css  js  c++  java
  • 装饰器api

    import hashlib
    
    import time
    from django.http import HttpResponse
    
    key="qwrwertyuiop"
    visited_key={
        #'key':time
    }
    
    
    def api_auth(func):
        def inner(request,*args,**kwargs):
            server_float_ctime = time.time()
            auth_header_val = request.META.get("HTTP_AUTH_API")
            client_md5_str, client_ctime = auth_header_val.split("|", maxsplit=1)
            client_float_ctime = float(client_ctime)
            # 第一关时间
            if (client_float_ctime + 10) < server_float_ctime:
                return HttpResponse("时间太久了")
            # 第二关加密
            server_md5_str = md5("%s|%s" % (key, client_ctime,))
    
            if client_md5_str != server_md5_str:
                return HttpResponse("休想")
    
            # 第三关
            if visited_key.get(client_md5_str):
                return HttpResponse("you are late")
    
            visited_key[client_md5_str] = client_float_ctime
    
            return func(request,*args,**kwargs)
        return inner
    
    
    def md5(arg):
        hs=hashlib.md5() #由于在python3中在update用的是字节类型所以需要把字符串变成字节
        hs.update(arg.encode("utf8"))
        return hs.hexdigest()
    
    @api_auth
    def test(request):
        # server_float_ctime = time.time()
        # auth_header_val=request.META.get("HTTP_AUTH_API")
        # client_md5_str,client_ctime=auth_header_val.split("|",maxsplit=1)
        # client_float_ctime=float(client_ctime)
        # #第一关时间
        # if (client_float_ctime+10) < server_float_ctime:
        #     return HttpResponse("时间太久了")
        # # 第二关加密
        # server_md5_str = md5("%s|%s" %(key,client_ctime,))
        # 
        # if client_md5_str != server_md5_str:
        #     return HttpResponse("休想")
        # 
        # #第三关
        # if visited_key.get(client_md5_str):
        #     return HttpResponse("you are late")
        # visited_key[client_md5_str]=client_float_ctime
        return  HttpResponse("正常用户")
    

      

  • 相关阅读:
    存储型 XSS 原理复现
    反射型 XSS 原理复现
    HTTP 简易理解
    Markdown 流程图语法
    Dirsearch 快速开始
    sqlmap 快速开始
    SQL 注入原理
    XSS 原理
    51nod 1835 完全图
    11.5 AM 请求
  • 原文地址:https://www.cnblogs.com/morgana/p/7624762.html
Copyright © 2011-2022 走看看