OZの部屋

なんでも日記です

wgetでpost ログイン認証 とファイルアップロード

2006-10-27 22:16:13 | プログラム
以前 「wgetでpost ログイン認証 とpostダウンロード」の話でログイン認証のところはやったので、その件はそちらを参照。
アップロードサイト側のHTML
http://www.xxxx.jp/upload.htm の中身
を例にとってすすめてみる。
**** ここから **********
<html lang="ja">
<head></head>
<body>
<form name="f1" method="post" enctype='multipart/form-data' action='/cgi-bin/upload.cgi'>
アップロードファイル
<input type='file' size='60' name='file1'>
<input type="button" value="決定" onClick="submit();">
</form>
</body>
</html>
**** ここまで **********


アップロード用のファイル名入力欄とサブミットボタンがあるだけの
フォームになる。
これを想定して

また、このupload.cgi はテキストファイルのみを受け付けるとし、
ファイル名 abc.txt をアップロードする
内容は
abcdef
1234
******* 以上2行 のみのテキストデータ
文字10個、(crlf)改行2個 合計14バイト
これをIEでアップロードすると以下のようなstreamを吐き出す。
***** ここから ********
POST /cgi-bin/upload.cgi HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://www.xxxx.jp/index.htm
Accept-Language: ja
Content-Type: multipart/form-data; boundary=---------------------------7d632a24d0650
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 2.0.50727)
Host: www.xxxx.jp
Content-Length: 245
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: xxxx1=yyyy;xxxx2=aaa

-----------------------------7d632a24d0650
Content-Disposition: form-data; name="file1"; filename="C:abc.txt"
Content-Type: text/plain

abcdef
1234

-----------------------------7d632a24d0650--
***** ここまで ********


Cookie: までがヘッダ部、ひとつ改行のみの行のあと最後までがデータ部
バウンダリはハイフンを全て削ってみました。
ヘッダ部で必須なのは
Content-Type: multipart/form-data; boundary=7d632a24d0650
Host: www.xxxx.jp
Content-Length: 245
Cookie: xxxx1=yyyy;xxxx2=aaa
以上4行

wgetを使えばcontentilengthとhostは勝手に設定されるので考えなくて良い。
cookieはログイン認証などでセッションキーとして使っている場合必須。
もうひとつContent-Typeは
Content-Type: multipart/form-data; boundary=
boundary=のところまではファイルアップロードの場合固定(だと思う)
マルチパートデータの区切りとして認識するための
バウンダリ文字列は、データの中に同じ文字がはいらなければいいのでもっと短くてもOk
IEではたくさんのハイフォンのあと13桁の英数字を付けている。
データ部は、
--バウンダリ
パート内のヘッダ
1行あける
ファイルの中身
--バウンダリ--

もう少し説明を加えると、
ハイフォンがいっぱいでわかりにくいが、データ内に記述するバウンダリはヘッダで示した文字の前に--を付けることになっているので2個多い。
パート内のヘッダ では、ファイル名を入れるHTMLformのinput,type=fileのnameを指定。
アップロードするファイルのcontenttypeを指定、上記の場合はテキストファイルなのでtext/plainを指定した。
WGETでファイルをアップロードする場合 --post-file "xxxx" のオプションを使うわけだが、xxxxはアップするファイルではなくバウンダリなど必要な情報を付加したものをしていしなければならない。
--post-data "xxxx" の"xxxx"部分をファイルから読み込んでいるに過ぎない。
以下の8行をupfile.data とか名前を付けて保存しておいて
--7d632a24d0650
Content-Disposition: form-data; name="file1"; filename="C:abc.txt"
Content-Type: text/plain

abcdef
1234

--7d632a24d0650--

wget コマンドラインは
wget --header "Cookie: xxxx1=yyyy;xxxx2=aaa" --header="Content-Type: multipart/form-data; boundary=7d632a24d0650" --post-file="upfile.data" http://www.xxxx.jp/cgi-bin/upload.cgi


cookieは認証などなければいらない。
boundary は適当に変えてやれば、出来上がり。
そのほかtimeoutなどのオプションを追加すれば、バッチリ
ということで、何らかのスクリプトでwgetをドライブしてやらないかぎり手作業ではほぼ不可能だと思われる。
また、前の説明でもあるように、perlにはLWPというとても簡便な方法があるのでそちらのほうがよさそう。
しかし、LWPでは現在https+proxyがダメなのでこのWGETを使って処理している。


最新の画像もっと見る

2001 コメント

コメント日が  古い順  |   新しい順
guest test title (Guesteveds)
2017-02-26 14:38:51
guest test post
bbcode
html
http://googlee.te/ simple
返信する
aztec gold пирамиды (Apokoalovar)
2017-05-25 06:17:28
топ 10 казино онлайн скачать блек джек на компьютер http://slotsable.gdn/kazino-slots.html казино слотс
а
返信する
слот pink panther (Apokoalovar)
2017-05-25 07:28:32
игровые автоматы онлайн не на деньги игровые автоматы играть бесплатно и без регистрации и смс 777 http://slotsant.gdn/onlayn-kazino-titan.html онлайн казино титан
а
返信する
казино правила игры (Apokoalovar)
2017-05-25 08:47:32
играть онлайн бесплатно без регистрации слот слотландия игровые автоматы http://slotsbits.gdn/programma-dlya-onlayn-kazino.html программа для онлайн казино
а
返信する
игровые автоматы бесплатно скачать торрент (Apokoalovar)
2017-05-25 10:16:47
гаминатор фильмы [url=http://slotsance.gdn/igrat-v-igrovye-avtomaty-besplatno-i-bez-registracii-piramida.html]играть в игровые автоматы бесплатно и без регистрации пирамида[/url] http://betaslots.gdn/skachat-besplatno-kazino-igrovye-avtomaty.html скачать бесплатно казино игровые автоматы
а
返信する
играть в покер техас холдем (Apokoalovar)
2017-05-25 11:44:39
эмулятор игровых автоматов 2000000006604 игровые автоматы аладин играть бесплатно http://betaslots.gdn/igry-kazino-karty.html игры казино карты
а
返信する
бездепозитные бонусы игровые автоматы (Apokoalovar)
2017-05-25 20:00:49
как обмануть игровые автоматы mega jack карточные игры на пк онлайн http://slotsance.gdn/banany-igrat.html бананы играть
а
返信する
игровые автоматы бесплатные гараж (Apokoalovar)
2017-05-25 21:23:57
онлайн казино фараон отзывы автоматы онлайн бесплатно http://coslots.gdn/onlayn-demo-avtomaty.html онлайн демо автоматы
а
返信する
играть в сейфы игровые автоматы (Apokoalovar)
2017-05-26 00:16:07
азартные игры бесплатно карты дурак карточная игра покер http://slotsbits.gdn/samoe-nadezhnoe-kazino-onlayn.html самое надежное казино онлайн
а
返信する
игровые автоматы топ сикрет (Apokoalovar)
2017-05-26 02:53:16
интернет казино novomatic игровые автоматы онлайн бесплатно лошадки http://coslots.gdn/rezident-igra.html резидент игра
а
返信する