Proxomitron

Proxomitron とは?

Proxomitron はWindowsで動作するプロクシだが、一般的なプロクシとは異なりウェブページの書き換えを主な目的とするプロクシだ。プロクシはあなたの端末のブラウザと閲覧先のサーバーの間に入って動作する。一般的なプロクシは、ページをキャッシュすることでアクセスを高速化したり、ファイヤーウォール内の端末から外のウェブサイトへアクセスするための橋渡しになったりする。Proxomitron はそういったプロクシとは違うということだ。

Proxomitron を使えば、邪魔な広告が表示されないようにしたり、ポップアップ広告が飛び出さないようにすることもできる。目障りなアニメーション GIF を止めたり、耳障りな midi が勝手に鳴り出さないようにもできる。User-Agent を偽装したり、Referer を正直に知らせないようにもできる。それだけではなく、いつも見ているページの外観をがらりと変えることもできる。

Proxomitron についてここで詳しく書かなくてもすでに解説がいくつかあるからそちらを見ていただきたい(Google)。デフォルトの外観はちょっと目に優しくないので「設定(config)」でテクスチャを使わないようにした方が良い。ちょっと動作がおかしいが、「テクスチャを使用しない」にチェックを入れた後でテクスチャを適当に指定し直せば、テクスチャが表示されなくなる。

"Suppress all javascript errors" のようなフィルタで <start> で HTML の先頭に <!--//--><script> を挿入するようにしていると、たまに表示がやや乱れるサイトがあった(文字が大きくなったり、段組が崩れたり)。仕方がないから <start> ではなく <head> の直後に置くようにした。ただし、このタイプのフィルターをまとめなくて書かなくてはいけないかも(もしくは「複数のルールのマッチを許可する」"Allow for multiple matches" を有効にすればいいはず)。

最近はブラウザでユーザーCSSが使えるようになってきたので、それによって広告を見えないようにすることもできる。Firefoxの拡張機能であるAdblockはまさにこの方法で広告を削除している。ただし、あまり多く書くとレンダリングに時間がかかってしまう恐れがある。その点、Proxomitronは先にデータを改変してしまうのでそのような問題はない(もちろんProxomitronでの解析に時間がかかることはある)。さらにユーザーCSSだとドメイン毎に処理を振り分けることはできないが、Proxomitronでは可能だ。Windowsでしか動かないのが残念だし、どうもso-netと相性が悪いので最近は使っていないが、Proxomitronの自由度の高さと応用範囲の広さは特筆に値する(その分とっつきにくいが)。

作者Mr. Scott Lemmonのご冥福をお祈りします。
Scott Lemmon, Proxomitron Author, Deceased May 1st 2004 - CastleCops

フィルタ

以下のフィルタを使うには、[Patterns]以下を適当にクリップボードにコピーして、web ページフィルタの設定画面でどれかフィルタを選んだ後に右クリックをして「フィルタをクリップボードからインポート」を選べばよい(選んでいるフィルタが上書きされることはない)。

PDF へのリンクをクリックしたときに確認ダイアログを表示する
2004-08-06, 2007-12-05 (余計な&を削除)
[Patterns]
Name = "PDF confirmation"
Active = TRUE
Bounds = "<a\s[^>]++>"
Limit = 2048
Match = "(*)\1"
        "href="+{0,1}([^" ]++.pdf)\2"+{0,1}"
        "(>|\s[^>]++>)\3"
Replace = "<a href="\2">[PDF]</a>"
          "\1href="javascript:if(confirm('Are you sure to open this PDF file?'))"
          "{location.href='\2'}"\3"
Goolge の検索結果の直前に出る広告を非表示にする
2004-08-08, 2007-12-05
[Patterns]
Name = "Google ad suppressor"
Active = TRUE
URL = "[^/]++.google.(co.jp|com)/"
Limit = 10
Match = "id=$AV(mbEnd)"
Replace = "style="display:none""
ttp: で始まる URL をちゃんとリンクにする
2004-09-25, 2007-12-05 (エスケープが不十分だった)
[Patterns]
Name = "ttp > http"
Active = TRUE
Limit = 127
Match = "([^h])\1(ttp://[\-_.!~*'()a-zA-Z0-9;/?:\@&=+\$,\%#]+)\2([^\-_.!~*'()a-zA-Z0-9;/?:\@&=+\$,\%#])\3"
Replace = "\1<a href="h\2">\2</a>\3"
ime.nu をはずして直接アクセスするようにする
2004-09-25
[Patterns]
Name = "ime.nu to direct access"
Active = TRUE
Multi = TRUE
Bounds = "<a\s[^>]++>"
Limit = 1024
Match = "(<a\s*)\#ime.nu/([^>]*>)\#"
Replace = "\@"
Infoseek isweb のバナー広告を削除
2004-08-11, 2007-12-05
[Patterns]
Name = "Kill Infoseek ad banner"
Active = TRUE
URL = "[^/]++.hp.infoseek.co.jp"
Limit = 3000
Match = "$NEST(<!-- isweb auto-insert [/* ]+-->,<!-- inserted by isweb server [/* ]+-->)"
参考: Proxomitron フィルター作成スレッド Part8

戻る
2004-08-08, 2007-12-05. by o.junn