web-dev-qa-db-ja.com

オフライン時に偽のオンラインWebサイト

ローカルサーバーを使用してWebサイトを開発していますが、リモート依存関係があります。リモートサーバーからのファイルの偽のリクエストをしたいのですが。たとえば、ブラウザがfooCDN.com/bloatedLib.jsを要求すると、/Users/name/Desktop/bloatedLib.jsの内容が返されます。

私はMacを使用しており、システムまたはブラウザレベルで機能するソリューションで十分です。ブラウザレベルで動作する場合は、FirefoxまたはChromeソリューションのみで問題ありません。Windowsコンピュータは使用できません。

15
Daniel F

私はこの小さなプロキシサーバーを一緒にハッキングして、不足しているファイルのみをダウンロードしました。/etc/hostsファイルを設定して、127.0.0.1でキャッシュするサイトと0.0.0.0でブロックするサイトを指定するだけです。

#!/bin/sh 
nc -ll -p 80 -e sh -c ' 
while read A B DUMMY 
do 
   case "$A" in 
      [Gg][Ee][Tt]) 
         FULL=$B #full path of the file
         F=${FULL##*/}
         F=${F%%\?*} #file name only
         #if we have it cat it back to browser
         [ -f "$F" ] && cat "$F" && break 
      ;; 
      [Hh][Oo][Ss][Tt]*) 
         [ -f "$F" ] && break #file already exists
         Host=${B:0:$((${#B}-1))} #the Host name
         #resolve by DNS first so we can cache it
         sed -i "s/hosts:\t\tfiles /hosts:\t\t/g" /etc/nsswitch.conf 
         wget -t 0 -q --no-dns-cache $Host$FULL
         #got it now revert to checking Host file 1st
         sed -i "s/hosts:\t\t/hosts:\t\tfiles /g" /etc/nsswitch.conf
         #cat the file because I didn't think to wget through tee
         cat "$F" 
         break 
      ;; 
   esac 
done 
'

すべてのファイルを1つのディレクトリに配置するため、バージョンの競合が発生する可能性があることに注意してください。 (これは意図的に行ったので、jqueryのコピーは500個ありません)

11
technosaurus

ローカルWebサーバーを実行しているようです。優秀な。

Macのファイルシステムには、/etc/hostsというファイルがあります。 fooCDN.comに次の行を追加することで、/etc/hostsに対するすべてのリクエストをローカルマシンにリダイレクトできます。

127.0.0.1   foocdn.com www.foocdn.com

/etc/hostsを編集するには、root(スーパーユーザー)の権限が必要です。

上記の行は、fooCDN.comがWebサーバーがリッスンしている自分のコンピューターから読み込まれることを意味します。

ただし、ローカルで実行しているWebサーバーを指定していません。 Webサーバーのドキュメントに従って、fooCDN.comのドキュメントルートを/Users/name/Desktop/にポイントする仮想ホストを作成する必要があります。

これはサンプル構成です(私は自分でテストしていません) Apache で使用してみることができます:

<VirtualHost 127.0.0.1:80>
    ServerName foocdn.com
    ServerAlias www.foocdn.com
    DocumentRoot /Users/name/Desktop
</VirtualHost>

Nginx (これもテストされていません)の設定例は次のとおりです。

server {
    listen 80;
    root /Users/name/Desktop;
    server_name foocdn.com;
}

Webサーバーサービスを再起動するか、新しい構成ファイルをリロードすることを忘れないでください。

24
Deltik

プロキシサーバー サポートするソフトウェア RL書き換え を使用してタスクを実行できます。多くのプロキシサーバーアプリケーションは、URLの書き換えをサポートしています。例: Charles Web Debugging Proxy Application Windows、Mac OS、およびLinuxの場合 RL書き換えをサポート 。 Macシステムにインストールしてから、プロキシサーバーを使用するようにシステムのブラウザを設定できます。

または、無料でオープンソースの Apache には、 mod_proxy および mod_rewrite モジュールがあります。

Mitmproxy は無料で、Mac OSXシステムでも動作します。

ブラウザのキャッシュからアイテムを引き出してプロキシサーバー経由で利用できるようにする必要がある場合は、 表示Chromeキャッシュ(簡単な方法) で提供されている手法を使用できます。 。たとえば、GoogleではChromeブラウザのアドレスバーにchrome:\\cacheを入力し、Chromeキャッシュで、関連するアイテムを見つけてコピーします。他の場所。

2
moonpoint

古き良きように聞こえます wwwoffle あなたのニーズに合うはずです。これは、オフラインで使用するリソースを選択できるプロキシサーバーです。

2
MvG