【问题标题】:How to separate background HTTP requests如何分离后台 HTTP 请求
【发布时间】:2011-03-04 09:46:30
【问题描述】:

这更像是一个尝试了解 HTTP 的真正工作原理然后实施它的问题。

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

现在,问题是如何在用户主动不生成请求的情况下分离这些“后台”请求。据我所知,这主要是广告获取、重定向和一些基于 Ajax 的东西。

有没有人对此有任何想法。一些、经验或可能是您可以指导我开始进行此分析的资源?

【问题讨论】:

  • 我认为通常(也是最简单)的方法是按文件类型将它们分开:html、php 等。请求是真正的命中,css、js、图像文件等是“背景”命中。当然这不考虑 Ajax 请求,它也可能会命中 html 和 php 文件。

标签: http httpwebrequest content-type


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    尝试以下方式:

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2016-12-21
      • 2015-07-10
      相关资源
      最近更新 更多