Privoxy

2010年2月17日 (水)

Googleリーダーでの RSS の広告を Privoxy で何とかしてみる

最近、Googleリーダーで広告が増えてきた気がする。
実際にはきっと広告頻度は変わっていないんだろうけれど何かが忍耐の限界を超えた、直近の『フルボッコオンラインRPG~』というモノが決定打。
ある種の「坊主憎けりゃ袈裟まで憎い」状態になってしまったので広告を流し込んでくる RSSフィード では五つの内一つが広告という頻度も気に入らなく。

軽く調べると Greasemonkey で予め既読にして広告のみ非表示にするものを見つけたので GoogleChrome に入れてみる。
個人的には全文表示の時に既読処理が微妙でスクロールが操作し辛い状態になってしまう……。
もう少し探せばもっと快適なスクリプトが見つかるかもしれない、 Firefox に Greasemonkey を入れれば快適なのかも、等と思いつつも方針転換。

誤クリックの元になっていたバナー画像は一部ブロックしていたものの、以前挫折していた『 Privoxy で Googleリーダー での RSS広告 を何とかしてみる 』ことに再トライしてみる。

結果、とりあえず、まあ、何とかできた。

  1. 全文表示
    before
    Normal_full
    after
    Partial_full
  2. リスト表示
    before
    Normal_list
    after
    Partial_list

痕跡としての空欄は残さざるを得なかったものの自分的には及第点。
基本的には 全文表示 で読むので相対的に リスト表示 ほど空欄が目立たないのも幸い。
『フルボッコオンラインRPG~』だけでなく、ボルボがどーしたとか、FXがどうとか、金利がどうの、などの文字が一切目に入らなくなって快適。

設定ファイル

全体の構成的にはこの時(2010/01/20 のエントリ)の状態。
それぞれの設定ファイルの該当部分を一部抜粋 (2010/02/24 のものに差し替え済み)。

user.action
user-UTF8.filter

備考

  • filterファイル に自身の参考の為にいくつかの設定もコメントアウトして一応残している
  • 一部”見えないもの”も含めて、ついでに幾つかのバナー画像なども消してみている
  • UTF-8 に含めたのはフィルタの Google関連 が分散しないようにしたため
    【追記:2010/02/24】
    結果的に全角文字を含んだフィルタとなったので ShiftJIS にせず UTF-8 で正解だった

 

妥協点

完全に意図したとおりにならなかったのも事実で妥協点ふたつ。

【追記:2010/02/24】
マウスジェスチャで未読/既読処理を行えばさほど苦にならない事に気がついた為、2010/02/24 現在完全に消してこちらの方法で利用中
  1. AD や PR の広告アイテムを完全に消すのは諦める
    after
    完全に消した場合の処理後
    全文表示
    Clear_full
    リスト表示
    Clear_list
    スッキリ!……ただし結果的にNGというか制限事項あり
    何が不味かったかというと、既読処理をクリアできなかった事
    • 広告以外が残っている時に『すべて既読にする』を選択すれば広告もろとも既読状態になる
    • 広告以外を読み切った後には『~での未読アイテムはありません』の状態になって『すべて既読にする』を選択しても表示されない広告が未読として残り続ける
    これらを気にしながら読むよりは、既読処理を気にしないですむようにアイテムとして残す事を選択
  2. https ではなく http で Googleリーダー を利用する
    現状の使い方としては問題がないようなあるような、現在そして将来的に問題があるような……

 

雑感

Firefox の AdblockPlus の助けを借りターゲットを探って試行錯誤、Firebug が使えるような人なら瞬時になんとかできてしまえるんだろうと勝手に想像。
やってみて何となくわかったのは非表示にするだけでは未読が溜まってどうしようもなくなるので、Greasemonkey で既読にして非表示(非表示にして既読?)のようにどこかで「既読処理」を踏む必要があるということ。
やっている事は未踏の領域ではないはずなので、探し方、ググり方が足りないと思いつつも、まぁ楽しかった。

