ここ数年、FedACH
ユーティリティを使用して、連邦準備制度のウェブサイト(frbservices.org)からwget
ファイルをダウンロードすることができました。以下のリンクは元のソリューションを提供しました。
「同意する」条件をクリックするように促すWebページからファイルをダウンロードする方法を取得する
cookieを取得します。
wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
ファイルをダウンロードします。
wget --load-cookies=cookie.txt 'https://frbservices.org/EPaymentsDirectory/FedACHdir.txt?AgreementSessionObject=Agree'
このwget
コマンドを使用すると、ただちにhttps://www.frbservices.org/EPaymentsDirectory/download.html
がダウンロードされます。これは、[同意する]ボタンをクリックした後、ウェブサイトがポップアップフォームの入力を要求しているためです。 wget
を使用してフォームを閉じる方法はありますか?
IEおよびChromeで、目的のファイルをダウンロードするために以下の手順が実行されました。
URLに移動: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
[同意する]ボタンをクリックします。
組織情報を要求するフォームが表示されます。
フォームの[閉じる]ボタンをクリックします(情報を入力しませんでした)。
URLに移動: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
ファイルが正常にダウンロードされました。
このWebサイトでは、有効なJSESSIONID
とabaDataCaptureCookie
という契約Cookieの2つのCookieを設定する必要があります。最初のコマンドは最初のwget
コマンドで取得でき、2番目のコマンドは手動で追加する必要があります。
有効なJSESSIONID
を取得して、cookies.txt
に保存します。
wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
abaDataCaptureCookie
行を追加します。
echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
ファイルをダウンロードします。
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