PERL login проблема

Discussion in 'PHP' started by mr.4k, 21 Sep 2009.

  1. mr.4k

    mr.4k New Member

    Joined:
    22 Dec 2008
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    просьба поправить кривость в коде [PERL].

    цель кода: залогиниться на порнхабе. логин и пас верны.
    код ошибок не выдает. вроде пост происходит, но $r->content возвращает пустое место. в чем может быть проблема?
    спасибо.

    Code:
    use strict;
    use LWP::UserAgent;
    		
           my $user="Atisa";
           my $ua = LWP::UserAgent->new;
           my $r = $ua->get('http://www.pornhub.com');
    
            $r = $ua->post('http://www.pornhub.com/login', [
                    'username' => $user,
                    'password' => "sooper",
                    'remember_me' => 1
                    ], 'Referer' => 'http://www.pornhub.com/login');
    
            if($r->content =~ /Sign Out/) {
                    print $user." logged in\n";
            } else {
                    print $user." login failed\n";
    				print "content: ".$r->content;
    
            }
     
  2. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    наверное в хедере ответа от сервера надо смотреть.
    ->as_string
    99% что там будет "Set-Cookie" и "Location"
     
  3. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    #!/usr/bin/perl
    
    use strict;
    use LWP::UserAgent;
    
    my $user = "Atisa";
    my $ua = LWP::UserAgent->new ('agent' => 'Mozilla/4.0 (compatible; Windows 5.1)');
    $ua->cookie_jar ({});
    my $r = $ua->post ('http://www.pornhub.com/login', 'Referer' => 'http://www.pornhub.com/login',
      Content => [
        'username' => $user,
        'password' => "sooper",
        'remember_me' => 1
      ]);
    if ($r->status_line eq '302 Found') {
      print $user." logged in\n";
    } else {
      print $user." login failed\n";
      print "content: ".$r->content;
    }
    
    
     
    1 person likes this.
  4. mr.4k

    mr.4k New Member

    Joined:
    22 Dec 2008
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    работает отлично!
    спасибо!
     
  5. mr.4k

    mr.4k New Member

    Joined:
    22 Dec 2008
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    хмм...все же есть один нюанс.
    нужен контент той страницы, куда попадает юзер после логина.
    в посл. варианте $r->content не отдает контент.

    просьба помочь по возможности.
     
  6. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Попробуй добавь в начале

    push @{$ua->requests_redirectable}, "POST";
     
  7. mr.4k

    mr.4k New Member

    Joined:
    22 Dec 2008
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    хорошая идея.
    но не работает (
     
  8. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Поменяй условие
    if ($r->status_line eq '302 Found')

    и будет работать
     
    _________________________
  9. mr.4k

    mr.4k New Member

    Joined:
    22 Dec 2008
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    2 Kaimi: уже было. работает вроде по факту логина. но контент спарсить не могу. возвращает пустую страницу.
    отдельный респект тебе за блог! занимательный ресурс! пиши ещё!
     
  10. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Code:
    #!/usr/bin/perl
    
    use strict;
    use LWP::UserAgent;
    
    my $user = "Atisa";
    my $ua = LWP::UserAgent->new(agent => 'Mozilla/4.0 (compatible; Windows 5.1)');
    $ua->cookie_jar ({});
    push @{$ua->requests_redirectable}, "POST";
    
    my $r = $ua->post ('http://www.pornhub.com/login', 'Referer' => 'http://www.pornhub.com/login',
      Content => [
        'username' => $user,
        'password' => "sooper",
        'remember_me' => 1
      ])->content;
    
    if ($r =~ /<div class="success">/) {
      print $user." logged in\n".$r;
    } else {
      print $user." login failed\n";
    }
    
    
     
    _________________________
  11. mr.4k

    mr.4k New Member

    Joined:
    22 Dec 2008
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    все работает отлично!
    контент есть.
    спасибо!