2011-03-04 84 views
0

这更多的是试图了解HTTP如何工作然后实现它的问题。如何分离背景HTTP请求

我需要一个HTTP分析器,它能够将主页面请求和来自某些HTTP日志数据的“背景”请求分开。这个想法是将用户发出的HTTP请求与后台自动发生的请求(松散地使用这个术语)分开。因此,从我看到的HTTP数据的前几个印象看来,似乎当我访问任何普通网站时,会获取文本/ html对象,然后是很多其他对象,如css,xml,javascript,图像等。

现在,问题是如何区分这些“背景”请求,其中用户主动不生成请求。这主要取决于我所知道的广告提取,重定向和一些基于Ajax的事情。

有没有人对此有任何意见。一些,经验或可能是您可以指示我开始进行此分析的资源?

+0

我觉得平时(最简单的)方式是文件类型将它们分开:'html','PHP '等请求是真正的命中,'css','js',图像文件等是“背景”命中。当然,这不包含Ajax请求,它也可能会遇到'html'和'php'文件。 – Wukerplank 2011-03-04 09:52:13

回答

0

由于特定的用户操作或由于来自裸露HTTP请求的其他自动过程,无法区分浏览器生成哪些请求。浏览器/客户端是唯一具有这种知识的浏览器/客户端,因此您必须将其作为图片的一部分,例如将分析器作为浏览器插件来实现,或者将HTTP客户端作为分析器本身的一部分来嵌入。

如果您尝试创建通用工具来分析流量负载,区分用户直接“点击”和自动请求产生的流量通常没有意义。

0

没有直接和干净的方法来做到这一点。但是,通过筛选出明显不是“用户”请求的文件请求(例如* .jpg),您可以非常接近。此外,您可以过滤掉什么不是HTTP/200响应(例如,301和302重定向)。

尝试沿着线的东西:

cat access.log 
    | grep -E -v "(.gif|.ico|.png|.jpg|.jpeg|.js|.css) HTTP" 
    | grep "HTTP/1.1\" 200" 

(添加换行符以提高可读性)