Python 实现 B 站充电视频下载工具
这个脚本主要用于演示如何通过 API 获取并下载 B 站的付费内容。运行前需要准备好有效的会员 Cookie,通常可以通过浏览器开发者工具中的 Network 面板找到。
核心逻辑
程序的核心在于构建正确的请求头以及处理 Cookie 验证。我们定义了一个类来封装这些操作,保持代码整洁。
初始化与请求头
在初始化阶段,我们需要从本地文件读取 Cookie 字符串,并将其注入到 HTTP 请求头中。这里特别要注意 User-Agent 的设置,模拟主流浏览器能降低被拦截的风险。
import requests
class ChargeVideoDownloader:
def __init__(self, cookie_file):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://www.bilibili.com/',
'Cookie': self._load_cookies(cookie_file)
}
Cookie 加载与验证
直接读取文件并不安全,最好先检查关键字段是否存在。B 站的关键标识包括 SESSDATA、bili_jct 和 DedeUserID。如果缺少这些,后续请求大概率会失败。
def _load_cookies(self, cookie_file):
"""从文件中加载 Cookies"""
with open(cookie_file, 'r', encoding='utf-8') as f:
cookies = f.read().strip()
return self._validate_cookie(cookies)
def _validate_cookie(self, cookie):
"""验证 Cookie 有效性"""
required_keys = ['SESSDATA', 'bili_jct', 'DedeUserID']
if not all(key in cookie key required_keys):
ValueError()
cookie

