攻防演练,作为蓝方,分析nginx日志,统计访问为200的请求路径及其次数

请求结果为状态码 200 的日志条目。这需要调整正则表达式来捕获状态码,并基于此值进行过滤。

以下是更新后的脚本:

import re

def parse_log_file(file_path, output_file_path):
    # 正则表达式,用于匹配日志条目中的请求URL部分和状态码
    pattern = re.compile(r'\"GET\s(.*?)\sHTTP/\d\.\d\"\s(200)\s')

    # 字典,用于存储路径计数
    path_counts = {}

    with open(file_path, 'r') as file:
        for line in file:
            match = pattern.search(line)
            if match:
                url = match.group(1)
                # 分割URL以获取路径部分,限制到最多4个段
                path_parts = url.split('?')[0].split('/')
                # 仅考虑最多4个段的路径
                filtered_path = '/'.join(path_parts[:5])
                if filtered_path in path_counts:
                    path_counts[filtered_path] += 1
                else:
                    path_counts[filtered_path] = 1

    # 将结果写入输出文件
    with open(output_file_path, 'w') as output_file:
        for path, count in sorted(path_counts.items(), key=lambda item: item[1], reverse=True):
            output_file.write(f"{path}: {count}\n")

# 日志文件路径
log_file_path = '/mnt/data/nginx_logs.txt'
output_file_path = '/mnt/data/print.txt'

# 解析日志文件并写入输出
parse_log_file(log_file_path, output_file_path)

变更内容:

  1. 正则表达式调整:模式现在捕获特定返回 200 状态码的 GET 请求。
  2. 过滤逻辑:脚本检查捕获的状态码为 ‘200’ 后,再处理 URL 以计算路径计数。

确保日志文件 nginx_logs.txt 已上传到 /mnt/data/ 目录中,以便脚本可以找到并处理它。这个脚本将其结果输出到同一目录下的 print.txt 中,提供了以 200 状态码结果的 GET 请求的路径计数排序。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 05:30:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 05:30:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 05:30:01       87 阅读
  4. Python语言-面向对象

    2024-04-21 05:30:01       96 阅读

热门阅读

  1. mac dex2jar安装

    2024-04-21 05:30:01       60 阅读
  2. 【测试】1.认识测试

    2024-04-21 05:30:01       111 阅读
  3. 【计算机网络】网络协议

    2024-04-21 05:30:01       135 阅读
  4. 基于云开发和微信小程序的爱宠家系统

    2024-04-21 05:30:01       111 阅读
  5. 【设计模式】3、builder 建造者模式

    2024-04-21 05:30:01       28 阅读
  6. 设计模式(022)行为型之解释器模式

    2024-04-21 05:30:01       35 阅读
  7. 【QT教程】QT6单元测试

    2024-04-21 05:30:01       40 阅读
  8. 16篇 hdfs中篇

    2024-04-21 05:30:01       160 阅读
  9. linux nohup命令启动jar包 如何取消nohup日志打印

    2024-04-21 05:30:01       46 阅读
  10. C语言实现单链表

    2024-04-21 05:30:01       39 阅读