我尝试过的任何内容都无法正确提交我的代码。其他人可以解决这个问题吗?
#!/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;
答案 0 :(得分:6)
它适用于我,但是当涉及到调试Web scraper等时,您应该观察HTTP事务。这很容易添加,因为WWW::Mechanize是LWP::UserAgent子类:
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>
如果您想通过某个计划与PayPal互动,则需要sign up for developer access。
答案 1 :(得分:0)
我们完全不知道问题是什么。你读过常见问题吗?
perldoc WWW::Mechanize::FAQ
它提供了有关如何使用Mech调试问题的建议。我要问的第一件事是表单是否使用JavaScript。我敢打赌PayPal的网页正在做这件事。