在“快缩短网址”(suo.run)项目中,我们致力于为用户提供高效、精准的链接解析服务。而在实际应用场景中,解析如 Bilibili(B站)短链接这类跳转型 URL,是许多开发者与用户共同面对的需求。以下是一种优雅且高效的 Python 实现方式,助你轻松将 B 站短链还原为原始长链接。
---
方法一:利用 requests 库追踪重定向
通过发送 HEAD 请求,我们可以在不下载完整响应体的前提下,高效获取最终跳转地址:

python
import requests

def resolve_bilibili_shortlink(short_url):
"""
递归解析 B 站短链接,直至获取最终目标 URL。
使用 HEAD 请求以减少带宽消耗,并启用自动重定向追踪。
"""
response = requests.head(short_url, allow_redirects=True, timeout=10)
若响应头中存在 'location',说明仍处于中间跳转阶段
if 'location' in response.headers:
return resolve_bilibili_shortlink(response.headers['location'])
否则,当前 URL 即为最终落地页
return response.url
使用示例:
python
short_link = "https://b23.tv/abcd123" # 替换为真实 B 站短链
original_url = resolve_bilibili_shortlink(short_link)
print("解析后的原始链接:", original_url)
---
方法二(可选):提取纯净 URL(去除查询参数)
有时,解析出的长链接包含冗余参数(如
?spm_id=...),若你仅需保留基础路径,可借助正则表达式进行清洗:python
import re
def extract_clean_url(url):
"""
从完整 URL 中提取不含查询参数的“纯净”部分。
保留协议与主机路径,剔除 ? 及其后所有内容。
"""
match = re.match(r'^(https?://[^?]+)', url)
return match.group(1) if match else url
结合使用:
python
clean_url = extract_clean_url(original_url)
print("纯净链接:", clean_url)
---
注意事项与最佳实践
- 网络稳健性:建议为请求设置超时(如
timeout=10),并捕获异常(如 requests.RequestException),以应对网络波动或无效链接。- 合规使用:请遵守 Bilibili 的服务条款与 robots 协议,避免高频请求或用于非授权用途。
- 动态适配:平台重定向逻辑可能随时间调整,请定期验证解析逻辑的有效性。
- 性能优化:对于批量处理场景,可考虑使用异步请求(如
aiohttp)提升效率。---
通过上述方法,你不仅能准确还原 B 站短链接的真实指向,还能进一步净化结果,获得简洁、可用的原始地址。而这一切,也正是“快缩短网址”(suo.run)所追求的核心价值——让链接回归本质,让跳转透明可控。