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

如何用Python的request库借助Cookie创建及修改YouTube播放列表

使用Python通过Cookie操作YouTube播放列表

风险提示

  • 这种方式违反YouTube服务条款,可能导致账号封禁,仅作技术研究参考,请勿用于违规操作。
  • 需从已登录YouTube的浏览器中提取关键Cookie字段(如LOGIN_INFO、SAPISID、HSID等)。

核心实现步骤及代码示例

1. 提取并整理Cookie

从浏览器开发者工具(F12)的存储面板中,复制YouTube域名下的Cookie,整理为字典格式:

cookies = {
    "LOGIN_INFO": "你的LOGIN_INFO值",
    "SAPISID": "你的SAPISID值",
    "HSID": "你的HSID值",
    # 补充其他必要Cookie字段
}

2. 构造请求头

YouTube内部API需要特定授权头和客户端信息,其中Authorization需基于SAPISID生成:

import time
import hashlib

def generate_sapisid_auth(sapisid, origin):
    timestamp = str(int(time.time()))
    sapisid_hash = hashlib.sha1(f"{timestamp} {sapisid} {origin}".encode()).hexdigest()
    return f"SAPISIDHASH {timestamp}_{sapisid_hash}"

headers = {
    "Authorization": generate_sapisid_auth(cookies["SAPISID"], "https://www.youtube.com"),
    "X-Origin": "https://www.youtube.com",
    "X-Youtube-Client-Name": "1",
    "X-Youtube-Client-Version": "2.20240520.01.00",
    "Content-Type": "application/json"
}

3. 创建播放列表

向YouTube内部API端点发送POST请求:

import requests

create_payload = {
    "title": "自定义播放列表",
    "description": "通过Cookie创建的测试列表",
    "privacyStatus": "PRIVATE"  # 可选值:PUBLIC、UNLISTED、PRIVATE
}

response = requests.post(
    "https://www.youtube.com/youtubei/v1/playlist/create?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8",
    cookies=cookies,
    headers=headers,
    json={"context": {"client": {"clientName": "WEB", "clientVersion": "2.20240520.01.00"}}, **create_payload}
)

if response.status_code == 200:
    playlist_id = response.json()["playlistId"]
    print(f"播放列表创建成功,ID:{playlist_id}")
else:
    print(f"创建失败:{response.text}")

4. 修改播放列表(重命名/更新描述)

发送POST请求到更新端点:

update_payload = {
    "playlistId": playlist_id,
    "title": "修改后的播放列表标题",
    "description": "更新后的描述内容"
}

response = requests.post(
    "https://www.youtube.com/youtubei/v1/playlist/update?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8",
    cookies=cookies,
    headers=headers,
    json={"context": {"client": {"clientName": "WEB", "clientVersion": "2.20240520.01.00"}}, **update_payload}
)

if response.status_code == 200:
    print("播放列表修改成功")
else:
    print(f"修改失败:{response.text}")

关键注意事项

  • YouTube内部API无公开文档,端点、参数随时可能变更,上述代码可能随时失效。
  • 频繁操作或异常请求会触发反爬机制,导致账号受限甚至封禁。
  • 合规场景下优先使用官方YouTube Data API,稳定且安全。

内容的提问来源于stack exchange,提问作者Nông Minh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:35:13