では、bash と wget と perl で。
#!/usr/bin/bash
opt_cookie='--load-cookies ./cookie --save-cookies ./cookie --keep-session-cookies'
opt_common='--user-agent=autoleave_batch --output-document=./wgetfile';
email='hogehoge@hogehoge.net'
password='passwd'
# ログインする
wget ${opt_cookie} ${opt_common} --post-data "next_url=/home.pl&email=${email}&password=${passwd}&sticky=off" http://mixi.jp/login.pl
wget ${opt_cookie} ${opt_common} http://mixi.jp/check.pl
# コミュニティリストを取得する
wget ${opt_cookie} ${opt_common} http://mixi.jp/list_community.pl
mv wgetfile list_community.html
# コミュニティIDを取得する
egrep view_community.pl list_community.html | perl -pe 's/.+view_community.pl\?id=([0-9]+).+/\1/' > cid
# 全コミュニティを対象とするループ
# たぶんforで大丈夫だと思うが引数超過といわれたら while read に切替
for cid in ` cat cid `
do
# 退会ページを開いて、post_key値を取得する
wget ${opt_cookie} ${opt_common} http://mixi.jp/leave_community.pl?id=${cid}
mv wgetfile leave_community.html
pk=` egrep "post_key" leave_community.html | egrep "hidden" | perl -pe 's/.+value="([^"]+)".+/\1/' `
if [[ -z $pk ]]; then
# post_keyが見つからなければ処理を思いとどまる。
echo "get postkey failed. ${pk}"
exit 1;
fi
# 実際に退会する
wget ${opt_cookie} ${opt_common} --post-data "submit=confirm&post_key=${pk}" http://mixi.jp/leave_community.pl?id=${cid}
# 念のため、退会完了ページを leave_<ID>.html として保存しておく
mv wgetfile leave_${cid}.html
done
自分のIDとPWを使って、
for cid in の後に、直接コミュニティIDを指定する形で退会されたところまで確認しました。
このままだと大量のリクエストが立て続けに流されますので
opt_common値に、--wait=(秒) や --random-wait オプションをつけてやってください。
ありがたいのですが、unix環境がないので実行できません・・・Windows XPなもので・・・RubyとかPerlとかWindowsで完結できるものであればありがたいないです。