鱼C论坛

 找回密码
 立即注册
查看: 103|回复: 5

[已解决]怎么下载ts文件?

[复制链接]
发表于 2024-10-19 10:58:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我从m3u8中获取的ts列表,拼接正常,直接点击链接用浏览器可以下载,但用py怎么下载都的文件都只有0个字节,状态都是403,这是哪里的问题,正常下载这些视频的代码都是啥呢
最佳答案
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你说的请求头的问题我也想过,但非常奇怪的是,我试着用fiddler里面的重发请求,我的请求头都是空的,照样可以成功,但就在py里面就不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-19 17:20:53 | 显示全部楼层
请给出你的代码,帮你纠错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-19 18:59:02 | 显示全部楼层
一般来说就是重定向,和cookie,没有在请求头里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表