【追記:2010/02/24】
  • 画像が大きすぎたので少し小さくしたモノに差し替え
  • フィルタを更新
    • すべてのアイテムでも完全に消すパターンを追加
    • マッチパターンの途中で改行が含まれる場合にも概ね対応 (確認したフィードではここ一ヶ月ほど遡って取りこぼしは無い模様)
  • 今のところは完全に消すパターンで利用中となったので一部変更
    • 時々何かの弾みで未読数が合わなくなるのには「すべてのアイテムを表示」⇒マウスジェスチャなどで未読/既読処理 を行う

| | コメント (0) | トラックバック (0)

2010年1月20日 (水)

Privoxy のフィルタ

先日には Beta のバージョンも 4 へ入り、そろそろ安定版も 4 に到達しそうな GoogleChrome 。
GoogleChrome とペアで使い始めた Privoxy、今日 2010/01/20 現在 Privoxy は 3.0.15 beta 。
Privoxy は GoogleChrome とだけでなく、Firefox、IE 全ての組み合わせで個人的必携なアプリに。

Privoxy は Adblock+(Firefoxの/GoogleChromeの) とは比較できないぐらい手軽さで"負けている"ものの、プロキシさえ通せばブラウザは言うに及ばず他のPCなどでも(使わないけどREGZAでも)フィルタリングの一元管理できる事が特に便利。
何より、「非表示」ではなく「最初から無かった」的な状態にしてしまえるのが心地良い、さらには自分に読みやすいようにページを書き換えてしまえるのは気分が良い。

お世話になったサイトなど

お世話になったというか進行形でお世話になっているサイト、前の時とほぼ同じ。
理解できなくて眺めているだけといえるものの、大いなる感謝を。

 

Privoxy でやっている事、できること事

Firefox ならアドオン/Greasemonkey、GoogleChrome なら拡張機能/UserScript、などでもっと簡単にスマートにできるという点はさておき、Firefox、GoogleChrome、IE、問わずにまとめて適用/管理できるという事で自分を納得させる。

  1. フィルタリング (広告ブロック、広告非表示)
  2. 読まないリンクを踏まないように目立たせたり、リンクを切ったり
    • Yahoo!トピックスの オリコン系や日経TRENDY系の記事とか個人的に読まない物をうっかりクリックしたくない
    • ソーシャルブックマークとか、無駄(に思える)なリンクサイトとか
  3. 一部の見えないモノを見えるように可視化、可読化 (この程度なら全文読める)
  4. リファラの変更/調整
  5. UserAgent の調整/変更
  6. Cookie の一部調整
  7. リダイレクトをすっきり
  8. 「右クリック禁止」を大雑把に阻止 (マウスジェスチャで文句を言われるのは何か違う)
  9. CSS 記述を追加して、フォント強制、リンクの色&スタイル変更、など
    • Web サイトによってはフォントを変えて崩れを防いだり

4.と 6.あたりは GoogleChrome には嬉しいのかな?

Privoxy の設定

前の時の内容とダブりつつも Privoxy フィルタのメモ。
日々アクセスしているWebサイトがダダ漏れ、なので、今後フィルタ全体を通してブログに書く事は無い腹積もり。

設定ファイルそれぞれの追加&変更箇所。

  • config.txt
    基本的な設定ファイル、利用環境に合わせて適宜編集
  • match-all.action (編集せずデフォルトのまま)
  • default.action (編集せずデフォルトのまま)
  • default.filter (編集せずデフォルトのまま)
  • user.filter (使わない)
  • user-SJIS.filter (新規追加)
    user-EUC.filter (新規追加)
    user-UTF8.filter (新規追加)
    フィルタ用ファイル、config.txt に定義して利用
    各々のファイルはファイル名のままの文字コードで保存

config.txt

  • ファイル名の文字コードの通りにフィルタファイルを使い分ける
  • LAN 内での利用
  • Privoxy のオン/オフをショートカットやブックマークレットから利用可能にする
  • ニコニコ動画は NicoCache_nl (port 8080)を通す

