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

非API方式用Python处理YouTube垃圾评论时POST请求遇400错误求助

解决YouTube举报评论POST请求400错误的问题

你的400错误是因为请求缺少必要的参数、请求体和正确的请求头,YouTube的内部youtubei接口对请求格式有严格要求,以下是具体解决步骤:

1. 捕获完整的请求参数(关键步骤)

手动在浏览器完成一次举报操作,打开开发者工具(F12)→ Network标签,筛选XHR请求,找到flag/get_form和flag/flag这两个POST请求,查看它们的:

  • Request Headers:复制所有带X-Youtube-前缀的头、Content-Type、X-CSRFToken等字段。
  • Payload(请求体):查看JSON格式的请求内容,里面包含videoId(视频ID)、commentId(评论ID,即URL里的lc参数)、reasonId(举报原因ID,比如垃圾评论对应特定ID)等核心字段。

2. 补充请求体和请求头

你的代码里只发送了空的POST请求,必须构造符合要求的JSON请求体,并带上正确的请求头。以下是修改后的示例代码:

from seleniumrequests import Chrome
from selenium.webdriver.support.ui import WebDriverWait
import pathlib
import json
from selenium import webdriver

# 目标视频和评论URL
URL = "https://www.youtube.com/watch?v=dvecqwfU6xw&lc=Ugxw_nsUNUor9AUEBGp4AaABAg.9fDfvkgiqtW9fDkE2r6Blm"
# 提取视频ID和评论ID
video_id = "dvecqwfU6xw"
comment_id = "Ugxw_nsUNUor9AUEBGp4AaABAg.9fDfvkgiqtW9fDkE2r6Blm"

options = webdriver.ChromeOptions()
user = pathlib.Path().home()
options.add_argument(f"user-data-dir={user}/AppData/Local/Google/Chrome/User Data/")
driver = Chrome('chromedriver.exe', chrome_options=options)
driver.get(URL)
wait = WebDriverWait(driver, 10)

# 获取CSRF Token(从Cookie中提取,名称可能是__Secure-3PAPISID,以实际捕获的为准)
csrf_token = None
for cookie in driver.get_cookies():
    if cookie['name'] == '__Secure-3PAPISID':
        csrf_token = cookie['value']
        break

# 构造请求头(值从浏览器实际请求头复制)
headers = {
    'Content-Type': 'application/json',
    'X-Youtube-Client-Name': '1',
    'X-Youtube-Client-Version': '2.20240520.01.00',
    'X-CSRFToken': csrf_token,
    'Origin': 'https://www.youtube.com',
    'Referer': URL
}

# 构造get_form的请求体(从浏览器Payload复制并调整参数)
get_form_payload = {
    "videoId": video_id,
    "commentId": comment_id,
    "context": {
        "client": {
            "clientName": "WEB",
            "clientVersion": "2.20240520.01.00"
        }
    }
}

# 先调用get_form获取必要的表单信息
resp = driver.request(
    'POST',
    'https://www.youtube.com/youtubei/v1/flag/get_form?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8&prettyPrint=false',
    headers=headers,
    data=json.dumps(get_form_payload)
)
print("get_form响应:", resp.status_code, resp.json())

# 构造flag的请求体(包含举报原因ID,从浏览器捕获的Payload复制)
flag_payload = {
    "videoId": video_id,
    "commentId": comment_id,
    "reasonId": "SPAM",  # 替换为实际的举报原因ID
    "context": {
        "client": {
            "clientName": "WEB",
            "clientVersion": "2.20240520.01.00"
        }
    }
}

# 发送举报请求
flag_resp = driver.request(
    'POST',
    'https://www.youtube.com/youtubei/v1/flag/flag?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8&prettyPrint=false',
    headers=headers,
    data=json.dumps(flag_payload)
)
print("flag响应:", flag_resp.status_code, flag_resp.json())

3. 注意事项

  • YouTube的内部API没有公开文档,参数和格式随时可能变更,必须以你实际捕获的请求信息为准。
  • 频繁自动化举报可能触发YouTube的反机制,导致账号封禁,请谨慎操作。
  • 这种方式本质是模拟浏览器请求,违反YouTube的服务条款,风险自行承担。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:05:11