yahooディレクトリの直リンのやり方

ちょっとまえに直リンに変わって騒いでいたので
どうやってるのか気になったので見てみました。

これが実際のHTMLです。

<a href=”****” onmousedown=”return catrd(this,’&l=SIT&sid=2075187116&ssid=2076442857&loc=1&sig=0101cb926a7020f1c40d20a1169d8935&rd=’,”,’site’);”>*****

でこれがjsのソース

function catrd(o,r,f,t){
var pat=/:/;
var href=o.href;
var rbase=’http://srd.yahoo.co.jp/CAT’;
var cbase=’http://dir.yahoo.co.jp/proc/?m=redir’;
var tourl=href.replace(pat,’%3A’);
if(f!=””){
f=’?frc=’+f
}
if(t!=”site”){
url=rbase+r+”*-“+tourl+f
}else{
var enc=encodeURIComponent?encodeURIComponent:escape;
url=cbase+r+enc(href)
}
o.href=url;
o.onmousedown=””;
return true
}

適当にコメントつけてみると

function catrd(o,r,f,t){
var pat=/:/; //正規表現のパターン代入
var href=o.href; リンクのhref属性を代入
var rbase=’http://srd.yahoo.co.jp/CAT’; //URL代入1
var cbase=’http://dir.yahoo.co.jp/proc/?m=redir’; //URL代入2
var tourl=href.replace(pat,’%3A’); //正規表現で:を%3Aに置き換え
if(f!=””){//fがブランク以外の例がないのでよくわからんけど置き換えてる
f=’?frc=’+f
}
if(t!=”site”){//内部リンク系だったら
url=rbase+r+”*-“+tourl+f
}else{//外部リンク系だったら
var enc=encodeURIComponent?encodeURIComponent:escape; //encodeURIComponentが使えたら使う、使えなければescape
url=cbase+r+enc(href) //URIエンコードしてURL作成
}
o.href=url; //Aタグのhref属性を書き換え
o.onmousedown=””; //onmouse属性を空っぽに
return true
}

こんなかんじかな。

ようはクリックしたら動的にURLを変えてカウントしてるだけですが。

これをちょいいじれば

//引数o:this r:クリックカウントのURIに渡したい引数
function test(o,r){
var u=’http://***’; //クリックカウントURI
var e=encodeURIComponent?encodeURIComponent:escape; //encodeURIComponentが使えたら使う、使えなければescape
h=u+r+e(o.href); //URIエンコードしてURL作成
o.href=h; //Aタグのhref属性を書き換え
o.onmousedown=””; //onmouse属性を空っぽに
return true
}

こんなかんじにして
クリックカウントのファイルからURLに飛ばせれば自分で使えますね。
テストしてないのでエラーでるかも