Guest User

Untitled

a guest
Dec 15th, 2022
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (() => {
  2.   "use strict";
  3.  
  4.   const originalJSONParse = JSON.parse;
  5.   JSON.parse = function (text, reviver) {
  6.     const obj = originalJSONParse.call(this, text, reviver);
  7.     removeJSONAds('JSON.parse', obj);
  8.     return obj;
  9.   };
  10.  
  11.   const originalResponsePrototypeJson = Response.prototype.json;
  12.   Response.prototype.json = function () {
  13.     return originalResponsePrototypeJson.call(this).then(obj => {
  14.       removeJSONAds('response.json', obj);
  15.       return obj;
  16.     });
  17.   };
  18.  
  19.   function removeJSONAds(source, obj) {
  20.     if (obj == null || typeof obj !== "object") {
  21.       return;
  22.     }
  23.     if (Array.isArray(obj)) {
  24.       for (const item of obj) {
  25.         if (item == null) {
  26.           continue;
  27.         }
  28.         if (item.playerResponse == null) {
  29.           continue;
  30.         }
  31.         if (item.playerResponse.adPlacements == null) {
  32.           continue;
  33.         }
  34.         console.log(source, '[].playerResponse.adPlacements', item.playerResponse.adPlacements);
  35.         delete item.playerResponse.adPlacements;
  36.       }
  37.       return;
  38.     }
  39.     if (obj.adPlacements != null) {
  40.       console.log(source, 'adPlacements', obj.adPlacements);
  41.       delete obj.adPlacements;
  42.     }
  43.     if (obj.playerResponse != null && obj.playerResponse.adPlacements != null) {
  44.       console.log(source, 'playerResponse.adPlacements', obj.playerResponse.adPlacements);
  45.       delete obj.playerResponse?.adPlacements;
  46.     }
  47.   }
  48.  
  49.   function defineProxyProperty(object, property, behaviour) {
  50.     const value = object[property];
  51.     const proxyHandler = getProxyHandler(behaviour);
  52.     let proxyValue = value == null ? value : new Proxy(value, proxyHandler);
  53.     Object.defineProperty(object, property, {
  54.       enumerable: true,
  55.  
  56.       get() {
  57.         return proxyValue;
  58.       },
  59.  
  60.       set(newValue) {
  61.         proxyValue = newValue == null ? newValue : new Proxy(newValue, proxyHandler);
  62.       }
  63.     });
  64.   }
  65.  
  66.   function getProxyHandler(behaviour) {
  67.     return {
  68.       get(target, property) {
  69.         if (property in behaviour) {
  70.           const propertyBehaviour = behaviour[property];
  71.           if (propertyBehaviour == null) {
  72.             // console.log('proxy', property, target[property]);
  73.             return propertyBehaviour;
  74.           }
  75.           const propertyValue = target[property];
  76.           if (propertyValue == null) {
  77.             return propertyValue;
  78.           }
  79.           return new Proxy(propertyValue, getProxyHandler(propertyBehaviour));
  80.         } else {
  81.           return target[property];
  82.         }
  83.       },
  84.  
  85.       has(target, property) {
  86.         if (property in behaviour) {
  87.           const propertyBehaviour = behaviour[property];
  88.           if (propertyBehaviour === undefined) {
  89.             return false;
  90.           }
  91.         }
  92.         return property in target;
  93.       }
  94.     };
  95.   }
  96.  
  97.   defineProxyProperty(window, "ytInitialPlayerResponse", { adPlacements: undefined });
  98. })();
  99.  
Advertisement
Add Comment
Please, Sign In to add comment