$ 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