Tornado框架 视图类加装饰器 进行反爬 重复访问攻击验证

类装饰器

主要思想 业务和公共功能解耦

注意步骤:

1 定义new方法 引入要装饰的类的类对象以及类函数,然后返回inner函数在inner函数中处理验证和调用被装饰类的函数功能。

2 定义检测静态方法

3 在inner静态方法中检测,如果监测没问题则返回被装饰类的类方法,否则调用检测的静态方法

import tornado.ioloop
import tornado.web

user_agents = [
    "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Mobile Safari/537.36"
]


# 工具类,检测请求
class RequestTools:
    class UaCheck:

        def __new__(cls, func):
            # 1 引入要装饰的类的类对象以及类函数 
            # 然后返回inner方法在inner方法中调用被装饰的类的类函数
            cls.func = func
            return cls.inner

        @staticmethod
        def check(handler):
            # 2 定义检测函数
            return handler.request.headers["User-Agent"]

        @staticmethod
        def inner(handler):
            # 3 运行检测方法 如果检测失败则返回UA错误,如果检测没问题则继续运行原类实例方法
            if not __class__.ch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值