フィルタファイルが多いのは文字コード違いを吸収する方法が分からなかったので。
フィルタファイルで使い回しとなる部分には注釈以外2バイト文字は使わないように注意。

user.action

  • 一部の広告、スクリプトはバッサリ落とす
  • 汎用フィルタ作るスキルが無いのと誤爆がやっかいなので面倒でも基本的に各サイトごとにフィルタリング
  • リファラの書き換え(サイトトップからに見せかけ)は、Vector や SorceForge などダウンロード時リファラを見るサイトには注意
  • リダイレクトをいじってみる
  • なるべくプロキシっぽく見えない UserAgent にする
  • 右クリック禁止を適当に阻止
  • その他、マニュアルをみて適当に変更

 

user-SJIS.filer

SJIS で保存。
このフィルタファイルは基本の共通設定となるものも記述。

主な方針

  • フォント指定(CSS追加)は共通設定となるこのファイルに
    • 「メイリオ」等の2バイト文字は使わず「Meiryo」の様に1バイト文字のみで指定する
  • フォント指定を含めたスタイルの内容と注意事項
    • 一部の文字(<h1>、<h2>)に影を付けたので印刷(PDF化)時に注意
      • アドオンや拡張機能では <h1> などへのスタイル強制をしないことで Privoxy を通しているか否かが見て分かる
    • 英字フォントを優先指定しているので半角 ¥ が \ になるので注意、ショッピングサイトではかなり締まらない表示になる
      • メイリオのボールドに負けないよう多少ゴツイ Verdana を組み合わせたので
    • スタイル指定
      • <head> の最後尾に追加
      • 全体のフォント指定(プロポーショナル)と一部要素(等幅)でフォントのスタイルは分けて指定
        組み合わせの都合上、完全な等幅フォントではないのは妥協
      • テキストのリンクへマウスオーバー時にリンクの下線を表示させる
      • リンククリック時の色を変える
      など
  • HTMLソースを見るとき個人的に見やすいように (連続改行など)
  • Amazon の広告は対応させすぎても殺風景になるので程ほどに書き換え
  • あやしげなオブジェクトを読み込まないようにする
    • absolute な iframe とか
  • そのままでは読めないページを一部読めるようにする (TechTargetの一部など)

その他、粛々とサイト毎に対応。

user-UTF8.filer

UTF-8 で保存。基本的には UTF-8 なサイト用の記述。

主な方針

  • 毎日新聞(mainich.jp)は大きく書き換え、4列のうち1列を消す
  • GoogleChrome のダウンロード用に直リンク埋め込み
  • ココログ編集に邪魔な部分を消す(ネタとか話題とか全く要らないので)

その他、粛々とサイト毎に対応。

user-EUC.filer

EUC で保存。基本的には EUC なサイト用の記述。

主な方針

  • Yahoo! JAPAN 関係
    • まとめ過ぎると後で分からなくなる(なった)ので適当にバラしつつ書き換えの目印を残す
    • オリコン系の記事、日経BP系、プレジデント系などは読みたくないのでリンクを切る
    • オリコンへのリンクでもデータ参照的なリンク先は色を変えて残す
    • ニューストピックス等は UserAgent により表示を変えてきて Chromium で悲しいので、PC向けの表示となる何か適当な UserAgent に書き換える

その他、粛々とサイト毎に対応。

しばらく使い続けてみて分かった事、幾つか

  • 設定ファイルでは行の途中でも単独の # 以降はコメント扱い
    • 某所でも軽くハマッたご様子なので一人じゃなかったと知って安心した?!
  • Firefox でhtmlソースを確認する時は注意、GoogleChrome などで別途確認も
    • Firefox ではスクリプト部分が展開されたような状態になる場合があって、気がつかずに「本来そこに無いもの」へフィルタをかけようとして上手く行かない罠に落ちた
  • AutoPager / AutoPatchWork を効率的に効かせたいのでなるべく縦方向を削ると快適
  • 不確定要素、誤爆しやすそうなモノは取りあえず目立たせて様子をみる
    • とりあえず<h1>など埋め込んで目立たせる、誤爆していなさそうなら普通に書き換える
  • 痕跡を残すのも方針としてアリ、単純ブロックや消すだけだと殺風景
    • google_ad_client や Amazon のアフィ
  • 時間が経って見直すと、何用のフィルタか分からないもの多数、誤爆時にもやっかい
    • メンテナンス考えてフィルタ書こうよ俺、バージョン管理しとけよ俺、という話

 

