yt-dlp / yt-dlp

A feature-rich command-line audio/video downloader
https://discord.gg/H5MNcFW63r
The Unlicense
81.8k stars 6.38k forks source link

Pluto TV broken ad-free formats #6780

Open RedPenguin2 opened 1 year ago

RedPenguin2 commented 1 year ago

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

Checklist

Region

United States

Provide a description that is worded well enough to be understood

I have noticed that various Pluto URLs have randomly broken the "non-stitched" or "ad-free" formats that were able to be used before.

https://pluto.tv/en/on-demand/series/the-honeymooners-lost-episodes/ is the series that I began to notice this issue.

It will just keep repeating these two same lines for each video:

WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden WARNING: [PlutoTV] Unable to find ad-free formats

The resulting videos will have extra items in the video than just the show as a result

Provide verbose output that clearly demonstrates the problem

Complete Verbose Output

yt-dlp -FvU "https://pluto.tv/en/on-demand/series/the-honeymooners-lost-episodes"
[debug] Command-line config: ['-FvU', 'https://pluto.tv/en/on-demand/series/the-honeymooners-lost-episodes']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.03.04 [392389b7d] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2023-02-09-git-159b028df5-full_build-www.gyan.dev (setts), ffprobe 2023-02-09-git-159b028df5-full_build-www.gyan.dev, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1786 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version: stable@2023.03.04, Current version: stable@2023.03.04
Current Build Hash: 5590c57bd0433ed239a2deaaf92e2ad6f37fe50f53664c821575cafe106a9421
yt-dlp is up to date (stable@2023.03.04)
[PlutoTV] Extracting URL: https://pluto.tv/en/on-demand/series/the-honeymooners-lost-episodes
[PlutoTV] the-honeymooners-lost-episodes: Downloading JSON metadata
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 information
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 information
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f0d8: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: OK
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 information
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f03b: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 information
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 playlist
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 playlist
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 playlist
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 playlist
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 playlist
[PlutoTV] 5ff397e828abd1001a63efed: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 information
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f023: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 information
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f07b: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 information
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f085: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: OK
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 information
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f096: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: OK
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 information
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 playlist
[PlutoTV] 5ff397ea28abd1001a63f111: Downloading m3u8 information
WARNING: [PlutoTV] Failed to download m3u8 information: HTTP Error 403: Forbidden
WARNING: [PlutoTV] Unable to find ad-free formats
[PlutoTV] 5ff397e928abd1001a63f031: Downloading m3u8 information
[PlutoTV] 5ff397e928abd1001a63f031: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f031: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f031: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f031: Downloading m3u8 playlist
[PlutoTV] 5ff397e928abd1001a63f031: Downloading m3u8 playlist
RedPenguin2 commented 1 year ago

I didn't realize this closed issue until afterwards.....

https://github.com/yt-dlp/yt-dlp/issues/6639

bashonly commented 1 year ago

I think the other was closed for being incomplete. This issue is better-reported, and I can reproduce the problem

RedPenguin2 commented 1 year ago

This fix here does actually seem to work:

https://github.com/yt-dlp/yt-dlp/pull/6679/files?diff=unified&w=0#diff-73930e95f920b842e4d951b4be62158257819351b2929b332eec8f01f9da0115L117-R117

Simply asking for the m3u8 from the silo-hybrik.pluto.tv.s3.amazonaws.com instead of plutotv.net does seem to work every single time.

bashonly commented 1 year ago

This fix here does actually seem to work: Simply asking for the m3u8 from the silo-hybrik.pluto.tv.s3.amazonaws.com instead of plutotv.net does seem to work every single time.

Can you elaborate? I get the same results with the PR's patch as without

RedPenguin2 commented 1 year ago

Like the first episode for example:

yt-dlp --print-traffic "https://pluto.tv/it/on-demand/series/the-honeymooners-lost-episodes/episode/bread-1951-1-1"

When it gets to this part:

[PlutoTV] 5ff397ea28abd1001a63f0fe: Downloading m3u8 information send: b'GET /c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8 HTTP/1.1\r\nHost: siloh-fs.plutotv.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nAccept-Encoding: gzip, deflate, br\r\nConnection: close\r\n\r\n' reply: 'HTTP/1.1 403 OK\r\n'

