如何从弹出表单的网站下载文件?

如何从弹出表单的网站下载文件?

过去几年,我们一直能够FedACH使用该实用程序从美联储网站 (frbservices.org) 下载文件wget。以下链接提供了原始解决方案:

wget 如何从提示您单击“同意”条件的网页下载文件

  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. 转至网址:https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  2. 单击同意按钮。

  3. 显示请求组织信息的表格。

  4. 单击表单上的“关闭”按钮(我没有填写任何信息)。

  5. 转至网址:https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  6. 文件下载成功。

答案1

网站要求您设置两个 cookie:有效 cookieJSESSIONIDabaDataCaptureCookie称为协议的 cookie。第一个 cookie 可以通过您的第一个命令获取wget,第二个 cookie 需要手动添加。

  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 能保持多长时间的有效期,但我认为您不会每小时多次下载列表,因此每次运行时获取一个新的 cookie 对我来说似乎没问题 - 毕竟这是故障安全方法。

上述步骤的脚本版本,使用临时文件作为 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

相关内容