路由到代理和代码注入本地networking上提供的文件

我正在尝试build立一个开放式设备实验室 。

这个问题集中在对testing设备所做请求的响应中的networking路由和代码注入。

我希望人们能够使用笔记本电脑进行testing,并尽可能无痛地进行testing。 我希望开发人员能够:

  • 检查移动浏览器,
  • 不必刷新文件上的每一个页面,并且
  • 不必分别导航每个设备。

为了达到这个目的,我select了使用以下技术(分别):

  • weinre ,
  • LiveReload和
  • 修改了Shim的 Ubuntu版本。

所有这些技术都需要在所请求的网页中使用JavaScript代码段,以便打开和维护与服务器程序的套接字连接。 我想使用代理服务器来注入这些片段。

以下是我如何计划build立testingnetworking的图像:

http://i.stack.imgur.com/klGJF.png

我将很快解释实验室不同部分的作用:

本地networking服务器+testing设备

这台机器是一个开发人员可以使用的机器,运行他们select的Web服务器(Apache,Nginx,IIS,无论如何, 这应该不是问题 )。 这是一个testing设备。 开发人员将不得不安装一些软件,在文件发生变化时通知LiveReload服务器(如guard-livereload )。 它将通过WiFi连接到路由器。

testing设备

这些移动设备是实验室在这里的原因。 他们渲染的网页将被使用weinre进行检查,使用LiveReload进行文件更改刷新,并在其他设备使用Shim进行导航时进行导航。 他们将通过WiFi连接到路由器。

路由器

路由器将使用代理服务器来处理端口80上的所有请求。它还将使用代理服务器作为DNS服务器。

代理服务器

这台服务器不仅仅是一个代理服务器。 其任务是:

  • 一个DNS服务器(这样本地testing域就可以工作,而不必单独configuration每个设备,考虑使用Smbind ),
  • 一个代理服务器(为了注入JavaScript片段),
  • 一个weinre服务器(能够检查任何连接的WebKit客户端),
  • 一个LiveReload服务器(用于向所有连接的浏览器发送信号,以在适当的时候刷新整个页面或一些资源),
  • 一个Shim服务器(用于指示所有连接的浏览器在适当的时候导航),以及
  • 网速节stream(模拟慢速连接)。

TL; DR

我正在努力的是以下几点:

  • 哪个代理软件可以将代码注入请求?
  • 如何将代码注入本地端口80的HTML请求(如MIMEtypes所示),并包含</body> (“本地”是指testingnetworking,而不是向更广泛的Internet请求的请求)? 而且,代码需要注入</body>
  • 我如何透过代理(所以我可以注入代码和油门速度)透明地路由所有stream量,即我目前的设置甚至工作?

我非常感谢你的想法。

您可能要查找的function是ICAP(互联网内容适配协议) 。

有一个Python框架可以处理它( http://icap-server.sourceforge.net/),Squid本身现在可能有这个function&#xFF08; 至less在开发中 )。

有更多的信息(和其他ICAP服务器的列表)上的S维基在http://wiki.squid-cache.org/Features/ICAP#ICAP_Servers

尽pipe我很欣赏ICAP的build议,但是开源的ICAP服务器已经过期和/或有很大的文档logging。 我花了几天的时间试图build立ICAP解决scheme,没有骰子。

所以我转向Apache作为代理。 我将其configuration为透明转发代理,并将filter链configuration为膨胀(如果内容已缩小),请执行replace,然后放气(如果最初放气)。 这就像一个魅力。

在通过代理路由所有stream量方面,我有所有设备和本地Web服务器的独立接入点。 它们位于不同的子网上,因此路由器(与代理机一样)需要在两者之间路由stream量,并通过代理发送stream量。

只有一个接入点,我有问题,出站stream量通过代理,但本地stream量没有。

一旦完成,我将会发布更详细的关于如何设置设备实验室的说明。 我仍然在找出一些东西(与这个问题无关)。