使用 Python 批量校验 OpenList 直链可用性的实践

举报
yd_262080464 发表于 2026/10/22 10:16:03 2026/10/22
【摘要】 介绍用 Python 并发批量校验 OpenList 直链可用性的做法:只取响应头、控制并发、间隔重测区分瞬时限流与链接失效,并把结果落盘统计可用率。

背景

在自建媒体库场景中,我们会把网盘中的视频以直链形式对外提供。直链是否仍然有效,需要定期批量校验;如果逐个手工打开,效率很低。本文给出一个用 Python 批量校验 OpenList 直链可用性的实践方案。

思路

核心思路有三点:

  • 不下载整个文件,只取响应头,判断状态码是否为 200 或 302;
  • 用并发控制代替串行遍历,避免把带宽打满;
  • 把结果落盘,方便后续统计与告警。

关键代码

使用 requests 的 HEAD 请求,配合 Range 头避免拉取正文:

import requests, concurrent.futures

def check(url):
    try:
        r = requests.head(url, headers={"Range": "bytes=0-1"},
                          timeout=10, allow_redirects=True)
        return url, r.status_code
    except Exception as e:
        return url, repr(e)

with concurrent.futures.ThreadPoolExecutor(max_workers=8) as ex:
    for url, code in ex.map(check, urls):
        print(url, code)

注意事项

第一,部分网盘对高频访问有限流,建议在每个请求之间加 sleep 并控制并发度为 4 到 8;第二,HEAD 方法在某些 CDN 上不被支持,此时要退回 GET 并加 Range 头,只取前若干字节;第三,遇到 403 时要区分是链接过期还是触发了风控,可通过间隔重测来判定:间隔后恢复说明是瞬时限流,持续 403 才是链接失效。

结果统计

把每条链接的状态码写入 CSV,用 pandas 按状态码分组统计,就可以得到整体可用率。可用率低于阈值时,触发告警重新生成直链即可。

小结

整套方案不到五十行代码,关键在于控制并发、只取头部、间隔重测丢掉瞬时错误这三点。希望对你排查自建媒体库的失效链接有所帮助。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。