#!/usr/bin/perl # Connect to the the Zen customer portal and find out your ADSL usage # For updates etc see http://www.rachaelandtom.info/zen-adsl-usage-monitor $user="your portal username with \@ instead of @"; $pass="your portal password"; $orderID="-11111"; # sales order ID - NOT order ID (click the plus) #You shouldn't need to alter anything further down use LWP; my $browser = LWP::UserAgent->new; $browser->cookie_jar({}); push @{ $browser->requests_redirectable }, 'POST'; $browser->default_header('referer' => "https://portal.zen.co.uk"); $browser->agent('Mozilla/4.0 (compatible; Zen-Usage/1.5)'); $baseURL="https://portal.zen.co.uk/"; $loginTarget= $baseURL."PageLoader.aspx?PageCategory=SignIn&PageID=SignIn&%23"; $servicePage= $baseURL."PageLoader.aspx?PageCategory=MyOrders&PageID=MyServices"; $response = $browser->get( $baseURL ); die "$url error: ", $response->status_line unless $response->is_success; die "Weird content type at $url -- ", $response->content_type unless $response->content_type eq 'text/html'; #print "login page\n"; #print $response->content; $resp=$response->content; $resp=~/__VIEWSTATE" value="(.*)"/; $vState= $1; $resp=~/__EVENTVALIDATION" value="(.*)"/; $eVal= $1; #print "login send to: https://portal.zen.co.uk/$loginTarget"; #print "\nviewState=$vState"; $response = $browser->post( $loginTarget , [ Content-Type=>"application/x-www-form-urlencoded", __EVENTTARGET=>"ctl00\$ContentPlaceholderPageContent\$PageContentControl\$lnkbtnSignIn", __EVENTARGUMENT=>"", __VIEWSTATE=>"$vState", __EVENTVALIDATION=>"$eVal", 'ctl00$ContentPlaceholderPageContent$PageContentControl$txtEmailAddress$ZenTextBox'=>"$user", 'ctl00$ContentPlaceholderPageContent$PageContentControl$txtPassword$ZenTextBox'=>"$pass", SmartScroller1_ScrollY=>0, SmartScroller1_ScrollX=>0 ] ); #print "\npost login page\n"; #print $response->content(); die "Failed to login - did you escape the at-sign ?" unless $response->content()=~/You last signed in on/ ; $response = $browser->get( $servicePage); #print "\norders page\n"; #print $response->content(); $response->content =~/$orderID(.*)Tools /s; #multiline $GetOrderDetailUrl=$1; #print "\nOrder panel=$GetOrderDetailUrl"; $GetOrderDetailUrl=~//; $GetOrderDetailUrl=$1; #print "\nOrder id url = $GetOrderDetailUrl\n"; $response = $browser->get( $baseURL.$GetOrderDetailUrl ); #print "\nservice page\n"; #print $response->content ; $allowance=0; $used=0; $remain=0; $text=$response->content; $response->content =~/span id=".*PageContentControl.*Used">([0-9\.]*) GBcontent =~/([0-9\.]*) GB