$ curl -s "http://usa.kaspersky.com/files/?file=kis&program=one&lang=en&track=pu_kiskis_usen" -w %{redirect_url}
####
https://klamericas.s3.amazonaws.com/files/one/en/kis17.0.0.611en_10755.exe
####
#!/usr/bin/perl
use strict;
use warnings;
#use diagnostics;
#use diagnostics "-verbose";
use constant MaxTime1 => 20; # Seconds
# use Net::Nslookup qw ( nslookup );
use LWP::UserAgent;
# use LWP::Protocol qw ( https );
use Term::ANSIColor qw ( BOLD BLUE RED GREEN RESET );
my $Debug="yes";
sub GetUrlRedirect ( $$ ) {
# Return $Url's redirected web page. Black string if none if located
# Reference: http://stackoverflow.com/questions/26087546/perl-print-the-redirected-url
# http://search.cpan.org/~ether/libwww-perl-6.15/lib/LWP/UserAgent.pm
# http://stackoverflow.com/questions/2470053/how-can-i-get-the-ultimate-url-without-fetching-the-pages-using-perl-and-lwp
# https://metacpan.org/pod/HTTP%3A%3AResponse
# system ('curl -s "SomeUrl" -w %{redirect_url}');
my $IAm = ( caller(0) )[3];
# Incoming:
my $Url = $_[0];
my $Caller = "$_[1]" . "$IAm";
my $request;
my $result;
my $redirect = "";
my $ua = LWP::UserAgent->new;
$ua->timeout ( MaxTime1 );
$ua->show_progress;
# $ua->requests_redirectable( ); # to read
$request = new HTTP::Request(GET => "$Url");
$result = $ua->request($request);
$redirect = $result->redirects;
print STDERR "result = <$result>\nredirect = <$redirect>\n";
if ( ! $result->is_success )
{ print STDERR BOLD RED
" ERROR ${Caller}: unable to obtain a redirect web page for ",
$Url, RESET, "\n";
return ""; }
else
{ if ( "$Debug" eq "yes" ) { print STDERR "RedirectUrl = <$redirect>\n"; }
return $redirect;
}
}
my $IAm = "UrlRedirectTest.pl ";
my $WebSite = 'http://usa.kaspersky.com/files/?file=kis&program=one&lang=en&track=pu_kiskis_usen';
my $RedirectUrl = GetUrlRedirect ( $WebSite, $IAm );
print "\nWebSite $WebSite\nredirects to\n$RedirectUrl\n";
END