模拟远程网站在本地进行测试(Simulating a remote website locally

2019-09-02 00:35发布

我正在开发一个浏览器扩展。 该扩建工程在外部网站上,我们没有控制权。

我想能够测试扩展。 一个我所面临的主要问题是显示网站“原样”本地。

是否有可能显示一个网站“原样”本地?

我希望能够准确地服务于本地网站按原样进行测试。 这意味着我要模拟的完全相同的HTTP数据,包括iframe广告,等等。

  • 是否有捷径可寻?

更多信息:

我想我的系统为紧密行为远程网站成为可能。 我想运行命令fetch例如这将让我去现场的我的浏览器(不包括在互联网上),并得到我会以其他方式(包括信息完全一样的东西,是不是从一个单一的领域,谷歌的广告等)。

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

我想这是在测试中相当有用的东西。 尤其是当我有一个错误,我需要的是有很多随机因素(什么广告显示等)站点可靠地重现。

Answer 1:

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

选项1: Betamax录像机

Betamax的是在测试中嘲笑外部HTTP资源,如Web服务和REST API的一个工具。 该项目是由VCR库Ruby的启发。 Betamax的目的是通过截取由应用程序发起的HTTP连接和重放先前记录的响应来解决这些问题。

Betamax的有两种形式。 首先是可以拦截在尊重Java的http.proxyHost和把http.proxyPort系统属性的任何方式进行业务的HTTP和HTTPS代理。 第二个是为Apache HttpClient的一个简单的包装。

BTW,Betamax的对你一个非常有趣的功能:

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

选项2: Wireshark的和重播代理

抓住所有的流量,你有兴趣使用Wireshark的 ,并重播。 这个我会说这是不是很难实现需要重播的工具,但你可以使用可用的解决方案称为replayproxy

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

这种方法为您提供完整的控制和位与位的精确仿真。



Answer 2:

我不知道是否有一个简单的方法,但有一个办法。

您可以设置一个本地网络服务器,像IIS,Apache的,或minihttpd 。

然后,你可以使用抓取网站内容的wget 。 (它有一个镜像选择)。 和许多浏览器有“保存整个网页”,将抢的一切,如图片的选项。

广告将最有可能来自于远程站点,所以你可能需要手动编辑在HTML这些行要么不引用实际的广告服务器或建立自己一个模拟的广告(如横幅图片)。

然后你就可以浏览您的浏览器中http://localhost访问你的本地网站,假设端口80是默认的。

希望这可以帮助!



Answer 3:

我假设你想提供一个远程站点,你的控制之下不是。 在这种情况下,你可以使用代理服务器,使服务器缓存每个响应积极。 然而,这有它的局限性。 首先,你必须去拜访您打算通过这个代理服务器(与例如浏览器)使用的每一个网站,秒你将无法效仿的形式处理。

另外,您可以用蜘蛛下载某个网站中的所有内容。 根据蜘蛛软件,它甚至可以下载JavaScript的内置链接。 然后,您可以使用一个网络服务器来服务于内容。



Answer 4:

此服务http://www.json-gen.com提供模拟了通过REST HTML,JSON和XML。 通过这种方式,你可以从后端分别测试您的前端。



文章来源: Simulating a remote website locally for testing