zoukankan      html  css  js  c++  java
  • python习题:如果同一个ip地址60s之内访问超过200次,那么就把这个ip地址加入黑名单

    # 如果同一个ip地址60s之内访问超过200次,那么就把这个ip地址加入黑名单
    # 需求分析
    # 1、60s读一次文件
    # 2、分割,取到第一个元素,ip地址
    # 3、把所有的ip都放在一个list里面,如果ip超过200次,加入黑名单
    # 4、因为日志文件是追加的,所以循环的话会把之前查到的ip在查出来,循环完会指针在末尾,所以需要记住指针位置,point = f.tell()
    # import time
    # point = 0
    # while True:
    # ips = []
    # with open('access.log','a+',encoding='utf-8') as f:
    # f.seek(0)
    # for line in f:
    # ip = line.split()[0]#split 默认是空格分割
    # ips.append(ip)
    # if ips.count(ip)>199:
    # print('%s已经加入黑名单!'%ip)
    # point =f.tell()
    # time.sleep(60)
    #用集合来去重
    import time
    point = 0
    while True:
    ips = [] #存放所有的IP地址的list
    blk_set = set()#存放需要加入黑名单的ip
    with open('access.log','a+',encoding='utf-8') as f:
    f.seek(0)
    for line in f:
    ip = line.split()[0]#split 默认是空格分割
    ips.append(ip)
    if ips.count(ip)>199:
    blk_set.add(ip)
    for ip in blk_set:# 这个for循环的目的是,防止ip重复加入黑名单,因为集合是去重的。
    print('%s已经加入黑名单!' % ip)
    point =f.tell()
    time.sleep(60)
  • 相关阅读:
    Apache、NGINX支持中文URL
    JS中关于clientWidth offsetWidth scrollWidth 等的含义
    设置apache登陆密码验证
    通过java代码访问远程主机
    win7
    Netty从没听过到入门 -- 服务器端详解
    分块分段
    数论-佩尔方程
    数论-毕达哥拉斯三元组
    HDU 5613-Baby Ming and Binary image
  • 原文地址:https://www.cnblogs.com/blackbird0423/p/8275749.html
Copyright © 2011-2022 走看看