Amazonのアソシエイト用リンクを無効にするアドオンを無効にするJavaScript。

一部で話題になっている "I Dislike Amazon Affiliate!" という Firefox プラグイン。
2chまとめサイトなどに特に多いAmazonアソシエイトの広告。
その広告のリンクを踏んで商品を買うと、紹介料として報酬が広告を置いてる人に入ります。
このアドオンは、ページ内のAmazonアソシエイト用リンクを通常のリンクに置換します。
これでわざわざ検索して商品を買う手間を省くことができます!
…ということなのですが、まとめサイト・コピペサイトのアフィリエイトリンクはともかく、ウチのような、地道にオリジナルコンテンツで勝負しているブログまで巻き添えを食ってお小遣いが減るのは納得できないのです。

ということで "I Dislike Amazon Affiliate!" の機能を無効にする JavaScript を考えてみた。多分きちんと働いてくれる筈。htmlのヘッダ部分に書いておけばOK。your_id のところにあなたのアソシエイトIDを入れてみてください。
<script type="text/javascript">
window.onload = function(){
  var links = document.getElementsByTagName( 'a' ); // …(1)
  for( var i = 0 ; i < links.length ; i++ ){
   var link = links[i].href ;
   if( link.indexOf( 'amazon.co.jp' )!=-1 && link.indexOf( 'your_id' ) == -1){ // …(2)
    if( link.indexOf( '?' )!=-1 ){   // …(3)
      links[i].href = link + '&tag=your_id' ; // …(4)
    }else{
      links[i].href = link + 'your_id'; // …(4)
    }
   }
  }
}
</script>
(1) ページ内のリンクをコレクションして、
(2) それが Amazon.co.jp へのリンクであり、且つアソシエイトIDが付いていなければ、
(3) リンクタイプがクエリ形式かそうでないかを判別して、
※リンクが http://www.amazon.co.jp/gp/product/XXXXXXXXXX/ref=as_li_ss_tl?ie=UTF8&linkCode=XXX&camp=XXX&creative=XXXX&creativeASIN=XXXXXXXX…という形か、
http://www.amazon.co.jp/exec/obidos/ASIN/XXXXXXXX/…という形かを判別。
(4) hrefの末尾にアソシエイトIDを付け直す。

要は、ページのロード中に "I Dislike Amazon Affiliate!" によって削除された自分のアソシエイトIDを、ページロード後に復活させれば良いわけです。

記憶ではURI内のアソシエイトIDの場所に制限は無かった筈なので、これでめでたくアソシエイトリンク復活!…となると思うのだけれど深く検証はしていません。

これだけだと、どんなブラウザでアクセスされた場合でも動いてしまうので、Firefoxかそれ以外かを判別するコードを入れたほうが良いかもしれない。Firefoxに特定のアドオンがインストールされているかどうかをJavaScriptから調べる方法は無いみたい。

しかしアフィリエイトを過度に忌避する風潮は何とかならんかね。そして勝手に他人の作ったページの内容を書き換えるプラグインって、どうなのよ。

  → I Dislike Amazon Affiliate!|Firefoxアドオン

カテゴリ: