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

如何在Python中获取动态生成链接的最终目标URL?

嘿,这个问题核心就是处理HTTP重定向嘛!我来给你几个可行的思路和代码示例,亲测有效~

可行思路与实现方案

1. 利用requests库自动处理重定向(最简单的方法)

requests库默认会自动跟随HTTP 3xx重定向,你只需要发起请求后,直接获取响应的url属性就能拿到最终跳转的目标地址。不过要注意,有些网站会检查请求头的User-Agent,所以最好模拟浏览器的UA,避免被拦截。

示例代码:

import requests

# 你的动态链接
dynamic_url = "https://news.google.com/__i/rss/rd/articles/CBMiiQFodHRwczovL3d3dy5jb3JyaWVyZS5pdC9zcG9ydC8xOV9vdHRvYnJlXzMwL3JhcGluYXRvcmktdmlsbGEtY2xhdWRpby1tYXJjaGlzaW8taW5nZW50ZS1ib3R0aW5vLTQ1YmE0YjFlLWZhZTctMTFlOS1iMWM2LWEzODFhYmJhNWQ5Zi5zaHRtbNIBjAFodHRwczovL3d3dy5jb3JyaWVyZS5pdC9zcG9ydC8xOV9vdHRvYnJlXzMwL3JhcGluYXRvcmktdmlsbGEtY2xhdWRpby1tYXJjaGlzaW8taW5nZW50ZS1ib3R0aW5vLTQ1YmE0YjFlLWZhZTctMTFlOS1iMWM2LWEzODFhYmJhNWQ5Zl9hbXAuaHRtbA?oc=5"

# 模拟浏览器的User-Agent,避免被网站拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

try:
    # 发起请求,默认allow_redirects=True会自动跟随重定向
    response = requests.get(dynamic_url, headers=headers)
    # 获取最终跳转的URL
    final_url = response.url
    print("最终目标URL:", final_url)
except Exception as e:
    print(f"请求出错: {e}")

2. 手动跟踪重定向(适合需要查看每一步跳转的场景)

如果你想手动控制重定向的过程,或者查看每一步的跳转地址,可以禁用自动重定向,然后循环读取响应头里的Location字段,直到没有重定向为止。

示例代码:

import requests

dynamic_url = "https://news.google.com/__i/rss/rd/articles/CBMiiQFodHRwczovL3d3dy5jb3JyaWVyZS5pdC9zcG9ydC8xOV9vdHRvYnJlXzMwL3JhcGluYXRvcmktdmlsbGEtY2xhdWRpby1tYXJjaGlzaW8taW5nZW50ZS1ib3R0aW5vLTQ1YmE0YjFlLWZhZTctMTFlOS1iMWM2LWEzODFhYmJhNWQ5Zi5zaHRtbNIBjAFodHRwczovL3d3dy5jb3JyaWVyZS5pdC9zcG9ydC8xOV9vdHRvYnJlXzMwL3JhcGluYXRvcmktdmlsbGEtY2xhdWRpby1tYXJjaGlzaW8taW5nZW50ZS1ib3R0aW5vLTQ1YmE0YjFlLWZhZTctMTFlOS1iMWM2LWEzODFhYmJhNWQ5Zl9hbXAuaHRtbA?oc=5"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

current_url = dynamic_url
max_redirects = 10  # 设置最大跳转次数,防止无限循环
redirect_count = 0

while redirect_count < max_redirects:
    try:
        # 禁用自动重定向
        response = requests.get(current_url, headers=headers, allow_redirects=False)
        # 检查是否是重定向状态码(301、302、303、307、308)
        if response.status_code in [301, 302, 303, 307, 308]:
            current_url = response.headers.get("Location")
            redirect_count += 1
            print(f"第{redirect_count}次跳转: {current_url}")
        else:
            # 不是重定向,当前URL就是最终目标
            final_url = current_url
            break
    except Exception as e:
        print(f"请求出错: {e}")
        break

print("最终目标URL:", final_url)

3. 关键注意事项

  • User-Agent设置:很多网站会拒绝默认的requests库UA(比如python-requests/x.x.x),所以一定要模拟浏览器的UA,不然可能会得到403或其他错误。
  • 重定向次数限制:手动跟踪时一定要设置最大跳转次数,防止遇到循环重定向导致程序死循环。
  • HTTPS验证:如果遇到SSL证书问题,可以临时添加verify=False参数(不推荐生产环境使用,最好配置正确的证书)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:27:38