miau's blog?

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

客先でブラウザのプロキシ設定に自動構成スクリプト(PACファイル)と言うのが使われていたのだけど、その話。




■自動構成スクリプトって?

IE やら Firefox やらで「インターネットへのアクセス時は proxy を通したいけど、イントラネットへのアクセスは proxy を通したくない」みたいな場合に使うファイル。

@IT:Windows TIPS -- Tips:WebブラウザのProxy設定を行うための4つの方法 − WPADのススメ −#proxy2

概要がわかりやすいのはここかな。

■ローカルに保存

客先のポリシー?で「http://server01/proxy.pac」みたいな感じで自動構成スクリプトを設定するようになってたんだけど、この設定のままだとアクセスできないサーバとかあったりして、自分で書き換えたくなった。ローカルに保存すればいくらでも書き換えられるんだけど、それでちょっとハマった。

普段使う場合は %WINDIR%\system32\drivers\etc\proxy.pac あたりに置くのがわかりやすい気がするんだけど、前回?書いたように、客先では行儀よく %USERPROFILE% 配下を使ってて。この場合、指定方法は

file://C:/Documents and Settings/xxxxxx/My Documents/proxy.pac

みたいに指定する。(※IE の場合。Firefox は覚えてない。)というか下記はダメなので注意。

・実ファイル指定

C:\Documents and Settings\xxxxxx\My Documents\proxy.pac

・file: の後にスラッシュが 3 つある(※Firefox だと問題なし)

file:///C:/Documents and Settings/xxxxxx/My Documents/proxy.pac

・URL Encode する

file:///C:/Documents%20and%20Settings/xxxxxx/My%20Documents/proxy.pac


■どうでもいい愚痴

ローカルに保存する手順について、Microsoft の和訳がまたわかりにくくて困った。

ローカルに格納された自動構成スクリプト ファイルを使用する方法

「[OK] を 2 回クリックします。」って書いてあるからダブルクリックするのかと思ったよ・・・。英語だと「click OK, and then click OK.」みたいな感じでわかりやすいんだけど。

■その他注意点

書き方によってはパフォーマンスが悪くなったりするらしい。以下のサイトに「DNS参照すると遅くなるからこのコマンドは使わないほうがいい〜」等のアドバイスあり。

プロキシ自動設定ファイルのTIP - Admintech.jp

あと、設定変えても即時反映されないから、設定変えた後は IE を再起動するなり、「自動構成スクリプトを使用する(S)」のチェックを一旦外してまたチェック→「OK」→「OK」とかして反映する必要あり。(Firefox は試してないからわからない。。)

■応用例

この .pac ファイルを使えば、ホスト名で proxy の有無を切り替える、なんてことができる。
例えば www.example.com のアクセスで、たまにローカル proxy を経由して内容を書き換えたいような場合。

・hosts ファイルに別名を登録しておく

192.0.2.1 www.example.com viaproxy.www.example.com


・.pac ファイルで、viaproxy. で始まる URL はローカルプロキシを通すよう変更する

function FindProxyForURL(url, host)
{
// viaproxy. で始まる URL はローカルプロキシ経由
if (shExpMatch(host, "viaproxy.*")) {
return "PROXY 127.0.0.1:8080";
}

// それ以外は直接接続
return "DIRECT";
}

みたいに設定しておくと、普段は http://www.example.com/ としてアクセスしておいて、ローカルプロキシを通したい場合のみ proxy を起動→ http://viaproxy.www.example.com/ とかでアクセス、みたいなことができる。

これならプロキシ設定変えずにアクセス先変えるだけでいいから、結構楽なんじゃないかと。



みたいな bookmarklet 作っておけば、すぐに切り替えれそうだし。

あとはローカルプロキシで
・viaproxy. を除いてホスト名解決
・Referer チェックがあるようなサーバに備えて Host: ヘッダを書き換え
までやっちゃえば、さらにお手軽に使えてよさげ。必要になったら書こうかな。(→書きました


(2007/12/04 追記)

shExpMatch の記述が間違っていたので修正+リンク追加とか。
ついでにちょっとわかりにくい箇所を書き直したりとか。


(2007/12/04 追記)

Firefox しか使わない人は PAC ファイルを使うより FoxyProxy 使ったほうがいいかも。どのプロキシを使っているかを表示してくれるらしいので、ミスの防止にもなるし。


(2008/01/08 さらに追記)

一応セキュリティについても言及しておいたほうがいいかな、と思い直した。

Internet Explorer でプロキシの自動構成ファイル (.pac) を使用してプロキシ設定を指定すると、ホーム ページが適切でないセキュリティ ゾーンに割り当てられる

.pac ファイルで「return "DIRECT"」してると、その URL はイントラネットゾーンとして認識される、という話。
上記の方法を使う場合は、イントラネットゾーンのセキュリティ設定も高めに設定しておきましょう。

posted at 07:33:44 on 2007-12-03 by miau - Category: General No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。