我正在开发一个浏览器扩展。 该扩建工程在外部网站上,我们没有控制权。
我想能够测试扩展。 一个我所面临的主要问题是显示网站“原样”本地。
是否有可能显示一个网站“原样”本地?
我希望能够准确地服务于本地网站按原样进行测试。 这意味着我要模拟的完全相同的HTTP数据,包括iframe广告,等等。
更多信息:
我想我的系统为紧密行为远程网站成为可能。 我想运行命令fetch
例如这将让我去现场的我的浏览器(不包括在互联网上),并得到我会以其他方式(包括信息完全一样的东西,是不是从一个单一的领域,谷歌的广告等)。
我不介意使用虚拟机,如果这有助于。
我想这是在测试中相当有用的东西。 尤其是当我有一个错误,我需要的是有很多随机因素(什么广告显示等)站点可靠地重现。
正如已经提到的,缓存代理应该为你做的伎俩(顺便说一句,这是最简单的解决方案)。 有相当多的不同实现的,所以你只需要花费一定的时间选择合适的一个(根据我的经验鱿鱼是一个很好的解决方案)。 无论如何,我想强调另外两个有趣的选项:
选项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代理。
这种方法为您提供完整的控制和位与位的精确仿真。
我不知道是否有一个简单的方法,但有一个办法。
您可以设置一个本地网络服务器,像IIS,Apache的,或minihttpd 。
然后,你可以使用抓取网站内容的wget 。 (它有一个镜像选择)。 和许多浏览器有“保存整个网页”,将抢的一切,如图片的选项。
广告将最有可能来自于远程站点,所以你可能需要手动编辑在HTML这些行要么不引用实际的广告服务器或建立自己一个模拟的广告(如横幅图片)。
然后你就可以浏览您的浏览器中http://localhost
访问你的本地网站,假设端口80是默认的。
希望这可以帮助!
我假设你想提供一个远程站点,你的控制之下不是。 在这种情况下,你可以使用代理服务器,使服务器缓存每个响应积极。 然而,这有它的局限性。 首先,你必须去拜访您打算通过这个代理服务器(与例如浏览器)使用的每一个网站,秒你将无法效仿的形式处理。
另外,您可以用蜘蛛下载某个网站中的所有内容。 根据蜘蛛软件,它甚至可以下载JavaScript的内置链接。 然后,您可以使用一个网络服务器来服务于内容。
此服务http://www.json-gen.com提供模拟了通过REST HTML,JSON和XML。 通过这种方式,你可以从后端分别测试您的前端。