Sorry, Japanese only.
Last modified: Sun Aug 30 19:46:59 2009

NicoCache プロキシ自動設定


NicoCacheのページへ

プロキシ自動設定の必要性

NicoCacheは、基本的にはブラウザからの全ての通信を経由させて使いますが、他のプロキシソフトとの組み合わせ方を自由に指定したい場合や、NicoCacheに何らかのバグがあって全ては経由させたくない場合は、ブラウザのプロキシ自動設定機能を利用することができます。

これまでの経過

0.10でメッセージサーバーに接続できない現象も対策したので基本的にプロキシ自動設定スクリプトを使う必要性はなくなりました。たぶん。きっと。ないといいな。

0.07からSSLに対応しましたので、SSL回避のために下記のスクリプトを使う必要はなくなりました。しかし遅くなる等の問題がある人は使ってください。

NicoCacheは手抜きのためSSLに対応していないので、ブラウザですべての通信をNicoCache経由に設定するとhttpsなサイトにアクセスできなくなります。その結果、mixiやWebメールなどにアクセスできないケースが発生してしまいます。そのうまい回避方法をdotlab.Dさんが考えてくださいました。プロキシ自動設定スクリプトを使って、ニコニコへのアクセスの時だけNicoCacheを経由するようにできます。

NicoCacheの動作に合わせて少し変更させてもらいました。そのスクリプトを以下に書きます。(2007/10/9 どうやらNicoCache経由だとサムネイル読み込みが遅くなったりメッセージサーバに繋がらなかったりする環境があるようなので、本当に必要最小限の場合だけNicoCacheを経由するようにさらに変更しました。これらの問題が起こっている人は使ってみてください。作者の環境では特に問題ないんですけどなんでだろう? 作者はJDK 6 Update 3のjavaコマンドで動かしていますが関係あるのかなぁ…。→IEの特殊な挙動のせいでした。0.10で対応済み。)

プロキシ自動設定スクリプトの内容

以下は0.41以降用。新プレイヤーのswf動画も経由させています。また、0.38から特定のURLから動画タイプ(smなど)と番号の対応付けを記憶するようになったので、そのURLも経由する必要があります。

function FindProxyForURL(url, host) {
    var SM_FLV_PATTERN = new RegExp(
            "^http://[^/]+(?:smilevideo|nicovideo)\\.jp/smile\\?(\\w)=([^.]+)\\.\\d+(?:as3)?(low)?$");
    var SM_WATCH_PAGE_PATTERN = new RegExp(
            "^http://www\\.nicovideo\\.jp/watch/([a-z]{2})?(\\d+)(?:\\?.*)?$");
    var TYPE_ID_URL_PATTERN = new RegExp(
            "^http://(?:ext\\.nicovideo\\.jp/thumb(?:_watch)?|www\\.nicovideo\\.jp/api/getflv)/([a-z]{2})(\\d+)");

    if (SM_FLV_PATTERN.test(url) || SM_WATCH_PAGE_PATTERN.test(url)
            || TYPE_ID_URL_PATTERN.test(url)) {
        return "PROXY localhost:8080";
    }

    return "DIRECT";
}

以下は0.30以降用。watchページを見たときにタイトルを記憶するようになったので、watchページも経由する必要があります。

function FindProxyForURL(url, host) {
    var SM_FLV_PATTERN = new RegExp("^http://[^/]+(?:smilevideo|nicovideo)\\.jp/smile\\?\\w=([^.]+)\\.\\d+(low)?$");

    if (SM_FLV_PATTERN.test(url) ||
        shExpMatch(url, "http://www.nicovideo.jp/watch/*")) {
        return "PROXY localhost:8080";
    }

    return "DIRECT";
}

以下は0.29以前用。動画サーバへの通信のみをNicoCache経由にします。

function FindProxyForURL(url, host) {
    var SM_FLV_PATTERN = new RegExp("^http://[^/]+(?:smilevideo|nicovideo)\\.jp/smile\\?\\w=([^.]+)\\.\\d+(low)?$");

    if (SM_FLV_PATTERN.test(url)) {
        return "PROXY localhost:8080";
    }

    return "DIRECT";
}

これを「適当な名前.pac」で保存して、ブラウザの自動設定スクリプトに指定してやれば設定完了です。IEの場合、「file://C:/path/to/xxx.pac」だとOKなのですが「file:///C:/path/to/xxx.pac」のように「///」で指定すると無視されるようなので気をつけてください。(ホームページの設定は「///」なのに…)