web-dev-qa-db-ja.com

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

Wgetユーティリティを使用してファイルをダウンロードしたい。 「 wget/curlを使用して、ログインしているサイトからダウンロードするにはどうすればよいですか? 」の指示に従い、ダウンロードプロセスは機能します。ただし、保存されたCookieは一定の時間が経過すると有効期限が切れるため、翌日にファイルのダウンロードを続行できません。

ファイルをダウンロードしようとしているURLは次のとおりです。

https://frbservices.org/EPaymentsDirectory/FedACHdir.txt

ダウンロードページでは、ダウンロードに進む前に[同意する]ボタンをクリックする必要があります。

Wgetユーティリティに「同意する」送信を含める方法はありますか?

ありがとうございました。

3
Adam

--post-dataオプションを使用して、wgetを使用してフォームを送信できます。まず、ページが使用するフォームを見てください。

<form name="acceptedForm" id="acceptedForm" action="submitAgreement" method="post">
...
        <button id="agree_terms_use" name="agreementValue" type="submit" value="Agree">Agree</button>  &nbsp; 
        <button id="disagree_terms_use" name="agreementValue" type="submit" value="Do Not Agree">Do Not Agree</button>

通常、action属性の値はターゲットURLを取得するために使用され、https://frbservices.org/EPaymentsDirectory/submitAgreementになります。フォーム要素のnamesがパラメーターになります。次に、契約への同意から取得したCookieを保存する必要があります。 this SO post から、必要なコマンドを作成できます。

wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after

次に、これらのCookieを使用してファイルをダウンロードできます。

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