Sunday
October 19
2008
Googleの検索結果から任意のノイズを取り除くProxomitronフィルタ
このページの更新は終了しました。フィルタの最新状況については、Googleの検索結果から任意のノイズを取り除くProxomitronフィルタ : SARUMINOをご覧下さい。お手数をお掛け致します。
更新情報
- 注意
- 2010/05/06付けのGoogle側アップデートにより、現在使用できません。たぶん私自身このフィルタはないと困るので、そのうち対応すると思います…そのうち……たぶん。→詳細
- Sleipnir Startなど、一部の特殊なスタートページからは利用できません。通常のGoogle検索をご利用ください。 (thanks:CORMさん)
- Googleアカウントにログインした状態では利用できません。ログイン時にはGoogle純正機能「サーチウィキ」をお試しください。
概要
先日深江直人(カッペ)さんのサイトは邪魔だよね、という話というエントリを書きました。この時は「カッペさん」名指しだったのですが、こういうのは他にも沢山あります。例えば価格比較のサイトが他のサイトの一部に組み込まれて大量コピー状態だったり、wikipediaのコピーが乱立していたり、それからOKWaveなんかもものすごい勢いでヒットしますよね。最近では、はてなが大量のspamページをばらまいていると話題にもなりました。
てなわけで、Proxomitronフィルタ「Google | cleanup search results」です。
リストに登録した「邪魔なURL」がGoogle検索にヒットした場合、該当部分を非表示にします。ただ非表示にするとそれはそれで不便なこともあるので、それらはページ下部のページャー部分にfaviconの形でまとめて表示するようにしました。
このfaviconにマウスオーバーするとページタイトルが表示されますので*1、必要であればだーっとチェックしてください。もちろん、faviconをクリックすればそのページへ飛ぶこともできます。

