路由到代理并将代码注入到本地网络上提供的文件中

路由到代理并将代码注入到本地网络上提供的文件中

我正在尝试建立一个开放设备实验室

这个问题主要集中在测试设备请求的响应中的网络路由和代码注入。

我希望人们能够带着笔记本电脑来这里,尽可能轻松地进行测试。我希望开发人员能够:

  • 检查移动浏览器,
  • 不必在文件更改时刷新每个页面,并且
  • 不必单独导航每个设备。

为了实现这一点,我选择使用以下技术(分别):

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

下面是我计划如何设置测试网络的图像:

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

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

本地 Web 服务器 + 测试设备

这台机器是开发人员使用的机器,运行他们选择的 Web 服务器(Apache、Nginx、IIS 等等)。这没什么关系)。这可以兼作测试设备。开发人员必须安装一些软件,当文件发生变化时通知 LiveReload 服务器(例如guard-livereload)。它将通过WiFi连接到路由器。

测试设备

这些移动设备正是实验室存在的原因。它们呈现的网页将可使用 weinre 检查,使用 LiveReload 在文件更改时刷新,并在任何其他设备使用 Shim 导航时导航。它们将通过 WiFi 连接到路由器。

路由器

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

代理服务器

此服务器不仅仅是一个代理服务器。其任务包括:

  • DNS 服务器(这样本地测试域就可以正常工作,而不必单独配置每个设备,考虑使用斯姆宾为了这),
  • 代理服务器(为了注入 JavaScript 代码片段),
  • 一个 weinre 服务器(能够检查任何连接的 WebKit 客户端),
  • LiveReload 服务器(在适当的时候向所有连接的浏览器发出信号,刷新整个页面或部分资源),
  • Shim 服务器(在适当的时候向所有连接的浏览器发出导航信号),以及
  • 网络速度限制(模拟慢速连接)。

总结

我正在努力解决的问题如下:

  • 哪些代理软件可以在请求中注入代码?
  • 我如何才能将代码仅注入本地端口 80 的 HTML 请求(由 MIME 类型指示)并包含</body>(“本地”指测试网络,而不是发往更广泛互联网的请求)?此外,代码需要注入到 的正前方</body>
  • 我如何透明地通过代理路由所有流量(以便我可以注入代码和限制速度),即我当前的设置是否可以工作?

我将非常感激您的想法。

答案1

你可能正在寻找的功能是ICAP(互联网内容适配协议)

有一个 Python 框架可以处理它(http://icap-server.sourceforge.net/),而 Squid 本身现在可能也具有该功能(至少在开发中)。

Squid Wiki 上有更多信息(以及其他 ICAP 服务器的列表)http://wiki.squid-cache.org/Features/ICAP#ICAP_Servers

答案2

虽然我很欣赏 ICAP 的建议,但开源 ICAP 服务器已经过时且/或文档记录不佳。我花了几天时间尝试设置 ICAP 解决方案,但毫无成效。

因此我转向使用 Apache 作为代理。我将其配置为透明正向代理,并将过滤器链配置为膨胀(如果内容被压缩)、替换和压缩(如果最初被压缩)。这非常有效。

在通过代理路由所有流量方面,我为所有设备和本地 Web 服务器设置了单独的接入点。它们位于不同的子网中,因此路由器(与代理计算机相同)需要在两者之间路由流量,并通过代理发送流量。

由于只有一个接入点,我遇到的问题就是出站流量通过代理,但本地流量却没有。

设备实验室完成后,我会发布一篇更详细的文章,介绍如何设置设备实验室。我还在想办法解决一些问题(与这个问题无关)。

相关内容