If it instead makes that exact same request to silo-hybrik.pluto.tv.s3.amazonaws.com, like this:

"https://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8"

Strangely though, my yt-dlp has to make that URL, http only as https gets this:

yt-dlp -F "https://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8" [generic] Extracting URL: https://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/72...3415/hls/master.m3u8 [generic] master: Downloading webpage ERROR: [generic] None: Unable to download webpage: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'silo-hybrik.pluto.tv.s3.amazonaws.com'. (_ssl.c:1129)> (caused by URLError(SSLCertVerificationError(1, "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'silo-hybrik.pluto.tv.s3.amazonaws.com'. (_ssl.c:1129)")))

Other tools don't claim that though.

sascha224 commented 1 year ago

Can you elaborate? I get the same results with the PR's patch as without

Same here... the patch didn't change anything...

juni745 commented 1 year ago

Como o primeiro episódio, por exemplo:

yt-dlp --print-traffic " https://pluto.tv/it/on-demand/series/the-honeymooners-lost-episodes/episode/bread-1951-1-1 "

Quando chegar a esta parte:

[PlutoTV] 5ff397ea28abd1001a63f0fe: Baixando informações m3u8 enviar: b'GET /c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104143415/hls/master.m3u8 HTTP/1.1\ruto\nHost: siloh-floh.vAgent: siloh.vAgent: : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/92.0.4515.131 Safari/537.36\r\nAceitar: text/html,application/xhtml+xml,application/xml;q =0.9, /_ ;q=0.8\r\nAceitar-Idioma: en-us,pt;q=0.5\r\nSec-Fetch-Mode: navegar\r\nAceitar-Codificação: gzip, deflate, br\r\nConexão : fechar\r\n\r\n' resposta: 'HTTP/1.1 403 OK\r\n'

Se, em vez disso, fizer exatamente a mesma solicitação para silo-hybrik.pluto.tv.s3.amazonaws.com, assim:

" https://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8 "

Estranhamente, porém, meu yt-dlp tem que fazer esse URL, http apenas como https obtém isso:

yt-dlp -F " https://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8 " [genérico] URL de permissão: https:/ / silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/72...3415/hls/master.m3u8 [genérico] mestre: Download da página da web ERRO: [genérico] Nenhum: é possível fazer o download da página da Web: <erro de urlopen [SSL: CERTIFICATE_VERIFY_FAILED] falha na verificação do certificado: incompatibilidade de nome de host, o certificado não é válido para 'silo-hybrik.pluto.tv.s3.amazonaws. com'.(_ssl.c:1129)> (causado por URLError(SSLCertVerificationError(1, "[SSL: CERTIFICATE_VERIFY_FAILED] falha na verificação do certificado: incompatibilidade de nome de host, certificado inválido para 'silo-hybrik.pluto.tv.s3.amazonaws .com' . (_ssl.c:1129)")))

Outras ferramentas não afirmam isso.

a solicitacao pro silo-hybrik.pluto.tv.s3.amazonaws.com nao eh https, muda pra http que deve resolver o problema, assim:

http://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8

RedPenguin2 commented 1 year ago

Sorry for the delay.

So far, I can only get the video like this:

http://silo-hybrik.pluto.tv.s3.amazonaws.com/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/master.m3u8,

Just like the previous poster put.

The patch don't seem to really work but the changing of the URL to http://silo-hybrik.pluto.tv.s3.amazonaws.com, seems to be the only real fix.

Unless yt-dlp would try to grab the "best" m3u8 inside the m3u8.

Like many episodes will have hls_2400.m3u8, so you can do like this

https://siloh-fs.plutotv.net/c6009f_pluto/clip/5ff397e428abd1001a63ef59_Bread/720p/20210104_143415/hls/hls_2400.m3u8 instead of master.m3u8.

It seems that master.m3u8 is the only one that they will 403 on.

felisucoibi commented 1 year ago

any pr working?

jschwalbe commented 10 months ago

Also curious about a workaround. Any ideas?

vt-idiot commented 10 months ago

This might interest you all. It's hardly a suitable workaround, but it does work https://github.com/yt-dlp/yt-dlp/issues/6181#issuecomment-1774149417