使用Python调用Cobalt API下载视频时遇链接识别错误问题
问题分析与解决方案
你的代码存在两个关键问题,导致服务器无法识别你提交的视频链接:
- 缺少JSON请求头:你用
json.dumps()生成了JSON格式的字符串,但通过data参数发送时,requests默认会以application/x-www-form-urlencoded格式传递数据。服务器没有收到Content-Type: application/json的头信息,无法正确解析你发送的JSON内容,因此认为你没有提供链接。 - 多余的URL编码:手动对YouTube链接做
urllib.parse.quote()编码完全没必要,JSON会自动处理字符串的格式转换,编码后的链接反而会让服务器无法识别为有效的视频地址。
修正后的代码(推荐写法)
import requests api_url = 'https://co.wuk.sh/api/json' youtube_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' # 使用requests的json参数,自动完成JSON序列化并设置正确请求头 response = requests.post(api_url, json={'url': youtube_url}) # 打印响应结果 print(response.text)
手动处理JSON的写法(仅作参考)
如果你坚持手动序列化JSON,必须显式设置请求头:
import requests import json api_url = 'https://co.wuk.sh/api/json' youtube_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' payload = json.dumps({'url': youtube_url}) headers = {'Content-Type': 'application/json'} response = requests.post(api_url, data=payload, headers=headers) print(response.text)
内容的提问来源于stack exchange,提问作者ninth-onion-crop
相关产品推荐
相关产品推荐

