我们有一个自动流程可以在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.html”https://www.frbservices.org/EPaymentsDirectory/submitAgreement
curl -b fcookie.txt“https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt” - o ./FedACHdir.txt
感谢,
答案 0 :(得分:2)
因为我们需要验证银行路由号码而不得不考虑这项工作...需要自动更新此列表。
这是我的研究和解决方案。
首先,FedACHdir.txt
文件位于需要您同意使用条款的表单后面(我建议任何人这样做,以确保在实施此自动化解决方案之前不会违反这些条款:{ {3}})。
下载FedACHdir.txt
文件时必须遵循以下步骤(一般情况下)(截至撰写本文时, 2018年4月11日):
https://www.frbservices.org/EPaymentsDirectory/submitAgreement
的初始表单必须为POST
,并且agreementValue
设置为Agree
。这会导致创建会话cookie:JSESSIONID
。abaDataCaptureCookie
设置为值abaDataCaptureCookie
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
简而言之,这里有两个解决方案:
<强> 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你应该如何最好地下载这个文件。