The ANDROID InnerTube player now returns 0 captionTracks (PoToken-gated), so the watch-page scrape is the real path — but it sent an Android *app* User-Agent, which makes YouTube serve a page WITHOUT ytInitialPlayerResponse, so captions came back empty. Result: 87% of a live run skipped as 'no transcript' despite the videos having captions. A desktop-browser UA returns the player JSON with captionTracks. Confirmed live: app-UA=0 tracks, browser-UA=1.