Version 3 (modified by mitty, 12 years ago) (diff) |
---|
- TipAndDoc/network/proxy
proxy pac file
- 注意
- localhostなどについても、個別に設定しないとプロクシ経由で接続しようとする -> プロクシサーバが動いているノードのlocalhostに接続しようとする
- プロキシの自動設定方法
- PAC Functions « FindProxyForURL - PAC & WPAD Resource
dnsDomainIs shExpMatch isInNet myIpAddress dnsResolve isPlainHostName localHostOrDomainIs isResolvable dnsDomainLevels weekdayRange dateRange timeRange alert
- Debug PAC File « FindProxyForURL - PAC & WPAD Resource
- .Pac ファイル内の shExpMatch 関数が正規表現をサポートしていません。
.Pac ファイルの正規表現オブジェクトの次のコード例に示します。
var regexpr = /[a-zA-Z]{4}.microsoft.com/; if(regexpr.test(host))
- メモcache: 自動プロキシ設定スクリプトで楽にIP制限を乗り越える
- 自動設定ファイルをローカルではなく、ウェブサーバ上にphpとして設置している例
myIpAddress
- proxy.pacでのmyIpAddress() - (ひ)メモ
- 自動プロキシ設定スクリプトの myIpAddress() の動作 | witchの日記 | スラッシュドット・ジャパン
function FindProxyForURL(url, host) { alert(myIpAddress()); return "DIRECT"; }
test on Firefox/IE/Chrome
- Firefox 17
- エラーコンソール(Ctrl+Shift+J) > メッセージ でalertメッセージを確認できる
- 依然として、myIpAddress()でIPv6が帰ってくる模様
PAC-alert: fe80::XXXX:YYYY:ZZZZ:ABCD%10
- myIpAddress() Returns IPv6 Address in Firefox 4 proxy.pac file | Firefox Support Forum | Mozilla サポート
- VPN接続しても変わらず(メトリック調整も無視?)
- IE 9
- myIpAddress()はIPv4のアドレスを正しく返す
- VPN接続によるデフォルトゲートウェイの変化にも追従(メトリック設定によってゲートウェイが変化しない場合は元のまま)
- ゲートウェイが変化すると、iexplorer.exe再起動無しでプロクシ設定の再読込も行われる
- ネットワークに変化がない状態でpacファイルを更新しても、再起動するまで反映されない模様
- プロキシ自動設定ファイルのTIP - Admintech.jp
return DIRECTを記述すると、Direct接続先はイントラネットとなります。
ある種の自動構成スクリプトを使うと(正確には「return "DIRECT"」を実行すると)、本来「インターネット ゾーン」となるべきサイトが「イントラネット ゾーン」となってしまうのは、 ... これは“仕様”である
- Chrome 23
- alertの確認方法が不明
- myIpAddress()はIPv4のアドレスを正しく返す模様
- IE 9と同様に、ゲートウェイ変更時には、chromeの再起動無しにプロクシ設定の再読み込みが行われる
- GoogleChrome に独立したプロキシ設定: な○の 屋
- --proxy-pac-urlによるpacファイルの指定は、インターネットオプション > 接続 > LANの設定 > 自動構成スクリプト よりも優先される
example
- chrome-proxy.pac
function useProxy(host) { if ( dnsDomainIs(host, "mitty.jp") || dnsDomainIs(host, "tsukuba.ac.jp") ) { return true; } return false; } function detectNet(ipaddr) { if (isInNet(ipaddr, "192.168.0.0", "255.255.255.0")) { // maybe local if (isInNet(dnsResolve("some.host.example.jp"), "192.168.0.0", "255.255.255.0")) { return 'LOCAL'; } else { return 'UNKNOWN'; } } if (isInNet(ipaddr, "192.168.100.0", "255.255.255.0")) { return 'GUEST'; } return 'UNKNOWN'; } var localnet = detectNet(myIpAddress()); function FindProxyForURL(url, host) { if (! useProxy(host)) { return "DIRECT"; } if (localnet == 'LOCAL') { return "PROXY proxy.local.example.net:8080"; } if (localnet == 'GUEST') { // alternative port return "HTTPS proxy.example.net:8443"; } return "HTTPS proxy.example.jp:443"; }
- HTTPSを使用しているので、chrome専用
- mitty.jp, tsukuba.ac.jpで終わるドメインに対してのみプロクシを使用
- 現在のネットワークをmyIpAddress()から判断し、プロクシを切り替えている
- 特定のFQDN(some.host.example.jp)がプライベートIPに名前解決できるかで確認を取っている