cdzjf 发表于 2024-10-19 10:58:10

怎么下载ts文件?

我从m3u8中获取的ts列表,拼接正常,直接点击链接用浏览器可以下载,但用py怎么下载都的文件都只有0个字节,状态都是403,这是哪里的问题,正常下载这些视频的代码都是啥呢

FishC 发表于 2024-10-19 10:58:20

出现403错误通常是因为访问权限问题,可能是缺少必要的请求头或者请求未被授权。针对您要下载 `.ts` 文件的情况,可以尝试以下方法:

1. **检查请求头信息**:某些网站可能需要特定的请求头(比如 `User-Agent`, `Referer` 等)来验证请求是合法的。确保在你的请求中包含这些必要的信息。

2. **使用Python的requests库**:
   一个简单的下载例子如下:

   import requests

   ts_url = "your_ts_url_here"
   headers = {
       "User-Agent": "your_user_agent_here",
       "Referer": "your_referer_url_here"
   }

   response = requests.get(ts_url, headers=headers)

   if response.status_code == 200:
       with open("output.ts", "wb") as f:
         f.write(response.content)
   else:
       print(f"Failed to download. Status code: {response.status_code}")

3. **确保权限和防护机制**:有些网站会通过 Cookies 或其他方式防止爬虫下载。使用浏览器开发者工具审查网络请求,可能需要复制 Cookies 或者其他头信息到 Python 的请求中。

4. **使用适当的下载工具**:有时候使用专门的工具更简单,比如 `ffmpeg`,可以下载并合并 m3u8 的内容。

   示例命令:

   ffmpeg -i "your_m3u8_url_here" -c copy output.mp4

确保在使用这些工具和代码时遵循相关的法律和网站的使用条款。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

cdzjf 发表于 2024-10-19 12:10:13

FishC 发表于 2024-10-19 10:58
出现403错误通常是因为访问权限问题,可能是缺少必要的请求头或者请求未被授权。针对您要下载 `.ts` 文件的 ...

你说的请求头的问题我也想过,但非常奇怪的是,我试着用fiddler里面的重发请求,我的请求头都是空的,照样可以成功,但就在py里面就不行

FishC 发表于 2024-10-19 12:10:21

cdzjf 发表于 2024-10-19 12:10
你说的请求头的问题我也想过,但非常奇怪的是,我试着 ...

如果在 Fiddler 中不需要特殊请求头就可以成功,但在 Python 中不行,可能的问题和解决方案有:

1. **请求类型**:确保你在 Python 中使用的请求方法(例如 `GET`)与 Fiddler 中成功请求的方法相同。

2. **网络环境**:检查是否有代理服务器、VPN 或特定网络环境影响了 Python 的执行。

3. **URL完整性**:确认在 Python 中使用的 URL 没有错误,多检查一下是否有不必要的空格或者编码问题。

4. **Session 维持**:某些网站需要维持 Session ID。在实际浏览器中请求会自动处理这个问题,但在 Python 中可能需要使用 `requests.Session()` 来维持:

   import requests
   
   ts_url = "your_ts_url_here"
   
   session = requests.Session()
   # 如果你有任何基本的、必要的请求头,设置在这个位置
   headers = {
       "User-Agent": "your_user_agent_here",
   }
   response = session.get(ts_url, headers=headers)
   
   if response.status_code == 200:
       with open("output.ts", "wb") as f:
         f.write(response.content)
   else:
       print(f"Failed to download. Status code: {response.status_code}")

5. **检查 IP 限制或节流机制**:有些网站可能对特定 IP 地址的请求进行限制。尝试使用代理来更换 IP。

6. **错误日志/输出**:检查 Python 中的错误日志,确认请求是否由于某种原因被截断或失败。

尝试这些方法,希望对解决问题有所帮助。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

isdkz 发表于 2024-10-19 17:20:53

请给出你的代码,帮你纠错

Stubborn 发表于 2024-10-19 18:59:02

一般来说就是重定向,和cookie,没有在请求头里
页: [1]
查看完整版本: 怎么下载ts文件?