FedACHdir.txt下载

时间:2017-12-07 16:07:21

标签: http download

我们有一个自动流程可以在href =“https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt下载FedACHDir.txt。

此下载页面现在有一个弹出窗口,显示2018年数据的可用性,并输入信息以获得通知。

我们的下载过程到目前为止(直到几周后才开始)并且在此弹出窗体开始显示后现在无法正常工作。

是否有人面临类似的问题以及有关如何克服这个问题的任何想法/建议?

我尝试了几个选项,如下面的curl脚本(以及wget和java进程): curl -s -c fcookie.txt https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
curl -b fcookie.txt -d“agreementValue = Agree”-H“Referer:https://www.frbservices.org/EPaymentsDirectory/agreement.htmlhttps://www.frbservices.org/EPaymentsDirectory/submitAgreement
curl -b fcookie.txt“https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt” - o ./FedACHdir.txt

感谢,

2 个答案:

答案 0 :(得分:2)

因为我们需要验证银行路由号码而不得不考虑这项工作...需要自动更新此列表。

这是我的研究和解决方案。

首先,FedACHdir.txt文件位于需要您同意使用条款的表单后面(我建议任何人这样做,以确保在实施此自动化解决方案之前不会违反这些条款:{ {3}})。

下载FedACHdir.txt文件时必须遵循以下步骤(一般情况下)(截至撰写本文时, 2018年4月11日):

  1. https://www.frbservices.org/EPaymentsDirectory/submitAgreement的初始表单必须为POST,并且agreementValue设置为Agree。这会导致创建会话cookie:JSESSIONID
  2. 然后必须手动将Cookie属性abaDataCaptureCookie设置为值abaDataCaptureCookie
  3. 使用已初始化的会话并手动设置Cookie,我们现在可以GET FedACHdir.txt https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt文件# Step 1 - Setup Session wget frbservices.org/EPaymentsDirectory/submitAgreement \ --post-data="agreementValue=Agree" \ --save-cookies cookies.txt --keep-session-cookies --delete-after # Step 2 - Set Cookie echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\t" \ "abaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt # Step 3 - Download FedACHdir.txt wget --load-cookies cookies.txt frbservices.org/EPaymentsDirectory/FedACHdir.txt
  4. 简而言之,这里有两个解决方案:

    • <强> Wget的

      $frbDomain = "www.frbservices.org";
      $frbDir = "https://{$frbDomain}/EPaymentsDirectory";
      
      $client = new \GuzzleHttp\Client;
      $jar = new \GuzzleHttp\Cookie\CookieJar;
      
      // Step 1 - Setup Session
      $client->request('POST', "{$frbDir}/submitAgreement", [
        'cookies' => $jar,
        'form_params' => [ 'agreementValue' => 'Agree' ],
      ]);
      
      // Step 2 - Set Cookie
      $jar->setCookie(new \GuzzleHttp\Cookie\SetCookie([
        'Name' => 'abaDataCaptureCookie',
        'Value' => 'abaDataCaptureCookie',
        'Domain' => $frbDomain,
      ]));
      
      // Step 3 - Download FedACHdir.txt
      $fedACHDir = $client->request('GET', "{$frbDir}/FedACHdir.txt", [
        'cookies' => $jar
      ])->getBody()->getContents();
      
    • PHP Guzzle 6(我使用的是什么)

      LastRow = Application.WorksheetFunction.Lookup(2, 1 / --Len(Range("L23:L9000")) > 0, _
                Application.WorksheetFunction.Row(Range("L23:L9000")))
      

    希望这有助于某人寻找解决方案。

答案 1 :(得分:0)

听起来像www.frbservices.org改变了他们的规格。如果您正在访问未记录为公共消费的工具,则可能会发生这种情况,并且当您需要处理新表单时。 frbservices,可能已经想到了这一点。

如果你想在不联系他们的情况下编写脚本,你需要知道流程应该是什么(是否按照他们期望的方式访问它,例如通过浏览器)。

如果你忘记了网址,你会得到什么?通常弹出窗口是javascript,你可以忽略它们。或者,页面现在可能只是弹出窗口,并且可能是javascript,它指示您到其他地方获取文件。基本上你需要一个Web开发人员来编写代码,因此最好问frbservices你应该如何最好地下载这个文件。