从用户代理字符串确定哪个浏览器发出了请求

时间:2013-11-20 13:16:36

标签: linux batch-file awk gnuplot logfile

我正在尝试编写一个批处理文件,用于从日志文件中读取和提取用户代理,我可以使用以下代码,但我需要提供发出请求的浏览器的数字计数和使用gnu-plot ,绘制每个浏览器请求数量的条形图。我有点担心浏览器请求一点帮助或方向将不胜感激。

干杯。

 #!/bin/bash

 # All we're doing here is extracting the user agent field from the log file and 'piping' it through some other commands. The first sort is to # enable uniq to properly identify and count unique user agents. The final sort orders the result by number and name (both descending).

 awk -F\" '{print $6}' access.log | sort | uniq -c | sort -fr > extracteduseragents.txt

1 个答案:

答案 0 :(得分:1)

要获得更友好的浏览器名称,您可以使用例如pybrowscap以及http://tempdownloads.browserscap.com/index.phpbrowscap.csv文件。

然后您可以使用类似以下sanitize_ua.py的脚本:

#!/usr/bin/env python
import sys
from pybrowscap.loader.csv import load_file

browscap = load_file('browscap.csv')

for ua in sys.stdin:
    browser = browscap.search(ua)
    if browser:
        print "'{} {}'".format(browser.name(), browser.version())

从命令行运行,如

awk -F\" '{print $6}' access.log | sort | python sanitize_ua.py | uniq -c | sort -fr

当然,在uniq之前搜索所有用户代理是非常低效的,但它应该显示工作原理。当然,您也可以编写一个python脚本来完成所有处理。