在本地模拟远程网站以进行测试

Ben*_*aum 9 http browser-extension web

我正在开发一个浏览器扩展.扩展程序适用于我们无法控制的外部网站.

我希望能够测试扩展.我面临的一个主要问题是在本地显示网站"按原样".

是否可以在本地"按原样"显示网站?

我希望能够在 本地完全按原样提供网站进行测试.这意味着我想模拟完全相同的HTTP数据,包括iframe广告等.

  • 是否有捷径可寻?

更多信息:

我希望我的系统能够尽可能地与远程网站紧密联系.我想运行命令fetch,例如,这将允许我在我的浏览器中访问该网站(没有互联网)并得到完全相同的事情,否则(包括不是来自单个域的信息,谷歌广告,等等).

如果有帮助,我不介意使用虚拟机.

我认为这在测试中非常有用.特别是当我有一个错误时,我需要在具有许多随机因素(广告显示等)的网站中可靠地再现.

Ren*_*nov 4

正如已经提到的,缓存代理应该可以为您解决问题(顺便说一句,这是最简单的解决方案)。有很多不同的实现,所以你只需要花一些时间选择一个合适的实现(根据我的经验,squid 是一个很好的解决方案)。无论如何,我想强调另外两个有趣的选择:

\n

选项 1:Betamax

\n
\n

Betamax 是一个用于在测试中模拟外部 HTTP 资源(例如 Web 服务和 REST API)的工具。该项目的灵感来自于 Ruby 的 VCR 库。Betamax 旨在通过拦截应用程序发起的 HTTP 连接并重放之前记录的响应来解决这些问题。

\n

Betamax 有两种口味。第一个是 HTTP 和 HTTPS 代理,可以拦截以任何尊重 Java\xe2\x80\x99s http.proxyHost 和 http.proxyPort 系统属性的方式发出的流量。第二个是 Apache HttpClient 的简单包装器。

\n
\n

顺便说一句,Betamax 有一个非常有趣的功能:

\n
\n

Betamax 是一个测试工具,而不是符合规范的 HTTP 代理。它会忽略通常用于防止代理缓存或存储 HTTP 流量的所有标头。

\n
\n

选项 2:Wireshark和重播代理

\n

使用Wireshark获取您感兴趣的所有流量并重放。我想说,实现所需的重放工具并不难,但您可以使用名为replayproxy的可用解决方案

\n
\n

Replayproxy 解析来自 .pcap 文件的 HTTP 流\n在端口 3128 上打开 TCP 套接字,并使用提取的 HTTP 响应作为缓存作为 HTTP 代理进行侦听,同时拒绝对未知 URL 的所有请求。

\n
\n

这种方法为您提供完全控制和逐位精确模拟。

\n