2010-09-29 8 views
-1

Rien que j'ai essayé peut obtenir mon code pour soumettre correctement. Quelqu'un d'autre peut-il comprendre cela?Pourquoi mon site WWW :: Mechanize ne soumet-il pas un formulaire PayPal?

#!/usr/bin/perl 

use WWW::Mechanize; 


my $user = '[email protected]'; 
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; 
+2

Votre code fonctionne pour moi. Quel problème avez-vous? – gangabass

+1

Par hasard, l'adresse IP a-t-elle été mise sur liste noire/interdite? –

+1

Qu'est-ce qui se passe, par rapport à ce que vous attendez? Vous n'indiquez pas clairement le problème réel que vous rencontrez. – Ether

Répondre

6

Cela fonctionne pour moi, mais quand il s'agit de déboguer des scrapers Web, etc, vous devriez regarder la transaction HTTP. C'est vraiment facile d'ajouter depuis WWW::Mechanize est une sous-classe 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 }); 

Maintenant, vous pouvez voir ce que vous envoyez et ce que PayPal renvoie.

Souvent, vous pouvez également utiliser divers outils de reniflage HTTP, mais ceux-ci ne fonctionnent que pour les choses que vous envoyez en clair, donc vous n'avez pas de chance ici.

Dans ce cas, cependant, PayPal est à vous. Ils savent que vous utilisez un script. Une partie de la sortie que je reçois est:

<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> 

Si vous souhaitez interagir avec PayPal grâce à un programme, vous devez sign up for developer access.

+0

Le problème est qu'une fois que j'arrive à la page avant le commentaire, je suis perdu quant à la façon de soumettre ce formulaire. Diverses méthodes que j'ai essayées à la place de ce commentaire ont échoué. Le code déjà là fonctionne, mais j'ai du mal à écrire plus de code de travail. Merci. –

+0

Eh bien, vous devez expliquer ce que vous voulez faire. Modifiez votre question initiale pour nous dire ce que vous essayez de faire, ce que vous avez essayé et comment cela n'a pas fonctionné. –

+0

Merci pour l'aide, j'ai fini par contourner cela d'une manière complètement différente. –

0

Nous ne savons pas exactement quel est le problème. Avez-vous lu la FAQ?

perldoc WWW::Mechanize::FAQ 

Il donne des suggestions sur la façon de déboguer des problèmes avec Mech. La première chose que je dois demander est si le formulaire utilise JavaScript. Je parie que les pages de PayPal font cela.

+0

Le problème est qu'une fois que j'arrive à la page avant le commentaire, je suis perdu quant à la façon de soumettre ce formulaire. Diverses méthodes que j'ai essayées à la place de ce commentaire ont échoué. Merci. –

+0

Montrez-nous ce que vous avez essayé. –

Questions connexes