Proxomitron

Proxomitron

概要

ローカルプロキシ。「このページはこうなってればいいのに」を実現するソフト。

ネットにアクセスする際にヘッダやファイルの中身を書き換え、スクリプト無効化、クッキー・リファラ操作、広告削除、テキスト・URL書き換えなど、様々なことが可能。

読み方は「プロクソミトロン」らしい。日本では「オミトロン」と呼ばれることが多い。

長所

  • ネット上の様々な不便を解消しうる
  • セキュリティ対策にもなる
  • ブラウザを選ばない

短所

  • フィルタ作成が初心者には難解すぎる

その他

  • レジストリ不使用

使用

使用感

極めて取っ付きにくく、「どうしても必要」というタイプのソフトではないため、しばらくは敬遠していた。

しかし、各ユーザーがまとめWikiや自分のBlogなどで自作フィルタを公開していたりもするし、フィルタの作り方をちゃんと覚えてみれば、確かに便利なことは多い。フィルタ作成はいまだに面倒だし、無ければ無いでどうにもならないわけではないが、地味な快適さを追求するなら、一度使い込んでみるのがいい。

ただし、作者が死んで更新が止まっているし、検索して見つかる参考情報もある程度の知識を前提としたものであるため、うまく使いこなすにはそれなりの時間と努力を覚悟する必要がある。

正規表現

Proxomitronで使用される正規表現は、一般的なものと異なりやや特殊。*や?の扱いは、どちらかというと所謂「ワイルドカード」と呼ばれるものに近い。サクラエディタ正規表現に慣れた身としては、ルールの違いに戸惑った。詳しくは、Wikiサイトの翻訳文を参照。

自作フィルタ

YouTubeへのテキストリンクに動画埋め込みボタンを追加

iframeを用意し、テキストリンクの頭に追加したリンクをクリックすることで動画をiframe内に読み込み。もう一度クリックすると非表示にする。

[Patterns]
Name = "YouTube Inline"
Active = TRUE
Bounds = "$NEST(<a(\s[^>]++)\#href=$AV(\9)\#>,</a>)"
Limit = 512
Match = "<a\s[^>]++href=$AV(http://(www|jp)\0.youtube.com/watch\?v=\1)[^>]++>\2</a>"
        "$SET(YT=$GET(YT)y)"
Replace = "<a id="$GET(YT)*""
          " href="http://\0.youtube.com/v/\1""
          " title="Open""
          " target="$GET(YT)""
          " onClick="document.getElementById('$GET(YT)z').style.display='block';"
          " document.getElementById('$GET(YT)x').style.display='inline';"
          " this.style.display='none'""
          " style="color:red;">[*]</a>"
          "<a id="$GET(YT)x""
          " href="#$GET(YT)""
          " title="Close""
          " onClick="document.getElementById('$GET(YT)z').style.display='none';"
          " this.style.display='none';"
          " document.getElementById('$GET(YT)*').style.display='inline';""
          " style="display:none; color:red;">[x]</a>"
          "<a href="\9"\@>\2</a>"
          "<div id="$GET(YT)z" style="display:none;">"
          "<iframe src="" name="$GET(YT)" width="425" height="344"></iframe>"
          "</div>"
画像への直リンをクリックするとその場で表示

imgタグを用意しておいて、javascriptでクリック時にURLを読み込ませる。表示された画像をクリックすると元に戻る。

クリック時は原寸表示になるので、大きい画像だと逆に見づらい。あと普通に画像URLを開きたいときはコンテキストメニューからになる。

[Patterns]
Name = "Image Inline"
Active = TRUE
Bounds = "$NEST(<a(\s[^>]++)\#href=$AV([^?#]++.(jpeg|jp[eg]|gif|png|bmp|ico))\#>,</a>)"
Limit = 256
Match = "<a\s[^>]++href=$AV(\0)[^>]++>\1</a>"
        "$SET(II=$GET(II)i)"
Replace = "<a id="$GET(II)*""
          " target="_self""
          " style="border-bottom:2px solid #fcc;cursor:pointer;""
          " onClick="document.getElementById('$GET(II)').src='\0';"
          " document.getElementById('$GET(II)').style.display='inline';"
          " this.style.display='none';">\1</a>"
          "<img src="""
          " id="$GET(II)""
          " style="display:none;""
          " onClick="document.getElementById('$GET(II)*').style.display='inline';"
          " this.style.display='none';">"

* はてなダイアリーキーワード:Proxomitron