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值,比如
作者:做梦的人(小姐姐) 出处:https://www.cnblogs.com/chongyou/ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 微信号:18582559217 |