#!/usr/bin/perl -W use LWP; use strict; my $browser = LWP::UserAgent->new; sub find_line { my ($haystack, $needle)=@_; my @data=split(/\n/, $haystack); my @results; for(my $i=0; $i<=$#data; $i++) { if($data[$i] =~ /$needle/) { $results[$#results+1]=$data[$i]; } } return @results; } sub extract_value { my ($data, $key)=@_; my ($line)=find_line($data, "name=\"$key\" value="); $line =~ s/^.*name\=\"$key\" value\=\"([a-zA-Z0-9_\.:\/-]*)\"[ \>].*$/$1/g; return $line; } sub get_refresh { my ($data)=@_; my ($line)=find_line($data, "$/$1/g; return $line; } sub login { my ($browser)=@_; my $url = "http://www.google.com/"; my $response = $browser->get($url); if(!$response->is_success) { exit(1); } $response = $browser->get($url); if(!$response->is_success) { exit(1); } ($url)=find_line($response->content, "method=\"post\" action="); $url =~ s/^.*action\=\"(.*)\" on.*$/$1/g; $url = URI->new_abs($url, $response->base); my %bits; $bits{"dlurl"}=extract_value($response->content, "dlurl"); $bits{"l"}=extract_value($response->content, "l"); $bits{"userid"}=extract_value($response->content, "userid"); $bits{"password"}=extract_value($response->content, "password"); $bits{"UI"}=extract_value($response->content, "UI"); $bits{"UURL"}=extract_value($response->content, "UURL"); $bits{"MA"}=extract_value($response->content, "MA"); $bits{"OS"}=extract_value($response->content, "OS"); $bits{"SC"}=extract_value($response->content, "SC"); $bits{"UIP"}=extract_value($response->content, "UIP"); $bits{"i_agree"}=extract_value($response->content, "i_agree"); $bits{"Submit"}=extract_value($response->content, "Submit"); $bits{"Submit.x"}="54"; $bits{"Submit.y"}="15"; $response=$browser->post($url, \%bits); if(!$response->is_redirect) { exit(2); } $response=$browser->get($response->header("Location")); if(!$response->is_success) { exit(3); } $url=get_refresh($response->content); $response=$browser->get($url); if(!$response->is_success) { exit(4); } $url=URI->new_abs(get_refresh($response->content), $response->base); $response=$browser->get($url); if(!$response->is_success) { exit(5); } $response=$browser->get($url); if(!$response->is_success) { exit(6); } $url=URI->new_abs(get_refresh($response->content), $response->base); $response=$browser->get($url); if(!$response->is_success) { exit(7); } $url=URI->new_abs(get_refresh($response->content), $response->base); $response=$browser->get($url); if(!$response->is_success) { exit(8); } } login($browser);