0

我正在尝试使用 perl 登录网站,但我无法完成,这是我实际编写的代码:

package Vk;

use strict;
use warnings;
use LWPx::ParanoidAgent;
use HTML::TokeParser;
use XML::TokeParser;
use Time::HiRes qw/ usleep /;
use URI::Escape;


my $url = 'https://login.vk.com/?act=login';

sub run
{
my ($class, $conf, $rows) = @_;

print "trying to log in ... \n\n";

my $ua = LWPx::ParanoidAgent->new(
    agent => $conf->{HTTP_USER_AGENT},
    timeout => $conf->{HTTP_TIMEOUT}
    );

my $request = POST($url, 
    {
        'act' => 'login',
        'role' => 'al_frame',
        'expire' => '',
        'captcha_sid' => '',
        'captcha_key' => '',
        '_origin' => 'http://vk.com',
        'ip_h' => '****************',
        'email' => '**********',
        'pass' => '******',
    }
);

print "YOUR ARE LOGGED IN VK ....\n\n\n\n\n\n";

...........

此代码仅打印“尝试登录 ...”,但未达到您已登录 VK ...。

谢谢。

4

2 回答 2

1

从您的帖子来看,在我看来,这个网站是通过验证码保护的。使用简单的 LWP 无法绕过验证码检查。

要绕过验证码测试,您需要使用 OCR 或其他方法。

于 2013-09-18T09:02:42.913 回答
0

这个工作,非常感谢大家:

....
    my $post = {
        act => 'login',
        role => 'al_frame',
        expire => '',
        captcha_sid => '',
        captcha_key => '',
        _origin => 'http://vk.com',
        ip_h => '*************',
        email => '************',
        pass => '******',
    };

    my $response = $ua->post(q[https://login.vk.com/?act=login], $post); 
....
于 2013-09-18T09:31:00.457 回答