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

使用Jsoup获取URL重定向目标URL失败的技术咨询

解决Jsoup无法获取重定向目标URL的问题

我太懂这个痛点了!Jsoup默认会自动跟随HTTP重定向,但如果你直接用Jsoup.connect(url).get().url(),得到的确实是你最初请求的原始URL,而不是最终跳转后的目标地址——这是因为Document对象里的url方法保存的是请求起始地址,不是最终响应的地址。

下面给你两种针对性的解决办法:

1. 处理HTTP层面的重定向(最常见情况)

不要直接调用get()或parse(),而是先通过execute()获取Response对象,它里面的url()方法会返回最终重定向后的地址:

// 替换成你的原始URL
String originalUrl = "https://example.com/redirect";
Connection.Response response = Jsoup.connect(originalUrl)
        .followRedirects(true) // 这是Jsoup默认行为,可写可不写
        .execute();

// 获取最终重定向后的目标URL
String finalTargetUrl = response.url().toString();

// 如果还需要解析页面内容,直接从response生成Document
Document doc = response.parse();

2. 处理客户端侧重定向(比如Meta Refresh、JS跳转)

如果遇到的是页面里的Meta标签跳转或者JavaScript跳转(不是HTTP 3xx状态码的重定向),Jsoup默认不会自动处理,这时候需要手动解析页面内容:

处理Meta Refresh跳转

Document doc = Jsoup.connect(originalUrl).get();
Element metaRefresh = doc.selectFirst("meta[http-equiv=refresh]");
if (metaRefresh != null) {
    String contentAttr = metaRefresh.attr("content");
    if (contentAttr.contains("url=")) {
        String targetUrl = contentAttr.split("url=")[1].trim();
        // 处理相对URL,转成绝对地址
        if (!targetUrl.startsWith("http")) {
            targetUrl = doc.baseUri() + targetUrl;
        }
        // 这里的targetUrl就是跳转目标
    }
}

处理JS跳转(简单场景)

如果是JS里的window.location.href跳转,可以尝试提取对应的URL:

Document doc = Jsoup.connect(originalUrl).get();
Elements scriptTags = doc.select("script");
for (Element script : scriptTags) {
    String scriptContent = script.html();
    if (scriptContent.contains("window.location.href")) {
        // 简单提取,复杂场景可能需要正则
        int startIdx = scriptContent.indexOf("window.location.href = '") + 24;
        int endIdx = scriptContent.indexOf("'", startIdx);
        String targetUrl = scriptContent.substring(startIdx, endIdx);
        // 同样处理相对URL
        if (!targetUrl.startsWith("http")) {
            targetUrl = doc.baseUri() + targetUrl;
        }
    }
}

先判断你的重定向类型是HTTP层面还是客户端侧,对应上面的方法就能拿到真正的目标URL啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:23:42