080906Satday
■HatenaのIDが抜ける件の分析@2ステップで抜ける!
http://blog.isocchi.com/2008/09/hatena.html
と、思って、ソースを見て調査してみたんだけど、意外とめっさ簡単なロジックでびっくり。w
1.GET:投げる。entries.jsonにリクエスト。RKSパラメーター取得。
http://s.hatena.ne.jp/entries.jsonにGET
{"rks":"***********************","can_comment":0,"entries":[]}
がjsonで返ってくる。こんなかの、[RKS]パラメータを記録。
2:GET:もっかい投げる。star.add.jsonにリクエスト。
1.で取得した[RKS]パラメータをひっつけて、再度GETする。
http://s.hatena.ne.jp/star.add.json?uri=http://hoge.jp/&rks=***************************
そーすっと、
{"quote":"","name":"satoru_net"}
みたいのがjsonで返ってきて、hatena_idげっと。
この仕組みは楽しいなあ。はてなユーザ向けサービスがサクサク作れそうだ。
というか、これってもともと、そういうのを想定されて作られてる気もしなくもない。
サンプルソース
上記、手順を再現したソース。
function $(id){ return document.getElementById(id); } window.onload = request1; function request1(){ var uri = 'http://s.hatena.ne.jp/entries.json?callback='; new JSONLoader({callback:request2,config :[{ uri: uri }]}).load(); } function request2(results){ var rks = results.rks; var uri = "http://s.hatena.ne.jp/star.add.json?uri=http://hoge.jp/&rks=" + rks + "&callback="; new JSONLoader({callback:result,config :[{ uri: uri }]}).load() } function result(results){ $("hatena").innerHTML = ("<h1>Hello " + (results.name ? results.name : "Guest") + "</h1>"); }
ちなみに、JSON取得部分は↓を参照。
リンク元
- 179 http://blog.isocchi.com/2008/09/hatena.html
- 104 http://reader.livedoor.com/reader/
- 58 http://d.hatena.ne.jp/
- 46 http://satoru.net/
- 44 http://b.hatena.ne.jp/entrylist?sort=hot
- 44 http://hatebutv.com/index/loadpage/aHR0cDovL2QuaGF0ZW5hLm5lLmpwL3NhdG9ydV9uZXQvMjAwODA5MDUvMTIyMDYxNzUwMw==/89d7c6aa41911168edbfdf7a14b0411d/1220641653
- 34 http://www.google.co.jp/search?q=9011622001Y31015&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 23 http://www.macotakara.jp/blog/index.php?ID=1012
- 22 http://www.google.com/reader/view/
- 21 http://www.google.co.jp/search?q=9011622001Y31015&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a

