我创建了一个perl脚本来从网站获取一些信息。网页不会重定向自己,我需要点击继续自己重定向它。我可以使用perl吗?
#!/usr/bin/perl -w
use feature ':5.10';
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw(POST);
use HTTP::Cookies;
use CACertOrg::CA;
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
my $outfile="out.html";
my $URL="http://www.example.com;
my $UA = LWP::UserAgent->new();
$UA->ssl_opts(
SSL_verify_mode => 'SSL_VERIFY_NONE',
verify_hostnames => 0,
SSL_ca_file => CACertOrg::CA::SSL_ca_file()
);
$UA->cookie_jar(HTTP::Cookies->new(file => 'cookie_jar', autosave =>1));
my $req =HTTP::Request::Common::POST("$URL",
Content_type=>'form-data',
Content =>[
'username'=>'user',
'password'=>'pass',
'vhost'=>'standard'
]
);
$req->header('Cookie' =>q(TIN=287000; LastMRH_Session=439960f5; MRHSession=78c9c47291c1fcedae166121439960f5));
my $resp=$UA->request($req);
open(OUTFILE, ">$outfile");
print OUTFILE $resp->decoded_content;
close(OUTFILE);
out.html
i打印出来就像这样
当我打开html文件时,它直接重定向到我想要的页面但不在代码中。无需在代码中执行任何操作即可到达wwww.example.com
。
已添加8/18
我尝试使用此命令,然后在我的浏览器中打开www.example.com
my $ret = system( 'out.html' );
但我想要的是获取www.example.com
的html而不是打开网站。
答案 0 :(得分:0)
最佳解决方案是设置您的位置标头。如果是将输出直接写入响应(而不是输出HTML文件)的选项,则可以在HTML内容之前编写标题。
use HTTP::Headers;
my $headers = HTTP::Headers->new;
$headers->header('Content-Type' => 'text/html');
$headers->header('Location' => 'newAddr.html');
$headers->header('Cookie' => q(TIN=287000; LastMRH_Session=439960f5; MRHSession=78c9c47291c1fcedae166121439960f5));
print $headers->as_string();
如果需要,您还可以将HTTP状态代码设置为302以进行临时重定向。
或者,您可以使用javascript在页面加载后自动重定向,方法是将其添加到HTML内容中。
<script type="text/javacript">
window.location = "newAddr.html";
</script>