ぶっくまーくかんり(2)ブックマークの一括取得

http://b.hatena.ne.jp/help/api

自分のブックマークに投稿したブックマークデーターはエクスポート機能により一括でダウンロードすることが可能となっております。(データのエクスポートは設定画面より可能です。)

このデータのエクスポートを外部プログラムからも行えるよう、エクスポート用URICookie 認証以外に はてなブックマークAtomAPIに同じくWSSE認証での認証が行えるようになっています。各フォーマットごとのエクスポートURI (例えば Atomフィードでのエクスポートの URIhttp://b.hatena.ne.jp/dump) になりますが、この URI に対して WSSE 認証を行うことでブラウザ以外のプログラムからでも直接データのダウンロードが可能です。

へえ。
http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%afAtomAPI?kid=104141#p5

■ WSSE認証
AtomAPIの認証にはWSSE認証が利用されます。はてなブックマークAtomAPIの利用にはWSSE認証が必須です。WSSE認証の詳細に関しては、はてなフォトライフAtomAPIのWSSEの項 (http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d5%a5%a9%a5%c8%a5%e9%a5%a4%a5%d5AtomAPI?kid=88110#wsse) を参照してください。

なるほど。
http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d5%a5%a9%a5%c8%a5%e9%a5%a4%a5%d5AtomAPI?kid=88110#wsse

■ WSSE認証
AtomAPIの認証にはWSSE認証が利用されます。はてなフォトライフAtomAPIの利用にはWSSE認証が必須です。WSSE認証の詳細に関しては http://www-128.ibm.com/developerworks/webservices/library/ws-secure/ (英語) を参照してください。

・・・たらいまわし?しかも何で外部リンクがdeveloperworks・・・。しかも全然詳細情報じゃないし。abstractじゃないのよ。

まあいっか。

送信するX-WSSEヘッダのサンプルは以下のようになります。

X-WSSE: UsernameToken Username="hatena", PasswordDigest="ZCNaK2jrXr4+zsCaYK/YLUxImZU=", Nonce="Uh95NQlviNpJQR1MmML+zq6pFxE=", Created="2005-01-18T03:20:15Z"

Username
ユーザー名。(はてなフォトライフAPIでははてなアカウントのid)
Nonce
HTTPリクエスト毎に生成したセキュリティ・トーク
Created
Nonceが作成された日時をISO-8601表記で記述したもの
PasswordDigest
Nonce, Created, パスワード(はてなアカウントのパスワード)を文字列連結しSHA1アルゴリズムでダイジェスト化して生成された文字列を、Base64エンコードした文字列

なるほど。

例に載ってたサンプルスクリプトを実行してみる。

$ perl apisample.pl kkobayashi_a ****
HTTP/1.1 200 OK
Connection: close
Date: Sat, 13 Jan 2007 03:17:00 GMT
Server: Apache
Content-Length: 372
Content-Type: application/x.atom+xml; charset=utf-8
Client-Date: Sat, 13 Jan 2007 03:16:58 GMT
Client-Peer: 125.206.198.150:80
Client-Response-Num: 1
X-Framework: Hatena/2.0

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://purl.org/atom/ns#">
  <link type="application/x.atom+xml" rel="service.post"
        href="http://f.hatena.ne.jp/atom/post" title="kkobayashi_a&#39;s fotolife" />
  <link type="application/x.atom+xml" rel="service.feed"
        href="http://f.hatena.ne.jp/atom/feed" title="kkobayashi_a&#39;s fotolife" />
</feed>

ほほう。