zoukankan      html  css  js  c++  java
  • tornado限制访问次数和判断是否是真实浏览器访问

    tornado第二篇学习,判断是否是浏览器访问,和判断访问的次数

    判断是否浏览器访问,是通过头部文件的User-Agent进行对比,而判断次数是通过记录访问的ip次数得到的

    # -*- coding:utf-8 -*-
    #@Time : 2020/9/16 22:54
    #@Author: 张君
    #@File : url.py
    
    import  tornado.web
    import tornado.ioloop
    
    user='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
    class AceesHandler(tornado.web.RequestHandler):
        def get(self,*args,**kwargs):
            #判断是否是浏览器fangwen
            head=self.request.headers['User-Agent']
            if head==user:
                self.write("访问正常")
            else:
                self.send_error(403)


    iplist={} class loginHandler(tornado.web.RequestHandler): def get(self,*args,**kwargs): #获取ip地址 ip=self.request.remote_ip #如果有ip访问,就加1 num=iplist.get(ip,0)+1 #获取IP的number iplist[ip]=num print(iplist) #如果大于5,返回400,如果没有就提示没有超过限制 if iplist[ip]>5: self.send_error(400) else: self.write("没有超过限制") app=tornado.web.Application([ (r'/$',AceesHandler), (r'/login',loginHandler) ]) app.listen(8888) #监听 tornado.ioloop.IOLoop.instance().start()

     访问超限

     小知识 字典的get用法

    num=iplist.get(ip,0)+1
    get相当于一条if...else...语句,参数k在字典中,字典将返回list[k];如果参数k不在字典中则返回参数d,如果K在字典中则返回k对应的value值,比如

  • 相关阅读:
    直接插入排序学习笔记
    选择排序学习笔记
    冒泡排序学习笔记
    阿里云ssl证书申请及域名绑定流程
    Nginx user_agent、if指令及全局变量
    rewrite和return笔记
    rewrite和return的简单需求
    Nginx Rewrite正则表达式案例
    linux下WordPress伪静态规则设置
    集群前后端分离(api接口)
  • 原文地址:https://www.cnblogs.com/chongyou/p/13682182.html
Copyright © 2011-2022 走看看