このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

applescriptで標準認証ページへPOST

発言者:寺港みやび
( Date Tuesday, September 04, 2001 11:49:08 )


いつもお世話になります。

applescript(+NetEvents)でWebSterの標準認証ページを
GETして条件によってはそのページにPOSTするようなものを
作りたいと思います。

GETするものは以前こちらで伝授いただきできましたので
見よう見まねで試しに
"GET /control/edit.html HTTP/1.0" & CRLF & CRLF
"WWW-Authenticate: Basic realm=ID:password" & CRLF
こんな感じでストリームしてみたんですが×でした(恥)
webのlogにはアクセスはあるものの認証ができていないエラーでした。

アドバイスまたは、参考になるWebページありましたら情報を
いただければ幸いです。

田中求之 さんからのコメント
( Tuesday, September 04, 2001 13:41:50 )

この会議室の資料室にある Understanding HTTP という文書を読んでみてください。
この中で認証の仕組みなども簡単ですが解説してあります。


簡単に処理を説明しておくと、まず、ID とパスワードは Base64 でエンコー
ドする必要があります。

たとえば、ID が Tanaka で、パスワードが motoyuki でしたら、まず最初に
ID とパスワードを : で挟んで連結し、それを Base64 でエンコードします。

MT Encode Base64 "Tanaka:motoyuki"  --> "VGFuYWthOm1vdG95dWtp"

これを Authorization ヘッダに渡します。ですので、以下のようなヘッダを
送ることになります。

GET /pi_admin.html HTTP/1.0
Host: your.host
Authorization: Basic VGFuYWthOm1vdG95dWtp




→  Understand_HTTP.pdf

寺港みやび さんからのコメント
( Tuesday, September 04, 2001 13:57:50 )

ありがとうございます。
エンコードするんですね!(でもそれ以外も間違っていましたね)
参考にさせていただきます。とりあえずお返事まで。

寺港みやび さんからのコメント
( Friday, September 07, 2001 20:41:38 )

http://mtlab.ecn.fpu.ac.jp/mySamples/Understand_HTTP.pdf
↑これはとても参考になりますね。
おかげさまで認証ページをGETできるようになりました。

まだPOSTがうまく出来ません。
POSTしたい項目にはcheckboxもあるんですが
checkboxをoffにする場合ってその項目自体
POSTの本文にはいらないんですよね?

checkbox1=&checkbox2=on

ではなくて

checkbox2=on

だけでいいですよね?(offの項目は不要?)
でもcheckboxの値が変わりません。
しかしブラウザからだと変更できます。

webstar3の$adm_controlstext.ssiでやってみています
(ロギングがOFFになるので、自動的にONにするように
できるものかと思ったんです。ほんとはadminソフトのボタンを
押せれば一番気分がいいんですけどね。それは今回置いておいて)

サーバーのLOGではたしかにGETの後でPOSTも発行されている
のは確認できたのですが、データ量がGETしたのと同じ値です。
ブラウザで手動でやってみると違う(減る)ようなので
POST自体が間違っているんだと思うのですが…

寺港みやび さんからのコメント
( Saturday, September 08, 2001 12:27:48 )

色々やっています(^^)
今、気になる点としてPOSTの
本文データを増減しても
サーバーのログのデータサイズが
かわらない…

あ、もしかしてサーバーの
ログは受信じゃなくて送信の
サイズなのでしょうか(^^;)

さらに試行錯誤してみます!

寺港みやび さんからのコメント
( Saturday, September 08, 2001 12:45:21 )

送信ですね。
ずっとPOSTの場合は受信サイズだと思っていました。
おはずかしいです。

寺港みやび さんからのコメント
( Saturday, September 08, 2001 14:01:01 )

ホスト名とかユーザーエージェントとかは
サーバーのログに記録されているんですが
やはりPOSTデータが正しくやり取りできて無いようで
フォームを変更するまでにいたりません。

"Content-Length: 39" & CRLF & CRLF
"service=controls&autoflush=on&autotime=5" & CRLF & CRLF

Lengthの数え方が間違っているのかもしれないと
思うんですが、値が違うとやはりマズイですよね?
どこか、問題があればご指摘下さい。

set 反省ポーズ to 寺港みやび さんからのコメント
( Saturday, September 08, 2001 14:13:32 )

できました。
原因はsubmitの内容を送信していなかった事でした。
"service=controls&autoflush=on&autotime=5&button=Save"

#それにLengthの数えかたも1つずれていました

なんだかWSM荒らしのようになってしまいまして
申し訳ございませんでした。勉強になりました。
ありがとうございました!

田中求之 さんからのコメント
( Saturday, September 08, 2001 17:47:29 )

うまくいって何よりでした。

こういう HTTP の処理の場合には、HTTP の仕様を調べるのも重要ですが、
Interarchy で実際に交信されている内容を覗いて、それをまねる(解析する)
のが手っ取り早いですよ。

set 反省ポーズ to 寺港みやび さんからのコメント
( Saturday, September 08, 2001 19:37:29 )

ご助言ならびにUnderstand_HTTP.pdfありがとうございます。
Interarchyが何なのかざっとみてFTPクライアント(?)と
思っていたんですが違うんですね。

調べてみます!どうもありがとうございました。
今後ともよろしくお願いします!

田中求之 さんからのコメント
( Saturday, September 08, 2001 23:44:54 )

>Interarchyが何なのかざっとみてFTPクライアント(?)と
>思っていたんですが違うんですね。

もともとは FTP のクライアントから出発したソフトなんですが、今では、
ネット環境のモニターツールにもなっています(Finger, whois などの
サーバ機能の持ってます)。

個人的には、サーバ管理者必携ソフトの一つだと思っています。