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

如何获取链接重定向后的目标URL?解决requests库SSL证书验证失败报错问题

解决Requests库获取重定向URL时的SSL证书验证失败问题

嘿,我来帮你搞定这个SSL证书验证失败的问题!从你贴的报错信息来看,核心问题是certificate verify failed,也就是你的Python环境不信任目标网站的SSL证书,导致TLS握手失败。下面给你分析可能的原因和对应的解决办法:

可能的原因

  • 目标网站的SSL证书是自签名的,或者证书链不完整,不在本地CA证书库的信任列表里
  • 你本地环境的CA证书库过时了,无法识别目标网站的新证书
  • 网络环境(比如代理、防火墙)拦截了SSL证书验证流程

解决办法

1. 临时快速解决(不推荐用于生产环境)

如果只是测试需求,可以直接关闭SSL证书验证,在requests.get里添加verify=False参数。不过这样会跳过证书检查,有安全风险,requests也会弹出警告,你可以同时禁用这个警告:

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

# 禁用不安全请求的警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

url = "https://stlouisfed.org/fomcspeak/thomas-barkin/2019/04/apr-speech-a-practitioners-perspective-on-the-productivity-slowdown"

def get_redirected_url(url: str) -> str:
    # 关闭SSL验证,同时允许自动跟随重定向(默认就是True,这里可以显式写出来)
    r = requests.get(url, verify=False, allow_redirects=True)
    return r.url

print(get_redirected_url(url))

2. 生产环境推荐方案

方案A:更新本地CA证书库

因为你用的是Anaconda环境,直接更新负责管理CA证书的certifi包即可:

conda install certifi --update-deps

更新后,requests会使用最新的CA证书库,大概率能解决证书信任问题。

方案B:手动指定信任的CA证书

如果你知道目标网站的CA证书文件,可以下载后在请求时指定证书路径:

def get_redirected_url(url: str) -> str:
    # 替换成你的CA证书文件路径
    r = requests.get(url, verify="/path/to/your/ca_certificate.pem")
    return r.url

额外优化:用HEAD请求更高效

其实获取重定向地址不需要下载整个页面内容,用requests.head方法就足够了——它只会获取响应头信息,不会下载响应体,节省带宽和时间:

def get_redirected_url(url: str) -> str:
    # 这里根据实际情况设置verify参数
    r = requests.head(url, verify=False, allow_redirects=True)
    return r.url

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:32:47