【问题标题】:How to pass through redirect page by clicking button in html如何通过单击html中的按钮通过重定向页面
【发布时间】:2017-08-18 02:37:15
【问题描述】:

我创建了一个 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是这样的

当我打开 html 文件时,它直接重定向到我想要的页面,但不在代码中。在代码中的任何地方都可以到达wwww.example.com

8 月 18 日添加

我尝试使用这个命令,它会在我的浏览器中打开www.example.com

 my $ret = system( 'out.html' );

但我想要的是获取www.example.com 的html,而不是打开网站。

【问题讨论】:

    标签: html perl httprequest url-redirection lwp-useragent


    【解决方案1】:

    最好的解决方案是设置您的位置标题。如果可以选择将输出直接写入响应(而不是输出 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>
    

    【讨论】:

    • 嗨@elvey,我应该将哪个部分添加到我的代码中?而我想要的是获取www.example.com的html代码,而不仅仅是进入网站,抱歉信息不清楚
    • @Tim 标头由网络服务器在 HTML 内容之前发送,因此它们需要进入提供您内容的任何脚本。你实际上在用 out.html 做什么?
    • 嗨@elvey,我的脚本中的 out.html 是为了调试目的,看看我是否成功获取了 'www.example.com' 的 html,但不幸的是,我得到的 out.html 是'继续'如上所示,所以我想这是一种单击'继续'按钮的方法,这样我就可以获取我想要的网站的 html
    • 而且如果我使用脚本直接打开 out.html,我会在浏览器中重定向到我想要的页面,只是不确定为什么我的代码在重定向后无法获取页面的 html 代码
    • @Tim 要使用标头重定向,它需要由 Web 服务器在您的 HTML 内容之前发送,因此您无法从 HTML 文档中执行此操作。我已经更新了我的答案以包含一个 javascript 重定向,如果您无法发送标头,这可能是一个更好的选择。
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多