Open Device Lab を設定しようとしています。
この質問は、テストデバイスによって行われた要求への応答へのコードのネットワークルーティングと挿入に焦点を当てています。
私は人々が彼らのラップトップを持って来て、できるだけ痛みを伴わずにテストできるようにしたいと思っています。開発者に次のことができるようにしたいと思います。
これを達成するために、私は次のテクノロジーを(それぞれ)使用することを選択しました。
これらのテクノロジーはすべて、サーバープログラムとのソケット接続を開いて維持するために、要求されたWebページにJavaScriptスニペットを必要とします。プロキシサーバーを使用してこれらのスニペットを挿入したいと思います。
以下は、テストネットワークのセットアップ方法のイメージです。
ラボのさまざまな部分の役割について簡単に説明します。
このマシンは、開発者が選択したWebサーバー(Apache、Nginx、IISなど)を実行するために使用するマシンです。問題ではありません)。これはテストデバイスとしても機能します。開発者は、ファイルが変更されたときにLiveReloadサーバーに通知するソフトウェアをインストールする必要があります( guard-livereload など)。 WiFi経由でルーターに接続します。
これらは、ラボがここにある理由であるモバイルデバイスです。それらがレンダリングするWebページは、weinreを使用して検査可能であり、LiveReloadを使用してファイル変更時に更新し、他のデバイスがShimを使用してナビゲートするときにナビゲートします。彼らはWiFi経由でルーターに接続します。
ルーターは、ポート80で処理されるすべての要求にプロキシサーバーを使用します。また、プロキシサーバーマシンをDNSサーバーとして使用します。
このサーバーは単なるプロキシサーバーではありません。そのタスクは次のとおりです。
私が苦労しているのは次のとおりです。
</body>
を含むローカルポート80リクエストにのみコードを挿入するにはどうすればよいですか(「ローカル」はテストネットワークを指し、より広いインターネットに送信されるリクエストではありません) ?また、コードは</body>
の直前に挿入する必要があります。どうぞよろしくお願いいたします。
ICAPの提案に感謝しますが、オープンソースのICAPサーバーは古くなっているか、文書化が不十分です。サイコロを使わずに、ICAPソリューションのセットアップに数日を費やしました。
そこで、プロキシとしてApacheを使用しました。私はそれを透過的なフォワードプロキシとして構成し、フィルターチェーンを膨張(コンテンツが収縮した場合)、置換、および収縮(最初に収縮した場合)するように構成しました。これは魅力のように機能します。
プロキシを介してすべてのトラフィックをルーティングするという点では、すべてのデバイスとローカルWebサーバーに個別のアクセスポイントがあります。それらは異なるサブネット上にあるため、ルーター(プロキシマシンと同じ)は2つの間でトラフィックをルーティングし、プロキシを介してトラフィックを送信する必要があります。
アクセスポイントが1つしかない場合、アウトバウンドトラフィックがプロキシを通過するという問題がありましたが、ローカルトラフィックは通過しませんでした。
終了したら、デバイスラボのセットアップ方法についてさらに詳細な記事を投稿します。私はまだいくつかのことを考えています(この質問とは関係ありません)。
あなたがおそらく探している機能は ICAP(インターネットコンテンツ適応プロトコル) です。
それを処理するPythonフレームワーク( http://icap-server.sourceforge.net/ ))があり、Squid自体に機能がある可能性があります( 少なくとも開発中 )。
Squid Wikiの詳細(および他のICAPサーバーのリスト)は http://wiki.squid-cache.org/Features/ICAP#ICAP_Servers