Я использовал Perl-модуль WWW::Mechanize, чтобы попытаться войти на веб-сайт, требующий аутентификации Steam. До сих пор мне удавалось успешно перейти на страницу входа, но как только я отправляю свою форму, она, похоже, вообще не работает. Когда форма отправлена, содержимое страницы не меняется, как если бы я не смог войти в систему, и он хочет, чтобы я повторил попытку. Я искал несколько часов и пробовал множество различных комбинаций установки полей формы и отправки текста, но ничего не работает. По какой-то причине я мало что нашел о проверке того, может ли Mechanize видеть, сработал ли вход в систему или нет. Возможно, мои условия поиска не очень хороши.
Вот код, который я получил до сих пор. Для этого нужно перейти к форме входа в tf2wh, которая перенаправляет на страницу входа в Steam, заполнить имя пользователя/пароль, нажать кнопку, а затем вернуться в tf2wh с сеансом входа, сохраненным в файлах cookie. Тем не менее, единственная часть, которая работает, — это начальное перенаправление входа в систему.
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
my $user = "my_username";
my $pass = "my_password";
my $uri = 'http://www.tf2wh.com/?login';
my $cookies = 'cookies.txt';
my $agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
my $mechanize = WWW::Mechanize->new(
agent => $agent,
cookie_jar => {},
autosave => 1,
ignore_discard => 1);
$mechanize->add_header(
"Connection" => "keep-alive",
"Keep-Alive" => "115");
$mechanize->get( $uri );
$mechanize->success or die "Could not fetch login page.\n";
#One of many different forms I've tried
$mechanize->form_name('login');
$mechanize->set_visible($user, $pass);
$mechanize->click();
$mechanize->follow_link();
$mechanize->success or die 'Could not login.';
print "Logged in successfully! Trying to look at TF2WH now.\n";
#Test to see if we get the "You need to login" message
$mechanize->get('http://www.tf2wh.com/item.php?id=6011;6;78e2c5962db56a60f7c143a12875f3b6');
print "Fetched\n";
if($mechanize->text() =~ m{Handy Hint:})
{
print "Failed to login.\n";
}
else
{
print "Up and running!";
}