从Nginx日志中提取UserAgent、IP等信息

有时我们需要用到大量UserAgent信息,而Nginx日志文件中包含了海量真实的UserAgent,从Nginx文件中提取所有UserAgent信息就很有必要;

Python代码实现从Nginx日志文件中提取UserAgent信息:

import re

def extract_nginx_log(log):

    regex = re.compile(
        '''(?P<remote_addr>[\d\.]{7,})\
 - - (?:\[(?P<datetime>[^\[\]]+)\])\
 "(?P<request>[^"]+)" (?P<status>\d+)\
 (?P<size>\d+) "(?:[^"]+)" "(?P<user_agent>[^"]+)"'''
    )

    return regex.match(log).groupdict()

ua_lst = []

with open('access.log','r') as fp:
    for line in fp.readlines():
        ua_lst.append(extract_nginx_log(line)['user_agent'])

ua_lst = list(set(ua_lst)) # 简单去重

with open('user_agent.txt','w') as fp:
    for ua in ua_lst:
        fp.write(ua+'\n')

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/nginx-log-user-agent.html

分类: 计算机技术
推荐阅读:
Microsoft Office 禁用自动更新方法 近日,作者发现 Microsoft Office会偷偷摸摸的自动安装更新,这点是我无法忍受的,因为像这样的大型软件,随随便便更新以下就是几百兆的更新包,不仅占用网络资源,而且对我心爱的固态硬盘极为不利,而且这些软件更新推送很频繁;
Python globals()函数 globals() 是 Python 内置函数之一,用于返回当前全局作用域中所有变量的字典。这个字典包含了所有已定义的全局变量,键为变量名,值为对应的值。可以通过修改这个字典中的变量来更新全局作用域中的变量。
使用Python求取前n个自然数的总和 给一个自然数n,使用Python求取前n个自然数的总和;
Pyside6.QtWidgets.QWidget详细教程 QWidget从窗口系统接收鼠标、键盘和其它事件,并在屏幕上绘制自己;通常它是矩形的,拥有一个标题栏和一个空白框架;
Rust字符串转换成数字类型:简单易懂的教程 在Rust编程中,将字符串转换为数字类型是一个常见的任务。无论您是处理用户输入,读取文件,还是与外部API交互,都可能需要将字符串转换为数字以进行进一步的计算或处理。在本文中,我们将深入探讨如何在Rust中执行这一任务,提供简单易懂的教程和示例代码。
Golang捕获Ctrl+C的系统信号并作出响应 通常,当操作系统要停止你的进程时,会向你的进程发送信号,如果你需要在进程结束前处理一些事务,那么你需要捕获这些信号;