web-dev-qa-db-ja.com

ポップアップフォームを表示するWebサイトからファイルをダウンロードする方法は?

ここ数年、FedACHユーティリティを使用して、連邦準備制度のウェブサイト(frbservices.org)からwgetファイルをダウンロードすることができました。以下のリンクは元のソリューションを提供しました。

「同意する」条件をクリックするように促すWebページからファイルをダウンロードする方法を取得する

  1. cookieを取得します。

    wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
    
  2. ファイルをダウンロードします。

    wget --load-cookies=cookie.txt 'https://frbservices.org/EPaymentsDirectory/FedACHdir.txt?AgreementSessionObject=Agree'
    

このwgetコマンドを使用すると、ただちにhttps://www.frbservices.org/EPaymentsDirectory/download.htmlがダウンロードされます。これは、[同意する]ボタンをクリックした後、ウェブサイトがポップアップフォームの入力を要求しているためです。 wgetを使用してフォームを閉じる方法はありますか?

IEおよびChromeで、目的のファイルをダウンロードするために以下の手順が実行されました。

  1. URLに移動: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  2. [同意する]ボタンをクリックします。

  3. 組織情報を要求するフォームが表示されます。

  4. フォームの[閉じる]ボタンをクリックします(情報を入力しませんでした)。

  5. URLに移動: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  6. ファイルが正常にダウンロードされました。

7
GMP

このWebサイトでは、有効なJSESSIONIDabaDataCaptureCookieという契約Cookieの2つのCookieを設定する必要があります。最初のコマンドは最初のwgetコマンドで取得でき、2番目のコマンドは手動で追加する必要があります。

  1. 有効なJSESSIONIDを取得して、cookies.txtに保存します。

    wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
    
  2. abaDataCaptureCookie行を追加します。

    echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
    
  3. ファイルをダウンロードします。

    wget --load-cookies cookies.txt frbservices.org/EPaymentsDirectory/FedACHdir.txt
    

最初のCookieの有効期間はわかりませんが、1時間に複数回リストをダウンロードすることはないので、実行するたびに新しいリストを取得するのは問題ないようです。これがフェイルセーフアプローチです。

Cookieファイルとして一時ファイルを使用して、上記の手順のスクリプトバージョン:

#!/bin/bash
cookiefile=$(mktemp)
wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies $cookiefile --keep-session-cookies --delete-after
echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>$cookiefile
wget --load-cookies $cookiefile frbservices.org/EPaymentsDirectory/FedACHdir.txt

このスクリプトを実行すると、FedACHdir.txtを残さずに現在のディレクトリに現在のcookies.txtを保存します。この名前のファイルが既に存在する場合はwgetが番号を追加し、たとえばFedACHdir.txt.1

この問題を解決する上で、私はここで大きな助けを見つけました: wgetを使用するときのCookieの形式?・U&L

6
dessert