Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
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 meditating upon the Monastery: (5)
As of 2015-07-04 22:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls