Skip to content

Instantly share code, notes, and snippets.

@wodim
Created November 17, 2015 22:49
Show Gist options
  • Save wodim/f1089cd2b78838819dab to your computer and use it in GitHub Desktop.
Save wodim/f1089cd2b78838819dab to your computer and use it in GitHub Desktop.
Script I used back in old Molten-WoW to vote and get points automatically.
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use HTTP::Cookies;
use warnings;
use POSIX;
use HTML::Tree;
print "Not enough arguments (usage: $0 account password)\n" and exit unless ($#ARGV > 0);
sub get_time { return '['.POSIX::strftime('%H:%M:%S', localtime()).']'; }
my $user = $ARGV[0];
my $password = $ARGV[1];
print get_time." * Starting for \"$user\".\n";
my $main_url = 'https://www.molten-wow.com/';
my $login_url = 'https://www.molten-wow.com/login/';
my $account_url = 'https://www.molten-wow.com/account/';
my $start_url = 'https://www.molten-wow.com/account/vote/';
my @vote_urls = (
'http://www.openwow.com/visit=6',
'http://www.xtremetop100.com/out.php?site=1132296123',
'http://wow.top100arena.com/out.asp?id=44178'
);
my $user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31';
my $cookie_jar = HTTP::Cookies->new();
# LOG IN
my $ua = LWP::UserAgent->new();
$ua->cookie_jar($cookie_jar);
$ua->agent($user_agent);
$ua->default_header('Referer' => $main_url);
# get token
my $request = GET($main_url);
my $response = $ua->request($request);
my $content = $response->as_string();
my $tree = HTML::Tree->new();
$tree->parse($content);
my ($token) = $tree->look_down(
sub {
$_[0]->tag() eq 'input' and
$_[0]->attr('name') and
$_[0]->attr('name') eq '_mToken'
}
);
$token = $token->attr('value');
$request =
POST($login_url, [
'userID' => $user,
'userPW' => $password,
'_mToken' => $token,
]);
$response = $ua->request($request);
$content = $response->as_string();
if (!$response->is_redirect) {
print get_time." ERROR: could not log in.\n";
exit();
}
print get_time." Logged in.\n";
# GET POINTS BALANCE
$ua = LWP::UserAgent->new();
$ua->cookie_jar($cookie_jar);
$ua->agent($user_agent);
$request = GET($account_url);
$response = $ua->request($request);
$content = $response->as_string();
print get_time." You currently have $1 points.\n" if ($content =~ /<span id="accPoints" class="yellowgreen">(\d+)<\/span>/);
my $site = 0;
foreach my $vote_url (@vote_urls) {
print get_time." Voting from $vote_url ...\n";
$site++;
$ua = LWP::UserAgent->new();
$ua->cookie_jar($cookie_jar);
$ua->agent($user_agent);
$ua->default_header(
'Referer' => $account_url,
);
my $request_s = POST($start_url, ['id' => $site, '_mToken' => $token]);
my $response_s = $ua->request($request_s);
my $content_s = $response_s->as_string();
$ua = LWP::UserAgent->new();
$ua->cookie_jar($cookie_jar);
$ua->agent($user_agent);
$ua->default_header(
'Referer' => $vote_url,
);
my $request = GET($main_url);
my $response = $ua->request($request);
my $content = $response->as_string();
print get_time." You currently have $1 points.\n" if ($content =~ /<span id="accPoints" class="yellowgreen">(\d+)<\/span>/);
}
print get_time." * Done.\n\n";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment