fslasht (3370) の日記

2003 年 12 月 15 日
午前 03:00

はてなダイアリー自動転記スクリプト開発(6) スクリプトによるPOST実験

STATUS: 故障中

 3回目4回目で調べた「はてな」へのリクエスト内容を元にプログラムを組んでみました。
 どうやらちゃんと機能しているようです。

・PHP CLI版用スクリプト:posthatena.php
・テスト用データ:post.txt

※文字コードはeuc-jp、改行コードは cr+lf (0x0d,0x0a)
※プログラムは、Linux(kernel 2.4.19) + PHP4.1.2 CLI版で検証しています
※テストデータは、cookieに認証用のキーが含まれているため、公開にあたりその部分を改変してあります。(Cookieヘッダの rk=以降)

 このプログラムでは、同一ディレクトリにあるテスト用データファイル「post.txt」を「はてな」のWebサーバ(d.hatena.ne.jp:80)に送信し、HTTPの応答コードを取得します。
 やってることもコード内容もえらい単純なものです。
 送信内容は、実際に「はてな」に投稿を行った際のパケットをキャプチャしたデータほぼそのままです。
 このままだと余計なヘッダが多いので最終的には削ることになります(User-Agentも「Mozilla/4.0」のまんまですし)。

● 「はてな」からの応答内容

書き込み成功時
  (HTTP/1.1 302 Moved)

 書き込み成功時は、書き込んだ日付の日記にリダイレクトされるようです。

【ヘッダ内容】
location: ./20031214

認証失敗時
  (HTTP/1.1 302 Moved)

 Cookieのセッションキー不正によりユーザー認証に失敗した場合は、トップページにリダイレクトされるようです。

【ヘッダ内容】
location: /

サーバーエラー (POST内容不正)
(HTTP/1.1 500 Internal Server Error)

 POST内容が不正の場合は、この様な内容でエラーが返ってきました。
 post.txtを改変している際に次の要因で発生しました。

・Content-Lengthを省略した場合(手抜きを仕様とした)
・boundaryの指定が食い違っている場合。
 データ部で実際に使用されるboundaryは、「Content-Type:」ヘッダでのboundary文字列の前に「--」をつけなければならない。

サーバーエラー(Content-Length不正時等)
(HTTP/1.1 500 Internal Server Error)

 Content-Lengthで指定するデータ長を間違えた場合、このエラーになりました。

● 他のユーザーに適用する場合の変更点

 post.txtの以下の箇所を変更します。

・ユーザー名変更
 1行目と12行目のユーザー名「fslasht」を変更
・セッションキー変更
 12行目の「rk=」以降のセッションキーを変更
 ※セッションキーはブラウザのCookieに記録されています。参照

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

※ただしPHPを除く -- あるAdmin

処理中...