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

如何使用Python requests模块下载网站视频?解决URL访问返回404问题

问题原因和解决步骤

你遇到的直接访问视频URL返回404的问题,基本都是站点做了访问权限校验导致的,按下面的步骤排查处理即可:

1. 优先检查防盗链校验(最常见原因)

绝大多数站点会校验视频请求的Referer和User-Agent头,你直接在地址栏访问URL时,请求没有携带原页面的来源信息,就会被拦截。请求视频时需要和浏览器访问时的请求头完全对齐:

  • 从浏览器控制台网络面板复制访问原页面时的User-Agent值
  • 新增Referer字段,值填写视频所在原页面的完整URL
  • 可额外补充Accept、Origin字段和浏览器请求保持一致

示例代码:

import requests

headers = {
    "User-Agent": "你从浏览器复制的UA字符串",
    "Referer": "视频所在原页面的完整URL",
    "Accept": "video/*, */*"
}
video_url = "你提取到的视频URL"

resp = requests.get(video_url, headers=headers)
if resp.status_code == 200:
    with open("download.mp4", "wb") as f:
        f.write(resp.content)

2. 排查URL时效签名

如果补全请求头后还是返回404,你可以刷新原页面后重新提取一次视频URL,对比两次URL的差异:

  • 如果URL中存在sign、expire、t、timestamp这类字段,说明URL是临时生成的,带有有效时间限制
  • 这种场景下不能直接复用提前复制好的URL,需要每次爬取前先请求原页面,从页面源码或者关联接口中实时提取最新的视频URL

3. 检查Cookie校验

部分站点会把访问凭证存在Cookie中,请求视频时需要携带访问原页面时下发的Cookie,使用requests的Session对象即可自动维持Cookie,不需要手动复制:
示例代码:

import requests

sess = requests.Session()
origin_page_url = "视频所在原页面的URL"
# 先请求原页面,自动存储下发的Cookie
sess.get(origin_page_url, headers=headers)
# 用同一个Session实例请求视频
resp = sess.get(video_url, headers=headers)

通用兜底方案

如果以上方法都无效,你可以打开浏览器控制台的网络面板,找到视频的请求条目,右键选择「复制为cURL」,再将cURL命令转换成requests代码,就能1:1还原浏览器的请求逻辑,基本都能成功请求到视频内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:00