Copy/paste scripts
If you want to reproduce the monitoring + alert + optional autocapture setup, the scripts are published here:
youtube-pass-checks/tools/youtube_playability (GitLab)
Raw README: README.md
Example receipts (NOT-PASS)
Concrete example from a logged-out/incognito capture:
m.youtube.com shows “Video unavailable” (qq15at0yfYM) (screenshots + SHA-256)
Sometimes a video will briefly flip from LOGIN_REQUIRED to OK (or to another status) and then flip back. If you’re trying to prove a reproducible issue (or prove recovery), you need timestamped receipts that are strict enough to survive skepticism.
This page is a minimal, copy/paste toolkit for monitoring and capturing evidence. It is not a method to bypass YouTube restrictions or CAPTCHAs.
- Background explainer: YouTube bot-wall (v2)
- Engineer probe: playabilityStatus=LOGIN_REQUIRED (and alias)
- Checklist: things to try before declaring it “fixed”
- Receipts format: receipt bundles + soft-404 survival kit
- Must be logged out + fresh profile/private session
- Must test both domains: www and m
- Take two OS-level screenshots ≥ 15s apart with URL visible
- Playback time/progress must advance between screenshots
If any of the above is missing, treat it as “not proven” (even if it looks promising).
The most robust signal I’ve found is the video JSON containing a playabilityStatus object. This is a minimal example: replace VIDEO_ID.
VIDEO_ID='VIDEO_ID'
for BASE in 'https://www.youtube.com/watch?v=' 'https://m.youtube.com/watch?v='; do
URL="${BASE}${VIDEO_ID}"
NOW=$(date -u +%Y-%m-%dT%H:%M:%SZ)
BODY=$(curl -sS --max-time 20 -A 'playability-monitor/1.0' "$URL" || true)
STATUS=$(python3 - <<'PY'
import re,sys
s=sys.stdin.read()
m=re.search(r'"playabilityStatus"\s*:\s*\{[^}]*"status"\s*:\s*"([A-Z_]+)"', s)
print(m.group(1) if m else 'NO_MATCH')
PY
<<<"$BODY")
echo "$NOW $URL status=$STATUS bytes=${#BODY}"
done
Tip: log to a file and watch for any status that is not LOGIN_REQUIRED.
If your monitor detects a non-LOGIN_REQUIRED status, immediately capture strict playback evidence. The key is OS-level screenshots (not browser screenshots) so the URL bar + system clock are visible.
- Open in a fresh profile or private window (logged out)
- Start playback (space or k)
- Wait ≥ 15s
- Take second screenshot
I also keep a tiny “capture pair” script (prefers scrot) in a public repo of receipts; see below.
I publish strict PASS / NOT-PASS evidence here (screenshots + SHA256 lists), plus small helper scripts:
If GitLab Pages returns a soft-404 mask, use the raw fallback links (documented in the soft-404 kit).
Does “HTTP 200” mean playback works?
No. YouTube can return HTTP 200 while the page content indicates login is required. Always check playability status and/or real playback receipts.
Why test both www and m?
I’ve seen cases where one domain works and the other is gated. If you only test one, you can mistakenly declare recovery.
Why OS-level screenshots instead of browser screenshots?
OS-level captures make it easier to show you were logged out, show the URL bar, and avoid ambiguity about what was captured.