digital 千里眼 @abp_jp

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

Yahoo のリンクに仕込まれている無用なリダイレクトを Privoxy で回避する方法

Privoxy については各自調べてもらうとして…

こんなリダイレクト要らない
  • http://rd.yahoo.co.jp/new/yservice/?http://www.yahoo.co.jp/
  • http://rd.yahoo.co.jp/services/up/r_01/SIG=111q599cg/*http%3A//briefcase.yahoo.co.jp/
  • http://ord.yahoo.co.jp/o/maps/search/SIG=1273r9ej3/EXP=1311673803;_ylt=A3Jvdk5LPC1Omw4BGXgU58J7;_ylu=X3oDMTBhMjU2bDd1BHZ0aWQDR1MwMDM-/*-http%3A//search.yahoo.co.jp/search?ei=UTF-8&p=adblock
  • http://ord.yahoo.co.jp/o/chiebukuro/SIG=12nil9l49/EXP=1311673801;_ylt=A3JvdlJJPC1ObYEADX9NY.B7;_ylu=X3oDMTBhMTlnMDUzBHZ0aWQDS1MwMDM-/*-http%3A//detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1416544754
  • http://ord.yahoo.co.jp/o/image/SIG=12tg5g385/EXP=1311673798;_ylt=A3JvdlBFPC1OGQwAn36U3uV7/*-http%3A//image-search.yahoo.co.jp/detail?p=adblock&rkf=1&ib=1&ktot=0&dtot=0
  • http://rd.yahoo.co.jp/search/promo/P3/shinsai/*http://shinsai.yahoo.jp
何でリダイレクタを噛ませるのか
  • ユーザーの利用動向が知りたいから(トラッキング手法の1つ)

フィルタ(*.filter)

# yahoo-redirect-cleaner: Clean urls linking to Yahoo redirector
FILTER: yahoo-redirect-cleaner Clean urls linking to Yahoo redirector
s@(]*href\s*=\s*["']) \
https?://(?:\w*rd|wrs\.search)\.yahoo\.co\.jp/[^*?]+[*?]+-?(https?)(?:%3A|:)(//[^"']+) \
(["'][^>]*>.*]*>) \
@$1$2:$3$4 \
@igsUx

  • HTML を sed で置換してると考えるとわかりやすい
  • アットマーク(@)は通常の正規表現リテラルのスラッシュ(/)の代わりに使っています(エスケープ面倒なので)
  • 見慣れない正規表現のオプション(英語マニュアルの該当箇所
    • U:ungreedy matching
    • x:空白無視(代わりに \s を使う)

アクション(*.action)

# yahoo.co.jp
# URL をクリーンアップしてリダイレクタを排除
{ \
+filter{yahoo-redirect-cleaner} \
}
.yahoo.co.jp

  • フィルタ対象ドメインを指定
  • 先頭のドット(.)は「サブドメインを含める」の意
ユーザースクリプト(Greasemonkey、Scriptish)でも同じことができる