使用Python下载在线课程视频触发HTTP Error 403: Forbidden如何解决
解决方案
核心问题说明
- 代码存在笔误:下载目标为视频文件,但存储时硬编码了
.pdf后缀,会导致下载后的文件无法正常作为视频播放 HTTP Error 403: Forbidden是平台资源权限校验不通过导致,主要两个诱因:- 请求仅携带了User-Agent标识,未携带登录平台后获得的身份校验Cookie,柏林工业大学ISIS平台的课程视频仅对已登录的选课用户开放访问
- 缺失
Referer请求头,平台视频服务会校验请求是否来自ISIS站内的合法课程页面,无合法Referer会直接拦截访问
修复实现
推荐优先使用requests库替代原生urllib,请求配置更简洁,Cookie管理更方便。如果你已经通过Selenium完成了平台登录,可以直接从Selenium实例中导出有效Cookie加入请求,参考代码如下:
import requests def download_video(download_url, filename, selenium_driver): # 从Selenium中导出当前登录态的Cookie cookies = {cookie['name']: cookie['value'] for cookie in selenium_driver.get_cookies()} headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36', # 替换为你实际访问的课程详情页地址作为Referer 'Referer': 'https://isis.tu-berlin.de/' } # 发送带身份凭证的请求 response = requests.get(download_url, headers=headers, cookies=cookies, timeout=120) # 用with上下文管理器自动处理文件关闭,避免资源泄漏 with open(f"{filename}.mp4", 'wb') as f: f.write(response.content)
内容的提问来源于stack exchange,提问作者SIMONE ESPOSITO
相关产品推荐
相关产品推荐

