Routing

路由到代理和程式碼注入本地網路上的文件

  • February 4, 2015

我正在嘗試建立一個Open Device Lab

這個問題的重點是網路路由和程式碼注入到對測試設備發出的請求的響應中。

我希望人們能夠帶著他們的筆記型電腦進來,盡可能輕鬆地進行測試。我希望開發人員能夠:

  • 檢查移動瀏覽器,
  • 不必刷新文件更改的每一頁,並且
  • 不必單獨導航每個設備。

為此,我選擇使用以下技術(分別):

所有這些技術都需要在請求的網頁中使用 JavaScript 片段,以便打開和維護與伺服器程序的套接字連接。我想使用代理伺服器來注入這些片段。

下面是我計劃如何設置測試網路的圖像:

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

我將快速解釋實驗室不同部分的作用:

本地網路伺服器 + 測試設備

這台機器是開發人員可以使用的機器,執行他們選擇的 Web 伺服器(Apache、Nginx、IIS 等等,這無關緊要)。這兼作測試設備。開發人員必須安裝一些軟體,以便在文件發生更改時通知 LiveReload 伺服器(例如guard-livereload)。它將通過WiFi連接到路由器。

測試設備

這些是實驗室在這裡的原因的移動設備。他們渲染的網頁可以使用 weinre 檢查,使用 LiveReload 刷新文件更改,並在任何其他設備使用 Shim 導航時進行導航。他們將通過 WiFi 連接到路由器。

路由器

路由器將使用代理伺服器處理埠 80 上的所有請求。它還將使用代理伺服器機器作為 DNS 伺服器。

代理伺服器

該伺服器不僅僅是一個代理伺服器。其任務是:

  • DNS 伺服器(這樣本地測試域就可以工作,而無需單獨配置每個設備,考慮為此使用Smbind),
  • 代理伺服器(為了注入 JavaScript 片段),
  • 一個 weinre 伺服器(能夠檢查任何連接的 WebKit 客戶端),
  • LiveReload 伺服器(向所有連接的瀏覽器發出信號以在適當的時候刷新整個頁面或其部分資源),
  • Shim 伺服器(在適當時向所有連接的瀏覽器發出信號以進行導航),以及
  • 網路速度限制(模擬慢速連接)。

TL; 博士

我正在努力解決的問題如下:

  • 哪些代理軟體可以將程式碼注入請求?
  • 我如何只將程式碼注入到本地埠 80 請求中,這些請求是 HTML(由 MIME 類型指示)並包含</body>(“本地”是指測試網路,而不是發送到更廣泛 Internet 的請求)?此外,程式碼需要在</body>.
  • 如何通過代理透明地路由所有流量(以便我可以注入程式碼和限制速度),即我目前的設置是否可以正常工作?

我非常感謝您的想法。

雖然我很欣賞 ICAP 的建議,但開源 ICAP 伺服器已經過時和/或記錄不充分。我花了幾天時間嘗試設置 ICAP 解決方案,沒有骰子。

所以我轉向 Apache 作為代理。我將其配置為透明轉發代理,並將過濾器鏈配置為膨脹(如果內容被壓縮)、執行替換和壓縮(如果最初被壓縮)。這就像一個魅力。

在通過代理路由所有流量方面,我為所有設備和本地 Web 伺服器設置了單獨的訪問點。它們位於不同的子網上,因此路由器(與代理機器相同)需要在兩者之間路由流量,並通過代理髮送流量。

只有一個接入點,我遇到了出站流量通過代理的問題,但本地流量沒有。

完成後,我將發布更詳細的文章,說明我如何設置設備實驗室。我仍在弄清楚一些東西(與這個問題無關)。

您可能正在尋找的功能是ICAP(網際網路內容適配協議)

有一個 Python 框架可以處理它(http://icap-server.sourceforge.net/),Squid本身現在可能具有該功能(至少在開發中)。

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

引用自:https://serverfault.com/questions/474244