Вход на сайт через Perl и Mechanize - PullRequest
5 голосов
/ 20 мая 2011

Так что это сводит меня с ума.Обычно, когда я жестко прописываю свое имя пользователя и пароль, я могу без проблем войти в систему.Но я хочу предложить пользователю ввести имя пользователя и пароль, так как я хотел бы поделиться этой программой с другими.(предполагается, что программа войдет на наш сайт курсов и загрузит всю нашу информацию о работе курса - лекции, hw и т. д.)

Этот код работает:

use WWW::Mechanize;
use LWP;

my $username = 'user'; 
my $password = 'pass';

my $mech = WWW::Mechanize->new();
$mech -> cookie_jar(HTTP::Cookies->new());
$mech -> get('log-in url');
$mech -> form_name('theform');
$mech -> field ('username' => $username);
$mech -> field ('password' => $password);
$mech -> click ('log in');
print $mech-> content();

однако, когда я пытаюсьи предложите пользователю ввести информацию для входа, теперь она работает.печать содержимого возвращает html страницы входа в систему, а не следующую страницу (страница курсов для указанного пользователя)

use LWP;
use WWW::Mechanize;

my $login_url = 'log-in url';
print "\nUser name: ";
my $username = <>;
print "Password: ";
my $password = <>;

my $mech = WWW::Mechanize->new();
$mech -> cookie_jar(HTTP::Cookies->new());
$mech -> get($login_url);
$mech -> form_name('theform');
$mech -> field ('username' => $username);
$mech -> field ('password' => $password);
$mech -> click ('log in');
print $mech-> content();

это действительно не имеет смысла, поскольку они по сути одно и то же.Я даже набрал имя пользователя / пароль в кавычках в приглашении и все еще безрезультатно ..... (я также понимаю, что это будет не очень легко проверить без веб-сайта и информации для входа, извините за это)

Ответы [ 2 ]

12 голосов
/ 20 мая 2011

Вам нужно запустить chomp() на вводе от пользователя:

my $username = <>;
chomp($username);

Текст, предоставленный пользователем, имеет возврат каретки на конце, который облажаетсяВаш логин.

2 голосов
/ 21 мая 2011

Несмотря на то, что CanSpice верен, вы также можете посмотреть на Term::ReadPassword, он выдает подсказку, скрывает ввод И заботится о chomp для вас!

...