基本的 cURL 表单交互

Basic cURL form interaction

下午好- 我有一个业务需要下载位于@ https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt 的文件。直到上个月,这是一个相当简单的例程。在我的自动化工具中,我使用 cURL 简单地导航到 URL 并输出数据。

但是,美联储最近更改了此站点的功能,因此您现在被重定向到 https://www.frbservices.org/EPaymentsDirectory/agreement.html,您需要在其中 'Agree' 某些条款和条件。我猜 'Agreement' 单击和后续下载可以通过 cURL 完成,但我不太确定如何去做。

有什么建议吗?我试图在 Windows 2012 上使用 Automic Automation Engine 运行 来实现这一点。

抱歉,我不熟悉 Automic Automation Engine,但当他们更改 URL 并进行协议检查时,我遇到了完全相同的问题。我不得不更新我公司的 perl 脚本来处理它。

如果您熟悉 perl,可以使用 WWW::Mechanize 轻松通过协议页面。我正在使用 Linux 但我相信 Windows 上的 perl 代码应该是相同的。

这里是我写的测试脚本,$mech->content()会包含FedACHdir.txt的内容。在这里,我只是将内容转储到同名的文本文件中。然后您可以根据需要处理该文件。

#!/usr/bin/perl -w
use strict;
use WWW::Mechanize;

my $url = 'https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt';

my $mech = WWW::Mechanize->new(autocheck => 1);
$mech->get($url);

if($mech->uri() ne $url) {
    $mech->form_name('acceptedForm');
    $mech->click_button(value => 'Agree');
}

#print ($mech->content());

my $filename = 'FedACHdir.txt';
$mech->save_content($filename);

希望对您有所帮助!

我们遇到了同样的问题,通过调用 cURL 3 次解决了这个问题。有两件事很关键:将会话 cookie 存储在文件中并重新提交到协议页面,submitAgreement url 以“.do”

结尾

注意:由于声誉不佳(我以访客身份发帖),我不得不将 url 中的“:”替换为 [冒号]。

curl -c cookies1.txt https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

curl --data "agreementValue=Agree" -b cookies1.txt https[colon]//www.frbservices.org/EPaymentsDirectory/submitAgreement.do 

curl -b cookies1.txt https[colon]//www.frbservices.org/EPaymentsDirectory/FedACHdir.txt -o saveroutingnums.txt

对 windows 使用 curl 这个 .bat 文件有效:

curl.exe -c cookies1.txt https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

curl.exe -s -d "agreementValue=Agree" -b cookies1.txt https://www.frbservices.org/EPaymentsDirectory/submitAgreement 

curl.exe -b cookies1.txt https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt -o fedachdir.txt