0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

curlを使ってcookieを変数として取得し、ログイン必須のファイルをダウンロードする方法

Posted at

curlを使ってsession_cookieを変数として取得し、ログイン必須のファイルをダウンロードする方法

はじめに

ウェブ上のファイルをcurlを使ってダウンロードする際、多くのサイトではログインが必要です。本記事では、curlを使ってsession_cookieを取得し、そのcookieを使用してログイン必須のファイルをダウンロードする方法を解説します。

必要な準備

  • curlのインストール: ほとんどのUnix系OSではデフォルトでインストールされています。curl --versionで確認できます。
  • ターゲットサイトの確認: どのような認証方式を使っているかを事前に確認しておきましょう。

1. session_cookieの取得

まず、curlを使ってサイトにログインし、session_cookieを取得します。

COOKIE=$(curl -s -d 'username=<実際のusername>&password=<実際のpassword>' -c - -X POST https://example.com/login)
  • -c -: 取得したcookieを変数として保存します。
  • -d: POSTリクエストで送信するデータを指定します。
  • -X POST: POSTリクエストを指定します。

注意点: ログインフォームのパラメータ名(usernamepassword)はサイトごとに異なるので、適宜修正してください。

2. COOKIEを使ってファイルをダウンロード

取得したCOOKIEを使って、ログインが必要なファイルをダウンロードします。

curl -s -b <(echo $COOKIE) -O https://example.com/secure-file.zip
  • -b: リクエストにcookieを含めます。
  • -O: ファイルを保存する際に、元のファイル名を使用します。

3. エラーハンドリングを行う

ファイルダウンロードの際にエラーハンドリングを行います。

DOWNLOAD_STATUS=$(curl -s -w "%{http_code}" -b <(echo $COOKIE) -O https://example.com/secure-file.zip)

if [ "$DOWNLOAD_STATUS" -ne 200 ]; then
    echo "Failed to download file. HTTP status: $DOWNLOAD_STATUS"
    exit 1
fi
  • -w "%{http_code}": ダウンロード後のHTTPステータスコードを取得します。
  • exit 1: エラー発生時にスクリプトを終了します。

補足: cookie取得時のエラーハンドリングも可能ですが、cookie取得の際に特定の文字列をチェックする方法が推奨されます。

まとめ

curlを使ってsession_cookieを取得し、そのcookieを使用してログイン必須のファイルをダウンロードする方法を紹介しました。この手法を活用すれば、自動化スクリプトや定期的なファイル取得に役立てることができます。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?