checkpad を自動でバックアップする方法

checkpad ではデータをバックアップする方法が 2 種類用意されています。

checkpad にログインし、[設定変更] を開き、[全データをメールで送信] か [テキストでデータをダウンロード] をクリックします。


今回は、[テキストでデータをダウンロード] の方を使ってバックアップを自動化してみます。


通常のウェブなら wget で取得するだけですが、checkpad ではログインが必要なのでちょっと難しいです。

まず、認証をパスするために Cookie を取得します。
ここでは、普段使用している Firefox などのブラウザ、tcpdump, Wireshark を使います。

1. Firefox などのブラウザで checkpad にログインして [設定変更] を開きます。

2. ターミナルを開き、tcpdump でパケットキャプチャを開始します。

$ sudo tcpdump -i eth0 -x port 80 -s 1600 -w checkpad.cap

プロキシを使用している場合は "port 80" の 80 をプロキシサーバのポート番号にします。

3. 1. のブラウザで [テキストでデータをダウンロード] をクリックします。
実際のダウンロードは必要ないのでキャンセルします。

4. 2. のターミナルで tcpdump を Ctrl-C で終了します。

5. tcpdump を実行したディレクトリに checkpad.cap ができているのでこれを Wireshark で開きます。

6. [Edit] - [Find Packet] を選択します。

7. Find で "String" を選択し、その下の入力欄に "GET http://www.checkpad.jp/?mode=usr&act=csv" と入力します。
   Search In は "Packet bytes", String Optins の "Case sensitive" にチェックを入れます。

8. [Find] をクリックし、見つかったパケットを右クリック - [Copy] - [Bytes (Printable Text Only)] を選択します。

9. テキストエディタを開き、ペーストします。

このような感じになります。

)_BGET http://www.checkpad.jp/?mode=usr&act=csv HTTP/1.1
Host: www.checkpad.jp
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.9) Gecko/2008060309 Firefox/3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://www.checkpad.jp/?mode=usr&act=edit
Cookie: __utma=foo


"Cookie: ..." の行が Cookie です。


あとはこの Cookie を使って wget でテキストでデータをダウンロードします。

# wget --header 'Cookie: __utma=foo' --referer='http://www.checkpad.jp/?' 'http://www.checkpad.jp/?mode=usr&act=csv' -O checkpad.txt


checkpad.txt にダウンロードしたデータが保存されます。

wget を定期的に実行するよう cron に登録しておくと、自動バックアップの完成です。

ただ、この Cookie がいつまで有効なのかはわかりません。


ref.
- wget で認証付きサイトをダウンロードする - WebOS Goodies