从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

分类: 计算机技术
推荐阅读:
Python实现双向链表 在本文中,我们将看到另一种类型的链表,可以向前和向后移动;这样的链接列表称为双重链接列表(双向链表)。
Windows安装Visual Studio Code Visual Studio Code 是一个运行于Mac OS、Windows、Linux之上的,针对于编写现代Web 和运用的跨平台源代码编辑器;
Windows10查看产品序列号S/N 对于新购机器一定要确认S/N是否与包装一致,再通过官方途径确认该序列号出厂日期,以避免买到翻新机。
Rust使用cfg来实现不同系统的条件编译 Rust使用cfg来实现不同系统的条件编译
Python调用谷歌翻译API实现文本翻译 使用Python向谷歌翻译URL进行GET请求,得到网页内容后使用正则表达式进行解析,获得翻译结果;
Rust好用的GUI库 Rust生态系统中有许多GUI库可供选择,以下是一些受欢迎的Rust GUI库: