SSブログ

広告

wgetの使い方:認証してFORMを送信するようなページでダウンロードする [コンピュータ]

認証が必要でFORMのボタンを押してダウンロードするようなめんどくさいページで自動的にダウンロードさせるには。。。

Linuxでwgetを使う。

前提
認証情報がCookieにあって、ボタンをしたらダウンロードが始まるページ

1.認証
--keep-session-cookies、 --save-cookies、 --post-dataを付けて、認証させクッキーをファイルに保存しておく
wget \
 --keep-session-cookies \
 --save-cookies=cookies.txt \
 --post-data 'POSTするデータ(UserId=...&Password=...)' \
 ログインページのPOST先URL

ログインページのPOST先URLやPOSTする情報は
ページのソースを見て調べるか、
ChromeのデベロッパーツールのNetworkを見る。

2.ダウンロード
--load-cookies、--post-data、-Oを付けてダウンロード
wget \
 --referer=リファラ(ダウンロードページのURL) \
 --load-cookies cookies.txt \
 --post-data 'POSTするデータ(key1=value1&key2=value2...)' \
 -O 保存するファイル名 \
 ダウンロードページのPOST先のURL

リファラは必要に応じて。

3.失敗したファイルを削除するには
エラーになった時、いつも同じサイズのHTMLファイルが保存されるならまとめて削除。

指定したサイズのファイルを削除
find . -size サイズc | xargs rm

サイズ0バイトのファイルを削除
find . -size 0c | xargs rm


4.繰り返す時は失敗したファイルを3で削除してからファイルの有無を調べて再ダウンロード
if [ -e ダウンロードファイル名 ] ; then echo "skip"; else  wget ・・・ ; fi


おまけ
User-Agentの設定は--user-agent
Basic認証は--http-user、--http-passwd
タグ:linux
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。