Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

WWW::Mechanize and Facebook login

by davidov0009 (Scribe)
on Dec 11, 2007 at 04:40 UTC ( #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;

Comment on WWW::Mechanize and Facebook login
Select or Download Code
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
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? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2014-07-31 06:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (245 votes), past polls