otsune's SnakeOil RSSフィード

python -c "print''.join([chr(x) for x in 111&1101,110+~-~11,10^11*11,110+~-~11,-~101,-~11^11*11,~-110,111&11*11,11+11+10,11|~-0110,1-~11^11*11,10^11*11,-~11^11*11,110,101])"

2008-02-29

polipo(dolipo)向けproxy.pac

polipo(dolipo)向けproxy.pac - otsune's SnakeOil  を含むブックマーク はてなブックマーク - polipo(dolipo)向けproxy.pac - otsune's SnakeOil  polipo(dolipo)向けproxy.pac - otsune's SnakeOil  のブックマークコメント

追記 404 Not Foundでdolipo 1.0.6以降のUncachable設定に取り入れられたので、以下のproxy.pacは必要無くなったはず。(polipoなどを使っている人には有効です。でもuncachable設定をしたほうが速いかも)。あと2chブラウザやiDiskやbonjourのために「.2ch.net, idisk.mac.com, .local」を除外urlにいれると良い。

追記終わり。

dolipo, a wrapper of polipo [dh memoranda]を微改造

これをproxy.pacという名前で適当なところに保存したら「file:///Users/otsune/Documents/proxy.pac」みたいにファイルパスをAutomatic Proxy configuration URLで指定する。

function FindProxyForURL(url, host)
{
// variable strings to return
var proxy_yes = "PROXY 127.0.0.1:8123";
var proxy_no  = "DIRECT";

    if (isPlainHostName(host))
        { return proxy_no; }
    if (url.substring(0, 4) == "ftp:")
        { return proxy_no; }
    if (dnsDomainIs(host, "2ch.net"))
        { return proxy_no; }
//    if (shExpMatch(url, "http://www.tumblr.com/api/write/*"))
//        { return proxy_no; }
//    if (shExpMatch(url, "http://www.lingr.com/api/*"))
//        { return proxy_no; }
//    if (shExpMatch(url, "http://twitter.com/statuses/*"))
//        { return proxy_no; }
//    if (shExpMatch(url, "http://www.google.com/reader/atom/*"))
//        { return proxy_no; }
//    if (shExpMatch(url, "http://*.megalodon.jp/*"))
//        { return proxy_no; }
    if (localHostOrDomainIs(host, "idisk.mac.com"))
        { return proxy_no; }
    if (isInNet(host, "10.0.0.0", "255.0.0.0") ||
        isInNet(host, "127.0.0.0", "255.0.0.0") ||
        isInNet(host, "169.254.0.0", "255.255.0.0") ||
        isInNet(host, "192.168.0.0", "255.255.0.0")
      ) { return proxy_no; }

return proxy_yes;
}

ファイルは http://www.otsune.com/files/proxy.pac に置いておく。バグ報告はいつも歓迎してる。

追記 CodeReposにもcommitしといた。

追記 GreaseKitをSafariに入れていると有効にならない人がいるらしい。(GreaseKitユーザーだけど有効になる人もいる)。原因は不明。参照→ SimpleBoxes | proxy.pac と dolipo の config ファイル

なぜ除外してるのか

  • プライベートIPの説明は省略
  • ftpはサポート外なので除外
  • 2ch.netはIf-Rangeヘッダーでdatを差分取得する2ch専用ブラウザーで不具合が出る。polipoの現バージョンはIf-Rangeをサポートしていないから。おなじ理屈でbbspinkとかも指定すると良いのかも。2ch専用ブラウザを使っていないのなら省いても良い
  • tumblr API書き込みだけ除外した。念のため
  • LingrRadarがCPU100%になってしまうという報告があった。shExpMatchでwww.lingr.com/api/*だけ除外してもいいのかも
  • P3などのTwitter専用クライアントがHTTP/1.0しかサポートしていないので、twitter APIを除外した。その手のクライアントを使っていなければ外しても良いかも
  • iDiskのWebDAVpolipoの相性が悪いみたいなので除外した。ほかのWebDAVサーバーも相性わるいかもしれない
  • Google Readerで不具合が出たという報告も。shExpMatch(url, "http://www.google.com/reader/atom/*") で
  • あとiTunes Radio Streamingが聴けないという不具合が出てるな。対処法はまだ追求していない →【P3】dolipoを入れると使えなくなる件【追記2】 - とかいろいろ ※追記: ~/.polipoなどのconfigに
maxSideBuffering = 0

を追加すればOk。

マニュアルに

The variable maxSideBuffering specifies how much data will be buffered in a PUT or POST request; it defaults to 1500 bytes. Setting this variable to 0 may cause some media players that abuse the HTTP protocol to work.

と書いてあった。

  • ブラウザのアドレス欄に「ほげ」とか入れると自動的に検索する機能があるらしいんだけど、動作しない。リターンコードの問題?

Uncachable設定で除外する方法もあるよ

~/.polipo-uncachableに

\?
/cgi-bin/
\.(php[345]?|[sp]html|cgi|pl|py|[aj]sp)$
^http://.*megalodon\.jp/
^xn--[0-9a-z]+

とか正規表現で書いてdolipoを再起動するとか。