[図2]ツールチップ表示例@Firefox2
最新版 @ 2009/01/26
- Matchの無限ループによりブラウザがハングアップする致命的なバグを修正
- なぜか私の環境では再現せず発見と修正が遅れました。すみません!
- thanks to: 2ch Proxomitron フィルター作成スレッドの皆さん / thinkさん
- 検索結果が1ページのみの場合にfaviconが表示できなくなった(いずれ修正予定)
- はてなのfaviconAPIを標準で使うようにした
- Limitを1000から1200に修正
[Patterns] Name = "Google | cleanup search results 20090126" Active = TRUE URL = "www.google.co(m|.jp)/search?" Limit = 1200 Match = "$KEYCHK(^16)$ADDLSTBOX(SearchSpam,URL(w/o http://))" "|" "(</head>)\8$SET(9=" "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js'></script>" "<script type="text/javascript" src="http://storage.samurizeupboard.jp/prototip.js"></script>" "<link rel="stylesheet" type="text/css" href="http://storage.samurizeupboard.jp/prototip.css">" "<script type="text/javascript">" "document.observe('dom:loaded', function() {" " $$('a.prox_removed').each(function(element) {" " new Tip( element , element.getAttribute('title') , {" "style:'darkgrey', delay:0, border:3, radius:3, width:'auto', hook:{target:'topMiddle',tip:'bottomMiddle'}," "hideAfter:1, hideOn: false, hideOthers:true, target:$('prox_cleanupreport')," " });" " element.setAttribute('title','');" " });" "});" "</script>)" "|" "<li class=g(\sstyle=$AV(*)|)(><h3 class=r><a href=$AV((" "http(s|)://$LST(AdList)*|(http(s|)://$LST(SearchSpam)*)\0)) class=l(\s[^>]+|)>)\8" "(([^<]+)\#((<(/|)(em|b)>|(^(^</a></h3>)))))+{1,*}$SET(9=<li class=g style="display:none;")" "($TST(\0=?*)" "$SET(SpamCounter=$GET(SpamCounter)A)" "$SET(SpamFavicons=$GET(SpamFavicons)" "<a class="prox_removed" href="\0" title="\@"><img src="http://favicon.hatena.ne.jp/?url=$ESC(\0)" style=" ""border:1px solid #eee;width:16px;height:16px;margin-right:1px"></a>)|)" "|" "(</div><br clear="all"/>)\0$TST(SpamFavicons=?*)$SET(9=" "\0<p style="text-align:center" id="prox_cleanupreport">" "Following<script type="text/javascript">" " spamCounter = '$GET(SpamCounter)';" " document.write(' <em>'+spamCounter.length+'</em>');" "</script> result(s) removed by Proxomitron.<br>$GET(SpamFavicons)</p>)" Replace = "\9\8" "" "$SET(CREDIT=" "Prototip 2 : Non-Commercial / Unlimited License Creative Commons 3.0 by-nc-nd , 2008 Nick Stakenburg )"
このフィルタではリストを使用します。任意の名前のテキストファイルをProxomitron\Lists以下に作り、Proxomitronに「SearchSpam」という名前で登録してください。このテキストの中に、検索結果から消したいURLを書いていくことになります。
リストのサンプルを用意しましたので、動作確認にでもお使いください。このリストを使用すると
- カッペさんのサイトは全て非表示
- OKWaveと各種価格比較サイトはそれぞれ本家サイトからの結果のみを表示
するようになります*2。価格比較サイトが大量にヒットする検索例も置いておきますので、併せてどうぞ。
- Shiftを押しながら検索結果のページをリロードすると、リストへURLを登録するダイアログが表示されます。登録する際いちいちtxtを開くのは面倒だと思いますので、簡易的に追加したい場合にご利用ください。
- Shiftキーが他フィルタなどと競合する場合は$KEYCHK()を任意のキーに書き換えるか、あるいは削除してこの機能を無効にしてください。
- AdListも同時に参照しています。AdListに載っているURLがヒットした場合、どうせクリックしてもConnection killed!が表示されて迷惑なだけですので、無言で除外しています。「無言で」というのはつまり、faviconも表示されず、除外エントリ数にも加算されないということです。
- 逆に言えば、faviconで表示されるのも我慢ならないspamサイトがある場合は、SearchSpamではなくAdListに追加してやると幸せになれます。
そんなフィルタです。よろしければどうぞご利用ください。
過去のバージョン
バグ修正 @ 2008/12/11
- 致命的なバグあり:Matchが無限ループするバグがあります
- 検索結果が1ページしかない場合に除外エントリ一覧が表示できていなかったバグを修正
[Patterns] Name = "Google | cleanup search results 20081211" Active = TRUE URL = "www.google.co(m|.jp)/search?" Limit = 1000 Match = "$KEYCHK(^16)$ADDLSTBOX(SearchSpam,URL(w/o http://))" "|" "(</head>)\8$SET(9=" "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js'></script>" "<script type="text/javascript" src="http://storage.samurizeupboard.jp/prototip.js"></script>" "<link rel="stylesheet" type="text/css" href="http://storage.samurizeupboard.jp/prototip.css">" "<script type="text/javascript">" "document.observe('dom:loaded', function() {" " $$('a.prox_removed').each(function(element) {" " new Tip( element , element.getAttribute('title') , {" "style:'darkgrey', delay:0, border:3, radius:3, width:'auto', hook:{target:'topMiddle',tip:'bottomMiddle'}," "hideAfter:1, hideOn: false, hideOthers:true, target:$('prox_cleanupreport')," " });" " element.setAttribute('title','');" " });" "});" "</script>)" "|" "<li class=g(\sstyle=$AV(*)|)(><h3 class=r><a href=$AV((" "http(s|)://$LST(AdList)*|(http(s|)://$LST(SearchSpam)*)\0)) class=l(\s[^>]+|)>)\8" "(([^<]+)\#((<(/|)(em|b)>|(^(^</a></h3>)))))+{1,*}$SET(9=<li class=g style="display:none;")" "($TST(\0=?*)" "$SET(SpamCounter=$GET(SpamCounter)A)" "$SET(SpamFavicons=$GET(SpamFavicons)" "<a class="prox_removed" href="\0" title="\@"><img src="http://favicon.aruko.net/m/e/\0" style=" ""border:1px solid #eee;width:16px;height:16px;margin-right:1px"></a>)|)" "|" "(<!--z-->(</div><br clear="all"/>|))\0$TST(SpamFavicons=?*)$SET(9=" "\0<p style="text-align:center" id="prox_cleanupreport">" "Following<script type="text/javascript">" " spamCounter = '$GET(SpamCounter)';" " document.write(' <em>'+spamCounter.length+'</em>');" "</script> result(s) removed by Proxomitron.<br>$GET(SpamFavicons)</p>)" Replace = "\9\8" "" "$SET(CREDIT=" "Prototip 2 : Non-Commercial / Unlimited License Creative Commons 3.0 by-nc-nd , 2008 Nick Stakenburg )"
初版 @ 2008/10/19
- 致命的なバグあり:Matchが無限ループするバグがあります
[Patterns] Name = "Google | cleanup search results 20081019" Active = TRUE URL = "www.google.co(m|.jp)/search?" Limit = 1000 Match = "$KEYCHK(^16)$ADDLSTBOX(SearchSpam,URL(w/o http://))" "|" "(</head>)\8$SET(9=" "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js'></script>" "<script type="text/javascript" src="http://storage.samurizeupboard.jp/prototip.js"></script>" "<link rel="stylesheet" type="text/css" href="http://storage.samurizeupboard.jp/prototip.css">" "<script type="text/javascript">" "document.observe('dom:loaded', function() {" " $$('a.prox_removed').each(function(element) {" " new Tip( element , element.getAttribute('title') , {" "style:'darkgrey', delay:0, border:3, radius:3, width:'auto', hook:{target:'topMiddle',tip:'bottomMiddle'}," "hideAfter:1, hideOn: false, hideOthers:true, target:$('prox_cleanupreport')," " });" " element.setAttribute('title','');" " });" "});" "</script>)" "|" "<li class=g(\sstyle=$AV(*)|)(><h3 class=r><a href=$AV((" "http(s|)://$LST(AdList)*|(http(s|)://$LST(SearchSpam)*)\0)) class=l(\s[^>]+|)>)\8" "(([^<]+)\#((<(/|)(em|b)>|(^(^</a></h3>)))))+{1,*}$SET(9=<li class=g style="display:none;")" "($TST(\0=?*)" "$SET(SpamCounter=$GET(SpamCounter)A)" "$SET(SpamFavicons=$GET(SpamFavicons)" "<a class="prox_removed" href="\0" title="\@"><img src="http://favicon.aruko.net/m/e/\0" style=" ""border:1px solid #eee;width:16px;height:16px;margin-right:1px"></a>)|)" "|" "<br clear="all"/>(^(^<table id=nav\s))$TST(SpamFavicons=?*)$SET(9=" "<br clear="all"/><p style="text-align:center" id="prox_cleanupreport">" "Following<script type="text/javascript">" " spamCounter = '$GET(SpamCounter)';" " document.write(' <em>'+spamCounter.length+'</em>');" "</script> result(s) removed by Proxomitron.<br>$GET(SpamFavicons)</p>)" Replace = "\9\8" "" "$SET(CREDIT=" "Prototip 2 : Non-Commercial / Unlimited License Creative Commons 3.0 by-nc-nd , 2008 Nick Stakenburg )"

