Perl 为什么';我的WWW::Mechanize提交贝宝表单工作?

Perl 为什么';我的WWW::Mechanize提交贝宝表单工作?,perl,forms,paypal,www-mechanize,Perl,Forms,Paypal,Www Mechanize,我尝试过的任何东西都无法使我的代码正确提交。还有谁能弄明白这一点吗 #!/usr/bin/perl use WWW::Mechanize; my $user = 'cowsaremyfriends@gmail.com'; my $pass = 'hackswipe'; # Test account; don't worry my $browser = WWW::Mechanize->new(); $browser->get("https://www.paypal.com/

我尝试过的任何东西都无法使我的代码正确提交。还有谁能弄明白这一点吗

#!/usr/bin/perl

use WWW::Mechanize;


my $user = 'cowsaremyfriends@gmail.com';
my $pass  = 'hackswipe';
# Test account; don't worry


my $browser = WWW::Mechanize->new();
$browser->get("https://www.paypal.com/");
$browser->form_with_fields("login_email", "login_password");
$browser->field("login_email", $user);
$browser->field("login_password", $pass);
$browser->submit_form();
$browser->get("https://www.paypal.com/us/cgi-bin/webscr?cmd=_profile-api-add-direct-access");
##### Help here ---> Trying to submit form with default option selected #####
my $html = $browser->content;

print $html;

我们不知道到底是什么问题。你读过常见问题吗

perldoc WWW::Mechanize::FAQ

它给出了关于如何使用Mech调试问题的建议。我首先要问的是表单是否使用JavaScript。我敢打赌PayPal的页面可以做到这一点。

这对我来说很有效,但在调试web Scraper等方面,你应该注意HTTP事务。这很容易添加,因为它是一个子类:

use WWW::Mechanize;

my $browser = WWW::Mechanize->new();

# See LWP::Debug
$browser->add_handler("request_send",  sub { shift->dump; return });
$browser->add_handler("response_done", sub { shift->dump; return });
现在您可以看到您发送的内容以及PayPal返回的内容

通常,您还可以使用各种HTTP嗅探工具,但这些工具只适用于以明文发送的内容,因此您在这里运气不佳

然而,在这种情况下,PayPal对您很感兴趣。他们知道你在使用脚本。我得到的部分输出是:

<h2>Request API Credentials</h2>
</div>
<div id="messageBox"></div>
<div id="main"><div class="layout1"><form action="https://www.paypal.com/us/cgi-bin/webscr?dispatch=5885d80a13c0db1f8e263663d3faee8dc18bca4c6f47e633b393e284a5f8a8f8" class="">
<input type="hidden" name="cmd" value="_profile-api-add-direct-access"><input type="hidden" name="api_flow_origin" value=""><input type="hidden" name="show_switch" value="1"><input type="hidden" name="auth_type" value="ssl"><input type="hidden" name="api_username" value=""><input type="hidden" name="program_name" value=""><input type="hidden" name="program_id" value=""><input type="hidden" name="partner_name" value=""><input type="hidden" name="partner_id" value=""><input type="hidden" name="partner_code" value=""><p>API credentials consist of three elements:</p>
<ul>
<li>An API username</li>
<li>An API password</li>
<li>Either an API signature or an API SSL client-side certificate</li>
</ul>
<p>If you’re using a shopping cart or solution provider, ask whether you need an API signature or a certificate.</p>
请求API凭据
API凭证由三个元素组成:

  • API用户名
  • API密码
  • API签名或API SSL客户端证书
如果您使用的是购物车或解决方案提供商,请询问您是否需要API签名或证书


如果您想通过程序与PayPal交互,您需要。

您的代码对我有用。你有什么问题?有没有可能,IP被列入黑名单/禁止?发生了什么,与你预期的情况相比?你没有清楚地说明你所遇到的实际问题。问题是,一旦我进入评论之前的页面,我就不知道如何提交该表单。我尝试过的各种方法都失败了。代码已经在那里工作了,是的,但是我在编写更多的工作代码时遇到了困难。谢谢。问题是,一旦我进入评论之前的页面,我就不知道如何让表单提交。我尝试过的各种方法都失败了。谢谢。问题是,一旦我进入评论之前的页面,我就不知道如何让表单提交。我尝试过的各种方法都失败了。那里的代码已经可以工作了,但是我在编写更多的工作代码时遇到了困难。谢谢。嗯,你得解释一下你想做什么。编辑您的原始问题,告诉我们您正在尝试做什么,您尝试了什么,以及它是如何不起作用的。感谢您的帮助,我最终以完全不同的方式解决了这个问题。