Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2010-10-02

はてなフォトライフに base64 形式で画像を POST

14:20

そういう方法が Taberareloo のソースにあるのを教えてもらった。(あるのは知ってたけど読んだことはなかった)

secondlife さんが twitter で書いてるのを見たことがある。はてなハイク用の隠し API とか。


curl で叩いてみたので覚え書き。

まず hatena.ne.jp の cookie を確認して rk というやつの値をコピー。b というやつもコピーしてもいいかもしれないけど今回の用途には不要。__utma とかは Google Analytics なので不要。

f:id:edvakf:20101002135914p:image

次に http://b.hatena.ne.jp/my.name という JSON をブラウザで開いて、"rkm" というやつをコピー。

で、curl から

% curl -v -d "name=edvakf" -d "rkm=さっきコピーしたやつ" -d "ext=gif" -d "model=capture" -d "image=R0lGODlhAQABAGAAACH5BAEKAP8ALAAAAAABAAEAAAgEAP8FBAA7" -d "fotosize=1" -d "folder=" -b 'rk=さっきコピーしたやつ' "http://f.hatena.ne.jp/edvakf/haiku"
* About to connect() to f.hatena.ne.jp port 80 (#0)
*   Trying 59.106.108.69... connected
* Connected to f.hatena.ne.jp (59.106.108.69) port 80 (#0)
> POST /edvakf/haiku HTTP/1.1
> User-Agent: curl/7.19.6 (i386-apple-darwin10.0.0) libcurl/7.19.6 OpenSSL/0.9.8m zlib/1.2.4
> Host: f.hatena.ne.jp
> Accept: */*
> Cookie: rk=ほにゃらら
> Content-Length: 138
> Content-Type: application/x-www-form-urlencoded
> 
< HTTP/1.1 200 OK
< Date: Sat, 02 Oct 2010 04:38:27 GMT
< Server: Apache/2.2.3 (CentOS)
< X-Framework: Hatena/2.0
< Content-Length: 33
< Content-Type: text/html
< Set-Cookie: b=ほにゃらら; path=/; expires=Fri, 27-Sep-30 04:38:27 GMT; domain=.hatena.ne.jp
< Vary: Accept-Encoding
< Connection: close
< 
* Closing connection #0
f:id:edvakf:20101002133826p:image

とやって投稿できる。

curl の -b オプションは cookie で、-d オプションは POST の body に URL エンコードして渡す引数のこと。

上の image という部分はネットで拾った 1px の GIF 画像。fotosize というのは画像の幅か高さのうち大きい方を書くらしい。ext は png とか gif とか。


これの利点は、WSSE とか使わなくていいしバイナリを送るわけでもないので JavaScript だけでできること。canvas との相性もいい。

しかし JSON ファイルを読み込まないといけないので、任意のサイトから投稿できるというわけではない。(つまり「こんにちはこんにちは攻撃」はできない、と思われる)

拡張とか Greasemonkey でうまく使えないかなー、とか。

トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20101002
 |