You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mojo::UserAgent能否获取重定向后的最终URL?

获取Mojo::UserAgent重定向后最终URL的方案

配置max_redirects启用自动重定向后,不需要引入额外依赖或自定义逻辑,请求完成后直接从事务对象中就能提取最终落地的URL地址。

基础实现代码

# 初始化UA,配置最多3次自动重定向
my $ua  = Mojo::UserAgent->new->max_redirects(3);
# 发起请求获取事务对象
my $tx = $ua->get('https://初始请求地址');
# 提取所有重定向完成后的最终绝对URL
my $final_url = $tx->req->url->to_abs;

实现说明

  • Mojo::UserAgent自动处理重定向的过程中,会同步更新事务对象内的请求属性,每完成一次跳转,内部绑定的请求对象就会更新为当前跳转目标地址对应的请求实例,请求全部结束后读取的$tx->req->url就是最终落地地址
  • 追加->to_abs方法是为了把可能存在的相对路径URL补全为带协议、域名的完整绝对地址,避免返回相对路径结果影响后续使用

扩展:获取完整重定向链路

如果需要查看每一步的跳转详情,可以直接读取响应对象自带的重定向记录列表,不需要手动埋点跟踪:

# 遍历所有中间跳转的事务记录
for my $redirect_tx ($tx->redirects->@*) {
    say "当前跳转源地址: " . $redirect_tx->req->url->to_abs;
    say "本次跳转响应状态码: " . $redirect_tx->res->code;
    say "本次跳转目标地址: " . $redirect_tx->res->headers->location;
}

注意事项

如果设置的max_redirects阈值小于实际重定向跳数,请求会在达到次数上限后终止,此时读取到的URL是最后一次成功跳转后的地址,并非最终落地页,可根据实际业务场景调整重定向次数阈值。

内容的提问来源于stack exchange,提问作者simone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:43:12