我想使用 wget 实用程序下载文件。我按照“如何使用 wget/curl 从我登录的网站下载?“并且下载过程正常;但是,保存的 cookie 会在一定时间后过期,因此第二天我无法继续下载文件。
以下是我尝试下载文件的 URL:
https://frbservices.org/EPaymentsDirectory/FedACHdir.txt
下载页面要求我单击“同意”按钮后才能继续下载。
有没有办法将“同意”提交包含在 wget 实用程序中?
谢谢。
答案1
您可以使用 提交表单wget
,使用--post-data
选项。首先,查看页面使用的表单:
<form name="acceptedForm" id="acceptedForm" action="submitAgreement" method="post">
...
<button id="agree_terms_use" name="agreementValue" type="submit" value="Agree">Agree</button>
<button id="disagree_terms_use" name="agreementValue" type="submit" value="Do Not Agree">Do Not Agree</button>
通常,属性的值action
用于获取目标 URL,该 URL 成为 https://frbservices.org/EPaymentsDirectory/submitAgreement
。name
表单元素的 成为参数。然后您需要保存从接受协议中获得的 cookie。从这篇文章,我们可以构造需要的命令:
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'