Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

WWW::Mechanize and Facebook login

by davidov0009 (Scribe)
on Dec 11, 2007 at 04:40 UTC ( [id://656307]=perlquestion: print w/replies, xml ) Need Help??

davidov0009 has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I am attempting to login to facebook using WWW::Mechanize but when I test to see the resulting page using $mech->uri() it outputs the page that would result form incorrect login information. Here is the code I am using:

#!/usr/bin/perl use strict; use WWW::Mechanize; my $url = "http://www.facebook.com"; my $mech = WWW::Mechanize->new(); $mech->get($url); $mech->submit_form( form_name => "loginform", fields => { email => $ARGV[0], pass => $ARGV[1] } ); print $mech->uri() . "\n";

I am unclear as to why it is unable to login, assuming the info provided is valid. Also, mech-dump spits back that the return type of the other login page for facebook (not used in this script) is of content type text/plain NOT of text/html. Is that a cause for concern when using Mech?

Any help appreciated.

use strict; use CGI;

Replies are listed 'Best First'.
Re: WWW::Mechanize and Facebook login
by learnperl (Acolyte) on Dec 11, 2007 at 05:33 UTC

    I am not that expert on WWW::Mechanize but lately I have been trying do something similar to this, and so far I haven't had much luck with it. But looks to me your issue is JavaScript. If you take closer look at the "loginform" they call a quicklogin() function. WWW::Mechanize doesn't deal with javascript. Search for LWP on cpan and try LWP->agent.

    Your problem is right here... (at least the way I think...) <form method="post" name="loginform" action="https://login.facebook.co +m/login.php" onsubmit="quicklogin();">
    Thanks
    LearnPerl
      I have successfully got LWP to login. This seems to work well: (at least the login stuff)

      http://mattdanger.net/code/facebook-status/facebook-status.pl

      Your going to need Crypt::SSLeay installed though.
      use strict; use CGI;
        Hi, I know this is an older thread, but thought it may help others. Here is a sample using Mechanize - you do need the Crypt::SSLeay module installed for it to work.
        use strict; use WWW::Mechanize; use HTTP::Cookies; my $url = "http://www.facebook.com"; my $appurl = "http://apps.facebook.com/inthemafia"; my $username = 'your@email'; my $password = 'yourpass'; my $mech = WWW::Mechanize->new(); $mech->cookie_jar(HTTP::Cookies->new()); $mech->get($url); $mech->form_name('menubar_login'); $mech->field(email => $username); $mech->field(pass => $password); $mech->click(); my $facebook_content = $mech->content(); # go to an app url $mech->get($appurl); my $app_content = $mech->content(); print "$app_content\n";
Re: WWW::Mechanize and Facebook login
by Kanji (Parson) on Dec 11, 2007 at 08:47 UTC

    Depending on the user agent you specify(1), Facebook's successful/failed login URLs can actually be the same, so you probably want to check the content of what was returned, rather than location.

        --k.


    (1) See $mech->agent_alias('...') or the agent argument to WWW::Mechanize->new.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://656307]
Approved by jonnyfolk
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2024-04-19 23:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found