我已经编写了一个代码来从安全网站获取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>
我想从网站www.XXX.com
获取html信息,但我只能得到302回应。我想我陷入了重定向循环,但不知道如何通过它。
答案 0 :(得分:1)
此问题是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 );