Advanced YouTube Age Restriction Bypass

Bypass YouTube age restrictions for test purposes only.

  1. // ==UserScript==
  2. // @name Advanced YouTube Age Restriction Bypass
  3. // @namespace http://tampermonkey.net/
  4. // @version 3.0
  5. // @description Bypass YouTube age restrictions for test purposes only.
  6. // @author Your Name
  7. // @match *://www.youtube.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. // Helper function to log debug messages
  15. function log(message) {
  16. console.log(`[YouTube Bypass]: ${message}`);
  17. }
  18.  
  19. // Hook into YouTube's internal API requests
  20. (function interceptXHR() {
  21. const originalOpen = XMLHttpRequest.prototype.open;
  22. XMLHttpRequest.prototype.open = function(method, url) {
  23. if (url.includes('/youtubei/v1/player')) {
  24. log('Intercepted request to /youtubei/v1/player');
  25. // Modify the response to bypass age restrictions
  26. this.addEventListener('load', function() {
  27. const response = JSON.parse(this.responseText);
  28. if (response.playabilityStatus.status === 'restricted') {
  29. response.playabilityStatus.status = 'OK';
  30. log('Bypassed age restriction!');
  31. }
  32. });
  33. }
  34. return originalOpen.apply(this, arguments);
  35. };
  36. })();
  37.  
  38. // MutationObserver to monitor dynamic page changes
  39. const observer = new MutationObserver(() => {
  40. if (document.querySelector('ytd-watch-flexy[is-restricted]')) {
  41. log('Detected restricted video player. Attempting bypass...');
  42. // Inject the override script after a short delay to ensure the player is fully loaded
  43. setTimeout(injectOverrideScript, 1000);
  44. }
  45. });
  46.  
  47. observer.observe(document.body, { childList: true, subtree: true });
  48.  
  49. // Function to inject an override script directly into the page
  50. function injectOverrideScript() {
  51. const script = document.createElement('script');
  52. script.innerHTML = `(function() {
  53. const originalPlayer = window.ytPlayerConfig;
  54. if (originalPlayer && originalPlayer.args) {
  55. originalPlayer.args.raw_player_response.playabilityStatus.status = 'OK';
  56. console.log('[YouTube Bypass]: Player configuration modified.');
  57. }
  58. })();`;
  59. document.body.appendChild(script);
  60. }
  61. })();