用于整理206请求的Web日志工具
项目描述
一个小型Web日志工具,用于解析Apache或Nginx等Web日志,并尝试找到可能与原始200或206请求相关的206请求,并将它们聚合为一个请求。这是通过指纹请求来猜测它是否来自同一用户来实现的。指纹基于‘request_header_referer’,‘remote_user’,‘request_header_user_agent’,‘request_http_ver’,‘request_method’,‘request_url’,‘remote_host’。
警告:生成的日志可能不准确。无法确定来自同一IP的两个206请求,对于相同的url,具有相同的用户代理,来自同一用户,甚至来自两个不同的浏览器标签中的同一用户。此外,同一用户可能在再次播放之前暂停很长时间。
调整--delay参数可以对请求总数产生重大影响。如果用户通常会在视频上暂停很长时间,或者在浏览器pdf查看器中翻页很长时间,则可能需要较长的延迟。然而,延迟越长,两个具有相同指纹的不同用户被错误地合并为一个请求的机会就越大。
合并后的请求将是第一个遇到的请求,除了响应字节数将是总和。
合并后的请求将取代最后一个要合并的请求。这意味着日志数据将不会根据时间戳按时间顺序输出
用法
Usage: merge206.py [-p PATTERN] [-d SECONDS] [-i FILE] Options: -i FILE, --input FILE Logfile to read -p PATTERN, --pattern PATTERN Apache log format specification. see https://github.com/rory/apache-log-parser#supported-values -d SECONDS, --delay SECONDS The max time between 206 partial requests [default: 600] -h --help Show this screen. --version Show version.
更改
1.1 (2017-6-8)
修复了一个意味着404和其他错误代码与206合并的错误
修复了一些性能问题
添加了一些测试
1.0
初始版本
已知问题
当前存在一个bug,在延迟期内,两次200请求会被合并。
合并的请求不会按时间顺序输出。