Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • Categories

  • Ranking

  • Comments

  • Others


  • 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に飛ばせれば自分で使えますね。
    テストしてないのでエラーでるかも


    Leave a Reply

    2008/10/13 06:18:15