Пройдите через 302 ответа и сохраните HTML для страницы перенаправления

Я написал код, чтобы получить HTML-код с сайта безопасности. Я получил ответ 302, но я не уверен, как сохранить HTML для веб-страницы. Ниже мой код.

#!/usr/bin/perl -w

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw(POST);
use HTTP::Cookies;

my $URL="http://www.example.com";
my $UA = LWP::UserAgent->new();
$UA->ssl_opts( verify_hostnames => 0 ); 


my $req =HTTP::Request::Common::POST("$URL",
   Content_type=>'form-data',
   Content =>[
     'username'=>'user',
     'password'=>'password',
   ]
);
$req->header('Cookie' =>q(TIN=287000; LastMRH_Session=439960f5; MRHSession=78c9c47291c1fcedae166121439960f5));

my $resp=$UA->request($req);

if ($resp->is_success) {

    my $res2 = $UA->post($resp->base, []);
    print $res2->decoded_content;
}

Ниже 302 ответа я получаю

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
    <title>302 Found</title>
</head><body>
    <h1>Found</h1>
<p>The document has moved <a 
    href="http://www.example.com">here</a>.</p>
    <hr>
    <address>Apache/2.2.3 (CentOS) Server at www Port 80</address>
</body></html>

Я хочу получить информацию html с сайта www.XXX.com но я могу только 302 ответить. Я думаю, что застрял в цикле перенаправления, но не уверен, как пройти через него.

0 ответов

Проблема заключается в том, что LWP::UserAgent по умолчанию не поддерживает метод "post". Для использования метода POST вам понадобится следующий код:

push @{ $UA>requests_redirectable }, 'POST';

так вот так:

my $UA = LWP::UserAgent->new();
push @{ $UA>requests_redirectable }, 'POST';
$UA->ssl_opts( verify_hostnames => 0 ); 
Другие вопросы по тегам