本文主要是介绍攻防演练,作为蓝方,分析nginx日志,统计访问为200的请求路径及其次数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
请求结果为状态码 200 的日志条目。这需要调整正则表达式来捕获状态码,并基于此值进行过滤。
以下是更新后的脚本:
import redef 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] += 1else: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)
变更内容:
- 正则表达式调整:模式现在捕获特定返回 200 状态码的 GET 请求。
- 过滤逻辑:脚本检查捕获的状态码为 ‘200’ 后,再处理 URL 以计算路径计数。
确保日志文件 nginx_logs.txt
已上传到 /mnt/data/
目录中,以便脚本可以找到并处理它。这个脚本将其结果输出到同一目录下的 print.txt
中,提供了以 200 状态码结果的 GET 请求的路径计数排序。
这篇关于攻防演练,作为蓝方,分析nginx日志,统计访问为200的请求路径及其次数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!