Hatena::ブログ(Diary)

L’automne a Pekin このページをアンテナに追加 RSSフィード Twitter

2011-03-19 wget で post してみた

[] wget で post してみた

現在、UNIXOSインターネット上のデータを取得する時、もっともスタンダードな方法(と思っている)である wget ですが、かなり高機能ではてしなくたくさんのオプションがあります。



最近では、各OSでほぼほぼデフォルトで用意されていて、自分でインストールする必要がないことが多いです。

仮になかったとしても、"yum install wget" とか "pkg_add -r wget" みたいにパッケージ管理コマンド一発で入ってしまうので楽ちんです。

こんな wget は、ずいぶん前から、いろいろなサイトでその魅力が紹介されていますが、



という訳で、今更ながら感動したので、wget を使って post してみました。

自前の web アプリの正常性確認だとか、テストの自動化にさくっと使えて便利な気がします。

※今回のテスト環境
  FreeBSD 8.0 R
  GNU Wget 1.12 built on freebsd8.0.

早速、post に必要なコマンドの引数を示します。

$ wget --post-data "postするデータ" $url

これだけです。


これを使って、Yahoo! Mail にログインしてみます。

# IPASSは架空のものなので、テストには実際のIPASSをつかっています。

> sh
$ yid='hogehoge'
$ ypw='fugafuga'
$ wget --post-data "cmd=.save&login=${yid}&passwd=${ypw}" https://login.yahoo.co.jp/config/login? -O result

これでログインに成功している場合は、以下の html が変えされます。

wget の結果は、"-O" オプションを使っているので "result" に保存されるので、"cat result | nkf -w" などで見てみましょう。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="JavaScript">
<!--
window.location.replace("http://www.yahoo.co.jp");
// -->
</script>
<meta http-equiv="Refresh" content="0; url=http://www.yahoo.co.jp">
</head>
<body>
<a href="http://www.yahoo.co.jp">http://www.yahoo.co.jp</a>へジャンプしようとしています。
自動的にページが切り替わらない場合には、<a href="http://www.yahoo.co.jp">こちら</a>をクリックしてください。</body>
</html>

逆に失敗している場合は、以下のようになります(218〜230行目を抜粋)。

	if (id.tagName !== 'INPUT' && pw.value === '') {
		preventDefault(e);
		showError('パスワードが正しくありません。');
		pw.focus();
	}else if((pw.value === '' && id.value === '') || (pw.value !== '' && id.value === '')){
		preventDefault(e);
		showError('Yahoo! JAPAN IDまたはパスワードが正しくありません。');
		id.focus();
	}else if(pw.value === '' && id.value !== ''){
		preventDefault(e);
		showError('Yahoo! JAPAN IDまたはパスワードが正しくありません。');
		pw.focus();
	}

このように、返される html を元に成功したか失敗したかの判断ができますので、簡単な条件式をつけるだけで判別できます。

$ grep "求める文字列" result > /dev/null
$ if [ $? -eq '0' ]; then
>    echo 'Success'
> else
>    echo ' fail'
> fi

最近、ウェブアプリを勉強しはじめたので重宝しそうです。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/wittro/20110319/1300525067