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 がいつまで有効なのかはわかりません。