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)
  • 相关阅读:
    CF Round433 B. Jury Meeting
    CF Round433 C. Planning
    繁忙的都市
    联络员
    组合数模板
    Rinne Loves Xor
    [SDOI2016]齿轮
    水题(water)
    Music Problem
    小H和游戏
  • 原文地址:https://www.cnblogs.com/blackbird0423/p/8275749.html
Copyright © 2011-2022 走看看