fslashtの日記: はてなダイアリー自動転記スクリプト開発(3) 3
STATUS: 故障中
● パケット解析
ログイン時と日記POST時のパケットをダンプしてみました。
・ログイン時
・日記POST時(新規投稿)
・日記POST時(2回目)
▼ ログイン時
・[ブラウザ→はてな] ユーザー名・パスワードを入力して送信
パラメータ「key」にユーザー名、「password」にパスワードを平文で設定してPOSTしています。
・[はてな→ブラウザ] クッキーの設定、ユーザーの日記ページへ移動
はてなからはCookieが渡されます。ユーザー名、パスワードを元に生成された暗号っぽいものです。ログインしなおしても同じ値です。
また、Locationヘッダにより日記ページへ転送されます。
・[ブラウザ→はてな] クッキー付で日記ページのGETリクエスト
ブラウザから日記ページへアクセスする際に、Cookieを送ればユーザーとして認識されるようです。
・ [はてな→ブラウザ] ユーザーの日記ページ内容
▼ 日記POST時
Cookieでセッションキーを送りつつ、パラメータをデータ部としてPOSTします。
例)Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
POSTデータ部は次回説明
● Cookieについて
Cookieは、キー「rk」に対してセッションIDが入る。
以下の例では「XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」としている。
単純にユーザー名+パスワード(もしくはパスワードのみ)を暗号化したもの。
ログインしなおしても同じ内容が渡される。
▼ IE(6.0)の場合
・保存場所(ファイル名)
C:/Documents and Settings/USERNAME/Cookies/USERNAME@hatena.ne[1].txt
「USERNAME」にはユーザー名が入る。
「[1]」ないの数字が異なる(または「[]」自体無い)場合がある。
・Cookie内容例
rk
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
hatena.ne.jp/
1536
2109175808
30335102
3986410288
29600847
*
※「XXXXXXXX~」実際にはセッションキーが入る(暗号)
ログイン時のパケット (スコア:1)
▼ [ブラウザ→はてな] ユーザー名・パスワードを入力して送信
POST /login HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
Referer: http://d.hatena.ne.jp/login
Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: d.hatena.ne.jp
Content-Length: 29
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: name=fslasht
key=fslasht&password=ZZZZZZZZ
▼ [はてな→ブラウザ] クッキーの設定、ユーザーの日記ページへ移動
HTTP/1.1 302 Moved
Date: Sun, 16 Nov 2003 19:50:21 GMT
Server: Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.26
Set-Cookie: rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; domain=.hatena.ne.jp; path=/; expires=Wed, 13-Nov-2013 19:50:21 GMT
Location: http://d.hatena.ne.jp/fslasht/
Connection: close
Transfer-Encoding: chunked
Content-Type: text/plain
▼ [ブラウザ→はてな] クッキー付で日記ページのGETリクエスト
GET /fslasht/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
Referer: http://d.hatena.ne.jp/login
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: d.hatena.ne.jp
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
▼ [はてな→ブラウザ] ユーザーの日記ページ内容
HTTP/1.1 200 OK
Date: Sun, 16 Nov 2003 19:50:22 GMT
Server: Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.26
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=euc-jp
3ba7
※以下省略
【補足】
「ZZZZZZZZ」実際にはパスワードが入る(平分)
「XXXXXXXX~」実際にはセッションキーが入る(暗号)
投稿時のパケット (スコア:1)
POST /fslasht/edit HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
Referer: http://d.hatena.ne.jp/fslasht/edit
Accept-Language: ja
Content-Type: multipart/form-data; boundary=----BOUNDARY----
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: d.hatena.ne.jp
Content-Length: 1114
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----BOUNDARY----
Content-Disposition: form-data; name="mode"
enter
----BOUNDARY----
Content-Disposition: form-data; name="timestamp"
----BOUNDARY----
Content-Disposition: form-data; name="year"
2003
----BOUNDARY----
Content-Disposition: form-data; name="month"
11
----BOUNDARY----
Content-Disposition: form-data; name="day"
17
----BOUNDARY----
Content-Disposition: form-data; name="title"
TestTitle
----BOUNDARY----
Content-Disposition: form-data; name="body"
テスト本文
TEST POST
----BOUNDARY----
Content-Disposition: form-data; name="image"; filename=""
Content-Type: application/octet-stream
----BOUNDARY----
Content-Disposition: form-data; name="imagetitle"
----BOUNDARY----
Content-Disposition: form-data; name="edit"
この内容を登録する
----BOUNDARY----
【補足】
「XXXXXXXX~」実際にはセッションキーが入る(暗号)
POSTデータ部の区切り文字は実際には「--(省略)--7d333c183b00e6」だった(省略の部分も含め30文字の「-」)が、投稿制限に引っかかったので「----BOUNDARY----」に改変した。
POST中の日本語文字コードはEUC。
投稿時のパケット(2回目) (スコア:1)
POST /fslasht/edit HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, application/x-shockwave-flash, */*
Referer: http://d.hatena.ne.jp/fslasht/edit?date=20031117
Accept-Language: ja
Content-Type: multipart/form-data; boundary=----BOUNDARY----
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: d.hatena.ne.jp
Content-Length: 1242
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: name=fslasht; rk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----BOUNDARY----
Content-Disposition: form-data; name="mode"
enter
----BOUNDARY----
Content-Disposition: form-data; name="timestamp"
20031117062456
----BOUNDARY----
Content-Disposition: form-data; name="date"
20031117
----BOUNDARY----
Content-Disposition: form-data; name="year"
2003
----BOUNDARY----
Content-Disposition: form-data; name="month"
11
----BOUNDARY----
Content-Disposition: form-data; name="day"
17
----BOUNDARY----
Content-Disposition: form-data; name="title"
TestTitle
----BOUNDARY----
Content-Disposition: form-data; name="body"
テスト本文
TEST POST
追加の1行
----BOUNDARY----
Content-Disposition: form-data; name="image"; filename=""
Content-Type: application/octet-stream
----BOUNDARY----
Content-Disposition: form-data; name="imagetitle"
----BOUNDARY----
Content-Disposition: form-data; name="edit"
この内容を登録する
----BOUNDARY------