Skip to content

YouTube SABR: from-scratch reverse-engineering notes and extractor research log #66

@Priveetee

Description

@Priveetee

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions