Hi @InfinityLoop1308,
I am opening this issue as a public notebook for some YouTube SABR research I want to do in my free time.
I really enjoy reverse engineering and protocol research, and SABR looks like a very interesting topic for PipePipeExtractor. I want to spend some time trying to understand it properly, as much as possible from scratch, and document what I find here.
This is mainly for me too, to not get lost while experimenting :p
Related context:
What this issue is
This is not a normal bug report and not a request for a quick workaround.
I want to use this issue as a work log for:
- notes while reading YouTube player responses
- comparisons between different InnerTube clients
- SABR/UMP observations
- decoded fields
- failed experiments
- useful references
- possible implementation ideas for PipePipeExtractor
If something becomes solid enough later, I can split it into small PRs.
What I want to understand
My goal is to understand SABR as a real protocol, not only as a fallback problem.
Some things I want to investigate:
- how SABR metadata is exposed in player responses
- how different YouTube clients behave
- how SABR requests are built
- how UMP responses are structured
- which fields are required for real playback/download support later
- how this could fit cleanly into PipePipeExtractor
I also do not want to limit the research too early to only one known path like WEB or TVHTML5. I will read existing references, but I want to verify things myself and understand what is actually required.
First research target
The first thing I want to try is a small proof of understanding:
- fetch player data containing SABR information
- build a SABR request from that data
- send it to the SABR endpoint
- receive a UMP response
- decode the response enough to identify init metadata, media headers, and media bytes
This would only be extractor-side research at first. I do not want to rush this into PipePipeClient until the protocol side is understood better.
Non-goals for now
For now, this issue is not about:
- user support reports
- a quick workaround
- another fallback-only solution
- immediately adding client playback support
- immediately adding download support
Those can be separate topics later.
Possible future output
If this becomes solid enough, I can split it into small PRs later.
Possible areas:
- SABR metadata extraction
- UMP parser
- SABR protobuf models/builders
- SABR session/request state
- real response decoding tests or local harnesses
- experimental extractor API for SABR data
I will keep notes and progress here as I explore the protocol.
Hi @InfinityLoop1308,
I am opening this issue as a public notebook for some YouTube SABR research I want to do in my free time.
I really enjoy reverse engineering and protocol research, and SABR looks like a very interesting topic for PipePipeExtractor. I want to spend some time trying to understand it properly, as much as possible from scratch, and document what I find here.
This is mainly for me too, to not get lost while experimenting :p
Related context:
What this issue is
This is not a normal bug report and not a request for a quick workaround.
I want to use this issue as a work log for:
If something becomes solid enough later, I can split it into small PRs.
What I want to understand
My goal is to understand SABR as a real protocol, not only as a fallback problem.
Some things I want to investigate:
I also do not want to limit the research too early to only one known path like WEB or TVHTML5. I will read existing references, but I want to verify things myself and understand what is actually required.
First research target
The first thing I want to try is a small proof of understanding:
This would only be extractor-side research at first. I do not want to rush this into PipePipeClient until the protocol side is understood better.
Non-goals for now
For now, this issue is not about:
Those can be separate topics later.
Possible future output
If this becomes solid enough, I can split it into small PRs later.
Possible areas:
I will keep notes and progress here as I explore the protocol.