为了更好的服务我们的客户,我们需要采集用户常用的几个视频站点,然后针对这些站点进行优化。经过一番查找,我们决定先试用httpry来简单的收集一下我们的用户的浏览记录。
1.参考文档
2.安装
基于Debian系统(Ubuntu 或 LinuxMint),基础仓库中没有httpry安装包需要通过源码安装:
$ sudo apt-get install gcc make git libpcap0.8-dev
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install
在Fedora,CentOS 或 RHEL系统,可以使用如下yum命令安装httpry
sudo yum install httpry
如果仍想通过基于RPM系统的源码来安装httpry的话,你可以通过这几个步骤实现(本人轻微强迫症,一定得按照习惯放置目录,方便管理):
$ sudo yum install gcc make git libpcap-devel
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install
最后make install的时候会报错,原因是目录不存在,执行以下命令
mkdir -p /usr/man/man1
mkdir -p /usr/local/man/man1
make install
至此,httpry就可以正常使用了,文件列表如下图所示
3.使用httpry
最简单的使用
httpry -i 网卡名称 例如 (httpry -i eth0)
使用httpry -h可以查看帮助命令
-b 文件将HTTP数据包写入二进制转储文件
-d 以守护进程运行
-f 格式指定输出格式字符串
-F 清除
-h 打印此帮助信息
-i 设备在此接口上侦听
-L threshold为速率统计指定一个RPS阈值
-m 方法指定要分析的请求方法(get,post,head,put等)
-n count设置要分析的HTTP数据包数
-o 文件写入输出到文件
-p 禁用混杂模式
-P 在后台程序模式下运行时使用自定义PID文件名
-q 抑制非临界输出
-r 文件从输入文件读取数据包
-s 以每秒HTTP请求数模式运行
-t 秒指定速率统计的显示间隔
-u 用户设置进程所有者
此外,如果下载了源码的同学,还可以使用perl脚本对数据进行简单的分析
目录是在httpry源码目录下面有一个scripts目录(前提是你已经生成了日志记录)
./httpry/scripts/perl ./httpry/scripts/parse_log.pl -d ./httpry/scripts/plugins <httpry-output-file>
你可能在使用插件的时候遇到警告。比如,如果你没有安装带有DBI接口的MySQL数据库,那么使用db_dump插件时可能会失败。如果一个插件初始化失败的话,那么只是这个插件不能使用,所以你可以忽略那些警告。
执行完毕后,会在执行命令的目录下面生成 7 (插件失败的话对应缺少一个文件)个文件,
common_log.txt 查找含有指定关键的URL
find_proxies.txt 探测web代理
hostnames.txt 显示唯一主机名列表
log_summary.txt 生成日志汇总
search_terms.txt 查找及统计在搜索服务里面的搜索词
xml_output.xml 将输出转换为XML形式
db_dump 日志文件数据保存数据库
因为日志内容涉及隐私部分,文件内容需要自行查看
注:
因为文件内容比较多,所有采用shell脚本去执行,然后将结果保存,现将shell脚本贴出,比较傻,请多指教:
#/bin/sh
yesterdayDate=`date -d "1 day ago" +"%Y%m%d"`
todayDate=`date -d "now" +"%Y%m%d"`
pkill httpry
if [ ! -d "/var/log/httpry" ]; then
mkdir /var/log/httpry
fi
if [ ! -d "/var/log/httpry/log" ]; then
mkdir /var/log/httpry/log
fi
httpry -i eth0 -o /var/log/httpry/log/${todayDate}output.log -d
if [ ! -d "/var/log/httpry/${yesterdayDate}" ]; then
mkdir /var/log/httpry/${yesterdayDate}
fi
cd /var/log/httpry/${yesterdayDate}
if [ -f "/var/log/httpry/log/${yesterdayDate}output.log" ]; then
perl /home/httpry/scripts/parse_log.pl -d /home/httpry/scripts/plugins /var/log/httpry/log/${yesterdayDate}output.log
fi