wgetの使い方:認証してFORMを送信するようなページでダウンロードする [コンピュータ]
認証が必要でFORMのボタンを押してダウンロードするようなめんどくさいページで自動的にダウンロードさせるには。。。
Linuxでwgetを使う。
前提
認証情報がCookieにあって、ボタンをしたらダウンロードが始まるページ
1.認証
--keep-session-cookies、 --save-cookies、 --post-dataを付けて、認証させクッキーをファイルに保存しておく
ログインページのPOST先URLやPOSTする情報は
ページのソースを見て調べるか、
ChromeのデベロッパーツールのNetworkを見る。
2.ダウンロード
--load-cookies、--post-data、-Oを付けてダウンロード
リファラは必要に応じて。
3.失敗したファイルを削除するには
エラーになった時、いつも同じサイズのHTMLファイルが保存されるならまとめて削除。
指定したサイズのファイルを削除
サイズ0バイトのファイルを削除
4.繰り返す時は失敗したファイルを3で削除してからファイルの有無を調べて再ダウンロード
おまけ
User-Agentの設定は--user-agent
Basic認証は--http-user、--http-passwd
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
コメント 0