fslasht (3370) の日記

2005 年 07 月 28 日
午後 11:58

はてなダイアリー自動転記スクリプト開発(16) はてなの仕様変更に対応

STATUS: 故障中

 このスクリプトを使うと/.の日記をはてなダイアリーに転記できます。両方にアカウントを持っている方にお勧め。
 はてな側の仕様変更でログインや転記処理がうまくいったいなかったのを修正しました。ご利用の皆様(って片手指人くらいだけど)お待たせしました。

● デモページとソース
 
 ↓このページで動かせます。
 Pseudo Slashdot Journal あるいは 偽/.日記 (ソース)

 このURLのスクリプトは常に最新(いまはver.1.08)ですが開発途中だったりすることもあります。何か問題がありましたらver.1.08をお使いください。
 ご自分のサーバで動かす場合は、PHP4.1.x以降があればソースそのままで動くと思います(Linux(kernel 2.4.19) + PHP4.2.3-11 + Apache1.3.27-13で動作確認しています)。転記処理のテンプレートとか変更したりしてカスタマイズ出来ます。

● 使い方

1) 自分のアカウントを設定
 左下の「参照先アカウント」フレームの以下の入力欄に必要事項を入力して[設定]ボタンを押してください。

・Slashdot.jp ユーザーID
 /.でのユーザーID
・はてな ユーザーID
 はてなでのユーザーID
・パスワード
 はてなでのパスワード
・セッションキー(rk)直接指定
 通常はチェックしない。ログインがうまくいかないときに使用。

※ 入力したパスワードは、うちのサーバに送られてますので気になる方はソースをダウンロードしてご自分の管理されているサーバで動かすのが吉。
※ ユーザーID、パスワードはCookieで記録されます。パスワードはそのものではなく、はてなから取得したセッションキーを記録しています。
※ はてなのパスワードを変更したりログインしなおした場合は、セッションキーが無効になっていますので、1)の操作を再度行ってください。

2) 対象ユーザーを選択
 「ユーザー一覧」フレームから、転記したユーザーの日記を選択してください(TOP30に載っているユーザーのみ表示)。
 自分のユーザー名が無い場合は、「参照先アカウント」フレームの「表示」リンクから自分の日記を選択できます。

3) 日記を選択
 ユーザーを選択すると右上のフレームに日記一覧が表示されるので、選択。
 件数リスト+変更ボタンで日記の表示件数を設定できます。

4) 日記の内容確認
 日記を選択すると右下のフレームに日記内容が表示されます。

5) はてなへ転記
 「はてなへ転記」ボタンを押すと、はてなダイアリーに転記されます。(結果は成功/失敗で表示されます)
 また、表示形式で「Pukiwiki変換」を選択して「変更」ボタンを押すと、そのままPukiwikiにコピペ出来る書式に変換されて表示されます。

● リンク用バナー

 このスクリプトへのリンク用にとtorlyさんがバナーを作ってくださいました
 このURLのイメージをお使いください。
バナーイメージURL

● 変更内容とか

・はてなへのログイン処理
 はてな側のログイン処理がSSL対応になってしまったので強引に暫定対応(と言えるのか?)していたのですが、今回ちゃんと対応しました。
 fsockopenで、HTTPSも使えるのでこれ使おうと思ったらうちのPHP、ビルド時にssl対応したなかったので途方にくれてましたが、実は、はてなに非SSLのログインページもありました(なーんだ)。
 アクセス先のurlの変更(d.hatena.ne.jp/login → www.hatena.ne.jp/register)、POSTするパラメータの追加(mode=login)で対応できました。
 こんなに簡単に対応できるんだったらもっと早くやっておけばよかった。

 万一、またログインできなくなったり、直接パスワードを入力するのに抵抗がある場合は、暫定対応時の方法で取得したRK値をパスワード欄に入れて、「セッションキー(rk)直接指定」にチェックを入れれば、ログイン状態になります。

・日記書き込み処理
 はてなへの転記が出来なくなったと思ったら、はてな側で仕様変更がありました。
 
はてな各サービスの CSRF 脆弱性対策について (はてなダイアリー日記)

 etsavさんに教えていただきました(ありがとうございます)。
 セキュリティ対策のために、POSTデータ中にセッションIDを含めるようになったそうです。
 というわけで、はまりつつも対応しました。
 今回のはてな側の変更は、このスクリプトのように外部から自動更新するプログラムを締め出すものではないかと心配しましたが、上記リンク先の記載では、そういったプログラムでの(今回の変更への)対応方法も記載されていました。このようなプログラム自体、はてなにとってはグレーなのかと思っていたので安心しました。
 あと転送成功判定が難有りで成功しても「(-4)失敗」になっていたのも直しました。はてな側から返される「Location」ヘッダがいつのまにか「location」(全て小文字)になってました。これに対応。

 また、転記処理後(成功しても失敗しても)に、表示される転記内容の各行の末尾に<BR>をつけるようにしましたので、万一転記がうまくいかなくなってもコピペしやすくなっています。

 というわけでnisejournalを今後ともよろしく。

▼ ひとつ前:(15) はてなの仕様変更においてかれ中

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

身近な人の偉大さは半減する -- あるアレゲ人

処理中...