proxy.pacを正規表現で

.Pac ファイル内の shExpMatch 関数の正規表現をサポートしていません。」より

The following code sample illustrates the use of the regular expression object in a .pac file.

function FindProxyForURL(url, host)
{
// For instance, if the server has 4 alphabetic characters, 
// such as "MSDN", route it through a specific proxy: 

var regexpr = /[a-zA-Z]{4}.microsoft.com/;
if(regexpr.test(host))
    return "PROXY w3proxy:8080; DIRECT";

// Or else connect directly:
return "DIRECT";
}


圧縮版

function FindProxyForURL(o,r){return/[a-zA-Z]{4}.microsoft.com/.test(r)?"PROXY w3proxy:8080; DIRECT":"DIRECT"}



function FindProxyForURL(url, host) {
  var proxy = "PROXY proxy1.example.co.jp:8080; PROXY proxy2.example.co.jp:8080; DIRECT";
  if (isPlainHostName(host) || shExpMatch(host, "192.168.*") || shExpMatch(host, "127.0.0.1")) return "DIRECT";
  if (shExpMatch(host, "xxxxxx.jp")) return proxy;
  return "DIRECT";
}

f:id:nonbei:20150421035123p:plain


・Minify Javascript Online / Online JavaScript Packer
http://jscompress.com/

圧縮版

function FindProxyForURL(x,p){return isPlainHostName(p)||shExpMatch(p,"192.168.*")||shExpMatch(p,"127.0.0.1")?"DIRECT":shExpMatch(p,"xxxxxx.jp")?"PROXY proxy1.example.co.jp:8080; PROXY proxy2.example.co.jp:8080; DIRECT":"DIRECT"}

圧縮方法の一例
影響を及ぼさないスペース、タブおよび改行文字を省略。
if~elseを?:演算子に変更。
複数回参照するオブジェクトやメソッドを短い名前の変数に代入。

5/28 追加
Adblock Plus を使っているが、このようなやり方もあったのか。
OSC2012 Tokyo/Fall 特設サイト

function FindProxyForURL(url, host) {
    if (url.match(/[^a-z0-9]ad(s)?[0-9]*[^a-z0-9]/i)) {
        return "PROXY gauc.no-ip.org:81";
    }
    return "DIRECT";
}



6/11 追加

自動プロキシ構成スクリプトを使用するように Internet Explorer を構成すると、FindProxyForURL 呼び出しにより返されたプロキシがキャッシュされます。キャッシュ メカニズム (自動プロキシ結果キャッシュ) は、ホストを基準として実行されます (つまり、URL を基準とはしません)。

これにより、複数のプロキシを使用して同じ Web サーバーにアクセスすることができなくなります。

Internet Explorer の自動プロキシ キャッシュを無効にする方法

・圧縮
Minify Javascript Online / Online JavaScript Packer
http://jscompress.com/