digital 千里眼 @abp_jp

アナログな日常とデジタルの接点

アメブロ更新チェックが WWWC で出来るようランダム変更される文字列等を Privoxy を使って消す例

Privoxy を全く知らなければ、簡単な紹介はこちらです

更新チェッカー(wwwc)が誤作動する

更新確認を今でも WWWC でやってるんですが、コンテンツ内容(本文)以外の変更に反応してしまうケースがいろいろ出てきました。これを Privoxy で打ち消そうという企画
今回はテストケースとしてアメブロを取りあげます。アメブロでは解析用 img タグを埋め込んでいるようなので、ついでにそれも消してしまいましょう

誤作動原因:ヘッダー部の検索ボックスへ文字列の事前挿入

  • ランダムに設定される文字列を削除することで WWWC の誤検出を防ぐことが出来る
Befor(勝手にスター・トレック挿入...) After(勝手に挿入された部分だけ削除)
  • フィルタ例(アクションファイルについては最後にまとめて紹介する)
################################################################################
# custom-attribute-remover1: Remove capricious attributes(Recursive a tag is NOT supported)
# ameblo.jp
#
FILTER: custom-attribute-remover1 Remove capricious attributes(Recursive a tag is NOT supported)
s@(<input\sname="q"\sclass="barKey"\stype="text"\svalue=")[^"]+("\smaxlength="\d+"\ssize="\d+"\saccesskey="\w"\s*/>) \
@$1$2\
@igsUx
  1. スペースを \s に置き換え
  2. 将来変更されるかもしれない数値部分を \d
  3. アクセスキー指定も同様に変更されるかもしれないから \w にしておく
  4. 変動部分の前後(変動しない部分)をカッコでくくって、それぞれ置換後に $1 $2 とする

アクセス解析用? img タグ削除

  • img タグなのに style 属性で display:none されていて、ちょっと気味悪い
  • 英数字の羅列はリロード毎に変化し、文字列長も可変のようだ

...

################################################################################
# stealth-img-killer: Remove stealth img tags by attributes(Recursive a tag is NOT supported)
# ameblo.jp
#
FILTER: stealth-img-killer Remove stealth img tags by attributes(Recursive a tag is NOT supported)
s@<img\s[^>]*(                                                                            \
    src="http://act\.ameba\.jp/blog/\w+"\sstyle="display:none"                          | \
    ____ending____dammy____condition____                                                  \
)([^/]?[^>])*(?:/> | >[^<]*</img[^>]*>) \
@\
@igsUx
  • 最初のカッコ内で削除する img タグの属性を指定する
  • 追加可能(| \ 忘れずに)

Flash もランダム生成しているようなので削除(2009-06-01 追加)

  • 最初はタグだけ残そうかと思ったが id がブレるので消すように変更した(2009-06-02 00:50 微修正
################################################################################
# custom-elements-remover8: Remove set of Elements
# ameblo.jp
#
FILTER: custom-elements-remover8 Remove set of Elements
s@<li\sid="barPrF?">.*</li> \
@\
@igsUx
  • 興味深いのは、id が barPr の場合と barPrF の場合があり、F が付く場合のみ Flash 生成用スクリプトが要素内に含まれること


アクションファイル設定
  • つくったフィルターとその適用ドメインを指定
##################################################
# アメブロ用                                   ###
# ホスト名を省略する場合、最初にピリオドを指定 ###
#
{                                    \
  +filter{stealth-img-killer}        \
  +filter{custom-attribute-remover1} \
  +filter{custom-elements-remover8}  \
}
ameblo.jp
ここまでしてやる必要は...

ないかも