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

时间:2013-05-05 06:12:35

标签: http web browser-extension

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

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

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

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

  • 有一种简单的方法吗?

更多信息:

我希望我的系统能够尽可能地与远程网站紧密联系。我想运行命令fetch例如允许我在我的浏览器中访问该站点(没有上网)并得到完全相同的东西(包括非单一的信息)域名,谷歌广告等)。

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

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

4 个答案:

答案 0 :(得分:4)

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

选项1:Betamax

  

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

     

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

BTW,Betamax为您提供了一个非常有趣的功能:

  

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

选项2:Wireshark并重播代理

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

  

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

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

答案 1 :(得分:1)

我不知道是否有 easy 方式,但有办法。

您可以设置本地网络服务器,例如IIS,Apache或minihttpd

然后,您可以使用wget获取网站内容。 (它有一个镜像选项)。许多浏览器都有“保存整个网页”的选项,可以抓取所有内容,比如图像。

广告很可能来自远程网站,因此您可能需要手动编辑HTML中的这些行,以便不引用实际的广告服务器,或自行设置模拟广告(如横幅图片)。

然后,您可以将浏览器导航到http://localhost以访问您的本地网站,假设端口80是默认设置。

希望这有帮助!

答案 2 :(得分:1)

我假设你想要一个不受你控制的远程站点。在这种情况下,您可以使用代理服务器并让该服务器积极地缓存每个响应。但是,这有它的局限性。首先,您必须访问您打算通过此代理使用的每个站点(例如,使用浏览器),其次您将无法模拟表单处理。

或者,您可以使用蜘蛛下载某个网站的所有内容。根据蜘蛛软件,它甚至可以下载JavaScript构建的链接。然后,您可以使用网络服务器来提供该内容。

答案 3 :(得分:0)

此服务http://www.json-gen.com通过休息为html,json和xml提供模拟。通过这种方式,您可以分别从后端测试您的前端。