雑感など

フィルタを作成している時は楽しいというか、ささやかな達成感がある。
が、ふと、累積したフィルタをみると、何をやっているのかと虚しくならないではない……、率直に言えばかなり虚しい。

そもそも GoogleChrome でのメイリオ強制から使い始めたような Privoxy。
GoogleChrome でのフォント強制を

  1. UserScript にやらせる (タイムラグが微妙……)
  2. 拡張機能 Chrome Stylist (うっかり設定を消してしまって泣けた……)
  3. Chrome Stylist は自分にとって高機能すぎたので、適当な自前の拡張機能でCSSがっちり固定(柔軟性に欠けるけど……)

と変遷してきても Privoxy でのフォント強制指定は継続。


Google や Overture はさっくり消しても心が痛まないものの、Amazon は悩ましい。
リファラ削ったり Cookie を書き換えたりしているものの Amazon は目に入らなくなると殺風景。

ページの書き換えは情報の欠落の危うさが常に潜んでいるものの、味を知ってしまえば広告ブロック以上に止められない。
読みたくない記事を読まなくてすむ、は、子供じみてかなり後ろ向きな感じはあるものの、使ってみると快適というより実は”便利”な類、Stylish などには挫折したけれど。
某サイトでは特定の記者(寄稿者)だけ読まないようにしたくとも他の記事も埋もれるので断念。記事の文責、署名、タイトルに入れてくれれば互いに幸せになれるものを。

正規表現、どうにも自分のスキルの無さがにじみ出る。
『[^>]*>』の意図が半年以上経ってからようやく理解できたり、サンプルを丸ごと利用させてもらうだけで、参考にさせてもらっているサイトを読んでもあまりスキルの進歩が無い……。フィルタの記述に一貫性がないのも、その追加時期によるものの差。
『.*』という雑な一致は他のものに変えた方が良いと分かっていても当面放置。

Privoxy は参考にできるフィルタのサンプルはがググれどもほぼ全く出てこないと言っていい状況。
オミトロンはググればそれなりの規模のコミュニティとナレッジが出てきて羨ましい限り。
知りたいのは日本のWebサイトに対しての効率的なフィルタ、なので海外の情報は殆ど意味をなさない。
知りたくとも無いのは考えてみれば当たり前で、汎用フィルタやブロックはデフォルトでそれなりに効いている。そこから先を公開するとなると『各個人の日常的なWeb足跡』がかなりダダ漏れになるのだから望み薄……。


【2010/09/05】
記述ミスにより大幅なパフォーマンスダウンを引き起こしていた箇所を削除
user-EUC.filer の
</div>.*).*>(注目の情報)
となっていた部分が問題
当時このパターンが意図したものが今現在(2010/09/05)のYahooJapanにマッチする箇所が存続しているかは未検証

なお、既に古くて実効性のないフィルタが多数含まれているものの全体の更新は行っておらずこのエントリにあるものは "古い" ことにも注意

| | コメント (3) | トラックバック (0)

2009年9月29日 (火)

初めてのブックマークレット、二つ目のブックマークレット、お蔵入り

GoogleChrome のインストーラ chrome_installer.exe を楽にダウンロードしたかった。

半年ほど前か?
Google Chrome Releases で インストーラをダウンロードするのに 3.0.195.24 ならhttp://dl.google.com/chrome/install/xxx.yy/chrome_installer.exe の URL http://dl.google.com/chrome/install/195.24/chrome_installer.exe を手で入力するのが面倒で作ってみた。
Privoxy で書き換えようかと思ったけれど、当時やってみたかったのでブックマークレット。
どこかの例をほぼまるまるコピペ。コピペでも20分ほどかかってなんとか辿り着いたのがこれ、

