« たぶん相当痛いの上 | トップページ | 違う 14歳 »

2009年3月 1日 (日)

GoogleChrome にてメイリオと広告ブロックをプロキシ(Privoxy)で何とかしてみる

かねてから GoogleChrome にあるいくつかの大きな不満点のうち二つ

  • フォントを Firefox や IE のように強制できない
    ClearType の効くフォントを使いたい、MS Pゴシック 強制が嫌
  • 広告だらけの状態

をなんとかしたかったので httpフィルタリングなプロキシ Privoxy(ver 3.0.11) を導入。
ニコニコ動画のつながりで オミトロン も候補に考えたものの Privoxy をなんとなくチョイス。
httpフィルタリングプロキシで遊んでみたかったのも理由の一つ。

【2010/01/30 追記】
GoogleChrome でフォント強制だけを行いたい方は、オフィシャルのGoogle Chrome 拡張機能 などでスタイルを指定できる拡張機能を利用するのがお手軽です。個人的には完全解決ではないもののその辺の顛末というか現状の結果の話はこちら(2010/01/24)
Privoxy の個人的には多少進化した用途とフィルタのサンプルはこちら(2010/01/20)、進化してもなお稚拙なのは仕様……。

【2010/03/19: 追記】
GoogleChrome の開発版(5.0.356.0)でも起動オプションの追加によりユーザースタイルが .css ファイルで指定可能になったので補足
--enable-user-stylesheet
この起動オプションを有効にして実行すると
<user-data-dir>/<profile>/User StyleSheet/Custom.css
が生成されるので Custom.css を好みに合わせて適当に編集して UTF-8 BOM無し で保存

例1)
単純に全て メイリオ 強制 (全角文字を含むので必ず UTF-8 BOM無し で保存)


例2)
単純に全て Meiryo UI 強制 (全角文字を含まないので Shift_JIS でも一応効く)


※ @charset "Shift_JIS"; 等は効かないっぽい (dev 5.0.356.0) ので UTF-8 BOM無し で保存するのが無難

【2010/09/02: 追記】
ようやく GoogleChrome の安定版も ver.6 になり起動オプションは不要に
<user-data-dir>/<profile>/User StyleSheet/Custom.css
は特に何もしなくても生成されているはずなので Custom.css を適当に編集

お世話になったサイト

この手のノウハウ系では先駆者の方々にはいつも感謝です。

 

GoogleChrome の起動オプション

HDD から起動しても良いと思えるレベルになったのと、ディスクキャッシュの指定が可能になったので起動オプションを一部変更。 GoogleChrome を丸ごとRAMディスクにコピーして起動していたのをやめたのが以前との大きな違い。GoogleChrome (PortableGoogleChrome 2.0.167.0) の現在の起動オプション。

  • --user-data-dir=../Profil
    GoogleChrome 本体の chrome.exe の一つ上の階層に Profile を (PortableGoogleChrome のデフォ)
  • --enable-user-scripts
    user data ディレクトリを指定しているのでその中 Profil\Default\User Scripts として「User Scripts」フォルダを作成
  • --disk-cache-dir=z:/GoogleChrome
    ディスクキャッシュをRAMディスク(z:)に指定
  • --proxy-server=192.168.0.1:8118
    プロキシ(Privoxy) を指定

以上を踏まえてショートカットのリンク先には次のようなものを幾つか作成して適当に使い分け。

プロキシ有り、ユーザーデータディレクトリを指定、ユーザースクリプト有効、ディスクキャッシュをRAMディスク(z:)へ指定

プロキシ無し、ユーザーデータディレクトリを指定、ユーザースクリプト有効、ディスクキャッシュをRAMディスク(z:)へ指定

 

Privoxy の設定

Privoxy の変更点だけメモ。
基本的に GoogleChrome でWebをあちこち見ることはない(メインブラウザはFirefox)ので、自分の行きそうな場所のみ設定。
あまり真面目に消していない(正規表現ムズカシイ・・・)ので一部見苦しいのはご愛敬。

config.txt

