HTTP Archive 一种可重放浏览器请求的设计
- 2025-01-05 23:28:00
- 丁国栋
- 原创 58
HAR(HTTP Archive)是一种文件格式,用于记录和存储浏览器与网络服务器之间的单个网页及其资源的加载过程。它保存了HTTP请求和响应的数据,包括但不限于请求URL、HTTP方法、状态码、请求头、响应头、响应体以及时间戳等信息。
为了尊重和保护用户数据和隐私,HAR不会包含Cookies。
HAR文件的主要用途包括:
性能分析:开发者可以使用HAR文件来分析网页的加载性能,找出哪些资源加载较慢或存在其他问题。
故障排查:当网页遇到问题时,HAR文件可以帮助开发者理解具体的请求和响应情况,从而更快速地定位问题所在。
调试API调用:对于依赖于AJAX或其他形式的异步通信的应用程序,HAR文件能详细展示所有的API交互细节。
重放请求:某些工具允许用户导入HAR文件并重新发送其中包含的请求,这对于测试特别有用。
文档生成:HAR文件也可以用来生成关于网站使用的API的文档。
大多数现代浏览器都内置了开发者工具,这些工具通常包含一个“网络”面板,可以用来捕获和导出HAR文件。此外,也有专门的命令行工具和库可用于创建、解析和操作HAR文件。例如,BrowserMob Proxy 和 Fiddler 等工具能够拦截HTTP流量并生成HAR文件。如果需要对某个特定网页进行深入的网络分析,HAR文件是一个非常有用的工具。如何使用浏览器获得HAR,可以参见链接 https://learn.microsoft.com/en-us/azure/azure-portal/capture-browser-trace 。
由于HAR的设计,它只能在浏览器端观察用户的请求过程,如果没有配套的后端设计那我们还时很难获取用户的请求在后端的轨迹。所以我们在设计基于浏览器的Web应用程序时,应该如何最大限度的获知用户的真实轨迹呢?
- 使用分布式追踪系统:实施一个分布式追踪系统(如Jaeger, Zipkin, OpenTelemetry等),该系统可以在服务之间传递追踪上下文。每个请求都会有一个唯一的trace id,而每个独立的服务调用则会有一个span id或request id。这些ID可以帮助跟踪跨多个服务的请求流程。
- 在HTTP头中传递追踪信息:通过HTTP头部(例如X-Request-ID, X-B3-TraceId, X-B3-SpanId)传递追踪标识符。这样,即使请求经过了多个中间件或微服务,也能够保持追踪上下文的一致性。前端和后端都正确设置了这些头部,并且在日志记录和错误报告中包含它们。
- 客户端生成唯一标识符:在客户端(即用户的浏览器)为每次用户交互生成一个唯一的clientRequestId,并在发送给服务器的每个请求中包含这个ID。这有助于将特定用户的动作与服务器端的日志关联起来。
- 加密和安全传输:所有的通信都是通过HTTPS进行的,以防止敏感信息(如trace id、request id)在传输过程中被窃取或篡改。此外,避免在URL参数中传递敏感数据,因为这些可能会被记录在服务器日志或浏览器历史中。
- 最小化暴露信息:只在必要时才收集和传输追踪信息,避免过度收集用户数据。遵循“最小权限原则”,只获取完成任务所需的最少信息。
- 遵守隐私法规:追踪实践需要符合相关的隐私法律法规(如GDPR, CCPA)。如果需要收集个人可识别信息(PII),必须获得用户的明确同意,并提供透明的信息说明。
--
发表评论