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

GMP*_*GMP 7 command-line scripts downloads wget

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

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

  1. 获取饼干:

    wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
    
    Run Code Online (Sandbox Code Playgroud)
  2. 下载文件:

    wget --load-cookies=cookie.txt 'https://frbservices.org/EPaymentsDirectory/FedACHdir.txt?AgreementSessionObject=Agree'
    
    Run Code Online (Sandbox Code Playgroud)

使用此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. 文件下载成功。

des*_*ert 6

该网站要求您设置两个 cookie:一个有效的JSESSIONID和被abaDataCaptureCookie调用的协议 cookie。第一个可以通过您的第一个wget命令获得,第二个需要手动添加。

  1. 获取一个有效的JSESSIONID并将其保存到cookies.txt

    wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加abaDataCaptureCookie行:

    echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 下载文件:

    wget --load-cookies cookies.txt frbservices.org/EPaymentsDirectory/FedACHdir.txt
    
    Run Code Online (Sandbox Code Playgroud)

我不太确定第一个 cookie 的有效期有多长,但我假设您不会每小时多次下载列表,因此在每次运行时获取一个新的对我来说似乎没问题——毕竟这是故障安全方法。

上述步骤的脚本版本,使用临时文件作为 cookie 文件:

wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
Run Code Online (Sandbox Code Playgroud)

运行此脚本会将FedACHdir.txt当前文件保存到当前目录而不会留下任何内容cookies.txt,如果已经有一个具有此名称的文件,则会wget添加一个数字并将其保存为例如FedACHdir.txt.1.

在解决这个问题时,我在这里找到了很大的帮助:Format of cookies when using wget? · U&L