フィルターファイルが多いのは文字コード違いを吸収する方法が分からなかったので苦肉の策

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

user.action

  • 一部の広告、スクリプトはバッサリ落とす
  • 汎用フィルタは断念して各サイトごとにフィルタリング

user-SJIS.filer

SJIS で保存。このフィルターファイルは基本の共通設定となるものも記述。
ここに ClearType なフォント『 MeiryoM(※注1) 』を body への style で無理矢理指定。

user-UTF8.filer

UTF-8 で保存。UTF-8 なサイト用の記述。

user-EUC.filer

EUC で保存。EUC なサイト用の記述。

  • Yahoo! JAPAN 関係は収拾つかなくなったので「どれかヒットするハズ、誤爆やむなし」で放置

 

試行錯誤の過程

そもそも広告ブロックより、フォントを何とか強制したい、が念頭に。

  1. フォント名を『メイリオC(※注2)』で指定しようとした時、UTF-8、SJISなどコードページの違いで2バイト文字を含むフォント名入れ込みに失敗
    • 初めは無いフォントをデタラメに指定すればブラウザ指定のフォントになると思ったら、忌むべき MS Pゴシック が勝つ場合が
    • UTF-8 でフィルターファイルを保存すると、SJIS のサイトでアウトになったりならなかったり
  2. 複数のフィルターファイルを指定できることに気がついたので、各文字コードごと「分離」して複数のフィルターファイルそれぞれへフォント指定
    【!】試行錯誤中の設定の一部抜粋
    (結果的に失敗、フォント名に2バイト文字を含む時にこうやってバラで指定するしか無いんだろうか、という疑問が残る)
    • user.action
    • user-SJIS.filer
    • user-UTF8.filer
  3. で、うまくいったと思ったら Yahoo! JAPAN の微妙な文字コード混在サイトの存在により一部で不細工な結果に
  4. フォント名に2バイト文字を含めないようにしたフォント『MeiryoM(※注1)』を別途作成して指定する方向に路線変更
    • フォント MeiryoM(※注1) を body への style として指定
  5. フォントまわりの指定をしてみるテスト
    • フォント MeiryoM(※注1) を body への style として指定、ついでにリンクの下線を通常時は無しで下境界線破線、マウスオーバー時に下線表示

      やりすぎ
    • ユニバーサルセレクタでフォント MeiryoM(※注1) を指定

      やる前から分かっていたものの、かなり悲しい結果に
    リンクの下線消し程度ならともかくこれらはやり過ぎたのでテストのみでボツ

フォント関連以外では汎用フィルターを作ろうとするも挫折、結局サイトごとに記述することに。
div の id="Ad" や noscript 部分の削除とかで結果的に誤爆するサイトは嫌がらせにしか思えないし、document.write で逐一広告を書き込んでくるサイトの努力は買うけど・・・。

文字コードを意識せずにすむ、もっとスマートな方法をご存じの方教えてくださいませ。

 

雑感

それにしても、サイトの中で文字コードを混在させる Yahoo! JAPAN のツギハギっぷりには笑った。

GoogleChrome がメインブラウザになるための条件として本質的には、自分の表示したいフォントで固定、Firefox の AdBlock+ のようなスマートな広告ブロック、が必須な事に昔も今も変わりない。
『ブラウザでのフォント指定』+『Privoxyによる書き換え』、 で 100% のWebサイトでの対応はありえなくても 90% 以上でフォントの強制が有効になったはず、 Web サイトで ClearType なメイリオ系 で表示できるようになったので良しとすることにする。
広告ブロックよりもこの点が満足度が高い。

 

【補足】

  • 【※注1】 MeiryoM はメイリオを改造した自前のフォント
  • 【※注2】 メイリオC はメイリオを改造した自前のフォント

|

« たぶん相当痛いの上 | トップページ | 違う 14歳 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: GoogleChrome にてメイリオと広告ブロックをプロキシ(Privoxy)で何とかしてみる:

« たぶん相当痛いの上 | トップページ | 違う 14歳 »