Here's the code:
Code: Select all
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use Crypt::SSLeay;
use LWP::ConnCache;
use HTTP::Cookies;
use HTTP::Status;
use HTTP::Response;
use URI::URL;
#use LWP::Debug qw(+);
# 0=false, 1=true
my $DEBUG = 0;
# CA cert peer verification
$ENV{HTTPS_CA_FILE} = "/root/scripts/cacert.cer";
my $password = "*******";
my $username = "*******";
if ($DEBUG){
print "Username is: $username\n";
print "Password is: ********\n";
}
# Create a user agent
my $ua = LWP::UserAgent->new();
push @{ $ua->requests_redirectable }, 'POST';
$ua->conn_cache(LWP::ConnCache->new());
$ua->cookie_jar(HTTP::Cookies->new());
# Get the login page
my $loginpage = "http://my.vodafone.nl/prive/my_vodafone?errormessage=&errorcode=";
my $response1 = $ua->get($loginpage);
if ($response1->is_error){
print "Error - getting the login page\n";
print $response1->status_line;
exit;
}
# get ID parameter
$response1->content =~ /(<input value="+\S{32}" name="ID" type="hidden">)/;
my $ID = substr($1, 14, 32);
# Login My Vodafone
my $doLogin="https://login.vodafone.nl/signon?provider=myvodafone";
my $response2 = $ua->post($doLogin,
['username' => $username,
'password' => $password,
'loginerrorurl' => 'prive/my_vodafone',
'assertionconsumerurl' => 'prive/my_vodafone',
'inloggen' => 'inloggen',
'ID' => $ID
],
'content_type' => 'application/x-www-form-urlencoded'
);
if ($response2->is_error){
print "Error - logging in\n";
print $response2->status_line;
exit;
}
$response2->content =~ /<div class="legend">&euro\; \;(\d+,\d+) \;van /;
my $OVER = $1;
$response2->content =~ /\s&euro\; \;(\d+,\d+)<\/div><\/div>/;
my $VAN = $1;
print "I still have $OVER euro over from the $VAN this month\n";