GoogleChrome インストーラダウンロード用:ブックマークレット その一

3.0.195.24 の後ろ 195.24 を選択してブックマークレット、とやるとまぁ使えなくもない。
きっちり選択するのが面倒という弱点から削除される事は無くても完成した直後には事実上お蔵入り。
代わりに Privoxy のフィルタで対応、こっちは3分もかからなかった。

GoogleChrome インストーラダウンロード用:Privoxy のフィルタ抜粋 その一

これだと埋め込んだリンクをワンクリックで落ちてくるので手間がはるかに少ない、楽。

で、今日、有るべきハズのリンクが無い。
Chrome090929_1
マッチしないはずがない、と確認すると

The beta channel has been updated to 3.0.195.24. 

が実はhtmlソースをみると

<span style="background-color: white;">
<span style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;">The beta channel has been updated to 3.0.
</span></span></span>
<span style=""><span style="background-color: white;">
<span style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;">195.24
</span></span></span></span>
<span style="background-color: white;">
<span style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;">.&nbsp;
</span></span></span>

のような有様に。こんなのマッチさせる気も起きない……、と考えたのが今思うと馬鹿だった。

そこで2度目は無いと思いつつも万が一を考えて、再びブックマークレット。
3.0.195.24 のような文字列をダブルクリックで選択したら a.b.ccc.dd の後ろの ccc.dd をダウンロードしてくれるようにしたい、前回は不要部分の削り方が分からず断念した経緯有り、ある種のリターンマッチ。
グーグル先生を頼りに、30分ほどかかってようやく完成。

GoogleChrome インストーラダウンロード用:ブックマークレット その二

30分もかかったけど普通に使っている人なら3分で完成だな、と思いつつも期待値の結果が得られたのでまあ良しとしようかと。

完成後にはたと気がついた。

MacOS 100 なんて数年で3桁に届くことはまず考えられないし、ver.100 まで行ってもフィルタが誤爆したってたかがしれているし、見ればすぐ分かる誤爆にしかなりようがないいんだから、a.b.ccc.dd 全体をターゲットにせず、後ろの ccc.dd だけ相手にすれば良かったんだと。ccc が当面3桁なのは確定で他は多くて2桁止まりと予想できるし。そんな訳で Privoxy のフィルタを変更。

GoogleChrome インストーラダウンロード用:Privoxy のフィルタ抜粋 その二

ccc が4桁に届いたら、あるいは何かルールが変わったらその時考える、フィルタの誤爆は目視で対応。
ダウンロードが埋め込んだリンクのワンクリックで済むのでこっちが楽。

今回の恐らくイレギュラーな <span> の嵐への初期対応というか、リターンマッチしたい(不要部分を削りたい)、と考えた意気込みや良しと結論づけて虚勢を張ったところで、結局、またしても、ブックマークレットはお蔵入り。

Chrome090929_2

| | コメント (0) | トラックバック (0)

2009年4月19日 (日)

毎日jp のトップページをいじる

4月1日に見た時は何かの冗談だと思ったけど、本物のリニューアルだったらしくそのままの配置で今日に至る。
『リニューアルアンケート』なんてものをいつの間にか始めているぐらいだから、余程不評で元に近いかあるいは別のアプローチで近々にでも今度こそ使いやすくしてくれるのだろう。

とはいえ我慢の限界。
明日にでも再リニューアルされていそうな気がしつつも、毎日jp のページを個人的に見やすくする、した。

トップページで見た目の比較

Before After
薄い赤で網掛けした場所が
削った部分
4列中左から2番目を丸ごと追放
広告やリンクを適当に削除
記事幅を適当に調整
Mainichijptopraw Mainichijptopfiltered

下部の「ライフスタイル」や「地域」を折りたたむともう少しコンパクトになるが、控えめに言っても『無駄に縦長』。

そして、毎日jp とは無関係に ココログ の制限、1MB超えのファイルをアップロードできない、というクソ仕様のおかげで画像が非常に残念な事に。


一般の記事は基本的に次のような感じ。

Before After
薄い赤で網掛けした場所が
削った部分
基本的にこの程度
Mainichijparticleraw Mainichijparticlefiltered

 

このWebサイトの見た目の変更に何を使ったかといえば Privoxy 。
Privoxy の 毎日jp 関係の設定、基本型はこの時なので、user.action と user-UTF8.filter に記述。

user.action


user-UTF8.filter (user.filter)


 

右の「特集記事」が「協賛特集記事」というようなタイトルになっていないのが嘘を付かれているようで何となく不愉快なので、トップページから非表示になる日もそう遠くない。
広告で成り立つビジネスモデルを真っ向から否定したくはないけれど、広告のある初期状態のデザインは 毎日jp に限らずもはや思い出せなくなって久しい。


2列目の 毎日jp only な部分は残したかったものの、どうにもうまくできなかったので断念。
再リニューアルに期待。

| | コメント (0) | トラックバック (0)

2009年3月26日 (木)

Privoxy 使いどころ

AdBlock Plus に比べると広告ブロックのフィルタを作成する手間は面倒だし正規表現のスキル不足で対応できないことも多々あるけれど Privoxy しばらく使ってみると、思った以上に快適。
複数のPC、複数のブラウザ、で各々のPCの各ブラウザごとに広告ブロックを設定しなくて済む。

PC だけでなく REGZA Z7000 のwebブラウザでも無駄な画像や広告が落とせる、もっとも REGZA Z7000 では試しただけで到底 Web を見る気にはならない...。
実機で試した訳ではないけれど PSP や PS3 、はたまた ニンテンドーDS でも広告ブロックが効けば嬉しいかもしれないし、REGZA と同じかも。


使っていると時々対応も必要で初期導入時のエントリ(2009/03/01)から純粋な広告ブロックのためのフィルタ以外に変更した主な点

  1. IT media で3月20日から3月23日のどこかで何か変更があったらしく Privoxy 経由での表示が軒並み残念な状態に
    • 画像がごっそり抜け落ちる

    リファラがないとまずくなったらしかったので itmedia.co.jp でリファラを参照できるように追加

    user.action


    ただし、気がつくと3月26日には元に戻っていて、この変更は加えなくても良くなっていた。一時的な状態だったのでサイト側の設定ミス?、ポリシーの変更の変更??

  2. GoogleChrome(2.0.169.1) で Google の2回目の検索で文字化けする、これはいつからなのか不明
    • Privoxy の Enabled/Disabled に関わりなく発生
    • Privoxy を経由させなければ問題ない
    • IE8、Firefox3 では問題ない

    リクエストヘッダの違いで一部挙動がうまくいっていないらしい様子
      2回目の検索結果 Accept-Encoding:
    Firefox3(Nightly:3月21日版) OK gzip,deflate
    IE8 OK gzip,deflate
    GoogleChrome(2.0.169.1) NG gzip,deflate,bzip2,sdch
    Privoxy に Accept-Encoding の一部変更用のオプションは無いっぽいので、圧縮 prevent-compression を変更

    user.action

    影響範囲と仕様変更のタイミングも知りたいので、.google. にせず敢えて適用範囲を狭めた状態で設定。
    今日(2009/03/26)現在、Gmail や Googleリーダー の検索でこの対策は不要。
    【2009/04/20:追記】
    PortableGoogleChrome 2.0.172.6 や Chromium 2.0.175.0(13652) 辺りではすでに、この圧縮を無効にさせる対応は無くても正常に表示されるようになっていた

多少なりとも手を掛けて快適な広告ブロック環境を手に入れれば入れるほど

『 一番広告ブロックを使いたい端末は携帯電話なんだよなぁ 』

と思わざるを得ない。

| | コメント (0) | トラックバック (0)