Perl WWW::Mechanize(或 LWP)获取重定向 url

标签 perl url redirect www-mechanize lwp

所以我正在使用 WWW::Mechanize抓取网站。它工作得很好,除非我请求一个 url,例如:

http://www.levi.com/

我被重定向到:
http://us.levi.com/home/index.jsp

对于我的脚本,我需要知道这个重定向发生了,以及我被重定向到的 url 是什么。有没有办法用 WWW::Mechanize 检测到这一点?或 LWP然后获取重定向的网址?谢谢!

最佳答案

use strict;
use warnings;
use URI;
use WWW::Mechanize;

my $url = 'http://...';
my $mech = WWW::Mechanize->new(autocheck => 0);
$mech->max_redirect(0);
$mech->get($url);

my $status = $mech->status();
if (($status >= 300) && ($status < 400)) {
  my $location = $mech->response()->header('Location');
  if (defined $location) {
    print "Redirected to $location\n";
    $mech->get(URI->new_abs($location, $mech->base()));
  }
}

如果状态码是 3XX ,那么您应该检查重定向 url 的响应 header 。

关于Perl WWW::Mechanize(或 LWP)获取重定向 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10922054/

相关文章:

Perl:以编程方式删除 PostgreSQL 表索引,然后使用 DBD::Pg 在 COPY 之后重新创建

linux - 如何获取执行我的 Perl 脚本的用户的名称?

javascript - 如何在 Node.js/Express 中进行重定向(301)?

javascript - 有没有可以重定向到另一个 HTML 的 JavaScript 函数?

php - 我的网站由于某种原因没有被编入索引

database - 是否有带数据库逆向工程的 Perl ORM?

perl - 从 Moose BUILD 方法中发出嘶嘶声

用于验证绝对 URL 或相对 URL 的正则表达式

rest - 查找 API 端点的方法

java - 如何让 Java 匹配 JavaScript 的 encodeURIComponent() 方法?