Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (() => {
- "use strict";
- const originalJSONParse = JSON.parse;
- JSON.parse = function (text, reviver) {
- const obj = originalJSONParse.call(this, text, reviver);
- removeJSONAds('JSON.parse', obj);
- return obj;
- };
- const originalResponsePrototypeJson = Response.prototype.json;
- Response.prototype.json = function () {
- return originalResponsePrototypeJson.call(this).then(obj => {
- removeJSONAds('response.json', obj);
- return obj;
- });
- };
- function removeJSONAds(source, obj) {
- if (obj == null || typeof obj !== "object") {
- return;
- }
- if (Array.isArray(obj)) {
- for (const item of obj) {
- if (item == null) {
- continue;
- }
- if (item.playerResponse == null) {
- continue;
- }
- if (item.playerResponse.adPlacements == null) {
- continue;
- }
- console.log(source, '[].playerResponse.adPlacements', item.playerResponse.adPlacements);
- delete item.playerResponse.adPlacements;
- }
- return;
- }
- if (obj.adPlacements != null) {
- console.log(source, 'adPlacements', obj.adPlacements);
- delete obj.adPlacements;
- }
- if (obj.playerResponse != null && obj.playerResponse.adPlacements != null) {
- console.log(source, 'playerResponse.adPlacements', obj.playerResponse.adPlacements);
- delete obj.playerResponse?.adPlacements;
- }
- }
- function defineProxyProperty(object, property, behaviour) {
- const value = object[property];
- const proxyHandler = getProxyHandler(behaviour);
- let proxyValue = value == null ? value : new Proxy(value, proxyHandler);
- Object.defineProperty(object, property, {
- enumerable: true,
- get() {
- return proxyValue;
- },
- set(newValue) {
- proxyValue = newValue == null ? newValue : new Proxy(newValue, proxyHandler);
- }
- });
- }
- function getProxyHandler(behaviour) {
- return {
- get(target, property) {
- if (property in behaviour) {
- const propertyBehaviour = behaviour[property];
- if (propertyBehaviour == null) {
- // console.log('proxy', property, target[property]);
- return propertyBehaviour;
- }
- const propertyValue = target[property];
- if (propertyValue == null) {
- return propertyValue;
- }
- return new Proxy(propertyValue, getProxyHandler(propertyBehaviour));
- } else {
- return target[property];
- }
- },
- has(target, property) {
- if (property in behaviour) {
- const propertyBehaviour = behaviour[property];
- if (propertyBehaviour === undefined) {
- return false;
- }
- }
- return property in target;
- }
- };
- }
- defineProxyProperty(window, "ytInitialPlayerResponse", { adPlacements: undefined });
- })();
Advertisement
Add Comment
Please, Sign In to add comment