2012年7月11日水曜日

自動構成スクリプトでプロキシ設定

プロキシを設定するのはいいのですが、
プロキシを通さないで直接アクセスする必要のあるサイトが結構あって、
例外をたくさん書かなければならないなんてこともあります。
そんな悲惨な環境を便利に使うため、
IEやchromeでは自動構成スクリプトが使えます。
Windowsの[コントロール]で[インターネットのプロパティ]を開き、
[接続]タブを開いて[LANの設定]ボタンを押して
[ローカルエリアネットワーク(LAN)の設定]を開き
[自動構成スクリプトを使用する]をチェックして
[アドレス]テキストボックスに
自動構成スクリプトのURLを設定すれば使えます。

その自動構成スクリプトでは関数FindProxyForURL()を定義し、
受け取った引数から判断して
戻り値を"DIRECT"とすればブラウザは直接ウェブサーバにアクセスし、
戻り値を"PROXY 192.168.1.1:8080"とすれば
プロキシサーバ"192.168.1.1:8080"を介するよう動作します。
スクリプトの内容は例えば以下のようになるでしょうか。
function FindProxyForURL(url,host)
{
 var ip=dnsResolve(host);

 if(dnsDomainIs(host,"www.hoge.com"))
  return "PROXY 192.168.1.2:8080";
 else if(dnsDomainIs(host,".hoge.net"))
  return "PROXY 192.168.1.3:8080";
 else if(isInNet(ip,"10.0.0.0","255.0.0.0")      ||
   isInNet(ip,"172.16.0.0","255.240.0.0")  ||
   isInNet(ip,"192.168.0.0","255.255.0.0") ||
   shExpMatch(host,".local"))
  return "DIRECT";
 else
  return "PROXY 192.168.1.1:8080";
}
これをファイル"proxy.pac"として作成し、
Cドライブの"inetpub"フォルダの"wwwroot"フォルダにおいているとすれば、
自動構成スクリプトのURLは
file://C:/inetpub/wwwroot/proxy.pac
となります。

もし複数のPCで同一の内容にしたいなら
それぞれのPCでローカルに持つこともできますが、
"proxy.pac"を適当なウェブサーバに置いておけば
最新の設定を簡単に共有できます。
例えばWindows7なら、
[コントロールパネル]から[プログラムと機能]を開き、
[Windowsの機能の有効化または無効化]をクリックして
[Windowsの機能]ウィンドウを開き、
[インターネット インフォメーション サービス]をチェックすれば
IISがウェブサーバとして使えるようになります。
IISの制御はデスクトップの[コンピュータ]の
コンテキストメニューで[管理]をクリックして
[コンピュータの管理]アプリケーションを開き、
[サービスとアプリケーション]の
[インターネット インフォメーション サービス(IIS) マネージャー]から行えます。
Cドライブの"inetpub"フォルダの"wwwroot"フォルダに"proxy.pac"を置きますが、
拡張子が"pac"のままだと設定が面倒なので
"proxy.txt"にリネームしておくのがよいでしょう。
この場合、各PCに設定する自動構成スクリプトのURLは
http://<IISサーバのIPアドレス>/proxy.txt
となります。

0 件のコメント:

コメントを投稿