Greasy Fork

Advanced YouTube Age Restriction Bypass

Bypass YouTube age restrictions for test purposes only.

// ==UserScript==
// @name         Advanced YouTube Age Restriction Bypass
// @namespace    http://tampermonkey.net/
// @version      3.0
// @description  Bypass YouTube age restrictions for test purposes only.
// @author       Your Name
// @match        *://www.youtube.com/*
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  // Helper function to log debug messages
  function log(message) {
    console.log(`[YouTube Bypass]: ${message}`);
  }

  // Hook into YouTube's internal API requests
  (function interceptXHR() {
    const originalOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {
      if (url.includes('/youtubei/v1/player')) {
        log('Intercepted request to /youtubei/v1/player');
        // Modify the response to bypass age restrictions
        this.addEventListener('load', function() {
          const response = JSON.parse(this.responseText);
          if (response.playabilityStatus.status === 'restricted') {
            response.playabilityStatus.status = 'OK';
            log('Bypassed age restriction!');
          }
        });
      }
      return originalOpen.apply(this, arguments);
    };
  })();

  // MutationObserver to monitor dynamic page changes
  const observer = new MutationObserver(() => {
    if (document.querySelector('ytd-watch-flexy[is-restricted]')) {
      log('Detected restricted video player. Attempting bypass...');
      // Inject the override script after a short delay to ensure the player is fully loaded
      setTimeout(injectOverrideScript, 1000);
    }
  });

  observer.observe(document.body, { childList: true, subtree: true });

  // Function to inject an override script directly into the page
  function injectOverrideScript() {
    const script = document.createElement('script');
    script.innerHTML = `(function() {
      const originalPlayer = window.ytPlayerConfig;
      if (originalPlayer && originalPlayer.args) {
        originalPlayer.args.raw_player_response.playabilityStatus.status = 'OK';
        console.log('[YouTube Bypass]: Player configuration modified.');
      }
    })();`;
    document.body.appendChild(script);
  }
})();