Big Change Update

This commit is contained in:
yeongpin
2025-01-14 14:47:41 +08:00
parent 380ea0b81d
commit 19fe4c85f8
651 changed files with 366654 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

View File

@@ -0,0 +1,11 @@
IMPORTANT
Content of this folder cannot be accessed without the internal secret token
created for each request to any of the "web accessible resources".
Any fetch operation made without uBlock Origin's internal secret will result
in failure. This means that despite the content of the folder here declared as
"web accessible resources", it still cannot be seen by the outside world.
Only uBlock Origin knows the secret token at runtime and hence only
uBlock Origin can access the content of this folder.

View File

@@ -0,0 +1,70 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
if ( amznads ) {
return;
}
var w = window;
var noopfn = function() {
;
}.bind();
var amznads = {
appendScriptTag: noopfn,
appendTargetingToAdServerUrl: noopfn,
appendTargetingToQueryString: noopfn,
clearTargetingFromGPTAsync: noopfn,
doAllTasks: noopfn,
doGetAdsAsync: noopfn,
doTask: noopfn,
detectIframeAndGetURL: noopfn,
getAds: noopfn,
getAdsAsync: noopfn,
getAdForSlot: noopfn,
getAdsCallback: noopfn,
getDisplayAds: noopfn,
getDisplayAdsAsync: noopfn,
getDisplayAdsCallback: noopfn,
getKeys: noopfn,
getReferrerURL: noopfn,
getScriptSource: noopfn,
getTargeting: noopfn,
getTokens: noopfn,
getValidMilliseconds: noopfn,
getVideoAds: noopfn,
getVideoAdsAsync: noopfn,
getVideoAdsCallback: noopfn,
handleCallBack: noopfn,
hasAds: noopfn,
renderAd: noopfn,
saveAds: noopfn,
setTargeting: noopfn,
setTargetingForGPTAsync: noopfn,
setTargetingForGPTSync: noopfn,
tryGetAdsAsync: noopfn,
updateAds: noopfn
};
w.amznads = amznads;
w.amzn_ads = w.amzn_ads || noopfn;
w.aax_write = w.aax_write || noopfn;
w.aax_render_ad = w.aax_render_ad || noopfn;
})();

View File

@@ -0,0 +1,62 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// https://www.reddit.com/r/uBlockOrigin/comments/ghjqph/
// https://github.com/NanoMeow/QuickReports/issues/3717
// https://www.reddit.com/r/uBlockOrigin/comments/qyx7en/
// https://searchfox.org/mozilla-central/source/browser/extensions/webcompat/shims/apstag.js
// Import queue-related initialization code.
(function() {
'use strict';
const w = window;
const noopfn = function() {
; // jshint ignore:line
}.bind();
const _Q = w.apstag && w.apstag._Q || [];
const apstag = {
_Q,
fetchBids: function(a, b) {
if ( typeof b === 'function' ) {
b([]);
}
},
init: noopfn,
setDisplayBids: noopfn,
targetingKeys: noopfn,
};
w.apstag = apstag;
_Q.push = function(prefix, args) {
try {
switch (prefix) {
case 'f':
apstag.fetchBids(...args);
break;
}
} catch (e) {
console.trace(e);
}
};
for ( const cmd of _Q ) {
_Q.push(cmd);
}
})();

View File

@@ -0,0 +1,34 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const head = document.head;
if ( !head ) { return; }
const style = document.createElement('style');
style.textContent = [
'body {',
' animation: none !important;',
' overflow: unset !important;',
'}'
].join('\n');
head.appendChild(style);
})();

View File

@@ -0,0 +1,33 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const noopfn = function() {
};
window.pSUPERFLY = {
activity: noopfn,
virtualPage: noopfn
};
for ( const hider of document.querySelectorAll('style[id^=chartbeat-flicker-control]') ) {
hider.remove();
}
})();

View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html id="ublock0-clicktoload">
<head>
<meta charset="utf-8">
<title>uBlock Origin Click-to-Load</title>
<link rel="stylesheet" href="../css/themes/default.css">
<link rel="stylesheet" href="../css/common.css">
<link rel="stylesheet" href="../css/fa-icons.css">
<link rel="stylesheet" href="../css/click2load.css">
</head>
<body>
<span class="logo"><img src="../img/ublock.svg"></span>
<span id="clickToLoad" data-i18n="clickToLoad"></span>
<div id="frameURL"><span></span>&nbsp;<a class="fa-icon" href="" rel="noreferrer noopener" target="_blank">external-link</a></div>
<script src="../js/fa-icons.js" type="module"></script>
<script src="../js/vapi.js"></script>
<script src="../js/vapi-common.js"></script>
<script src="../js/vapi-client.js"></script>
<script src="../js/theme.js" type="module"></script>
<script src="../js/i18n.js" type="module"></script>
<script src="../js/click2load.js" type="module"></script>
</body>
</html>

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html id="ublock0-inspector">
<head>
<meta charset="utf-8">
<meta name="color-scheme" content="light dark">
<title>uBlock Origin Inspector</title>
<link rel="stylesheet" href="../css/dom-inspector.css">
</head>
<body>
<svg>
<path d></path>
<path d></path>
<path d></path>
<path d></path>
</svg>
<script src="../js/vapi.js"></script>
<script src="../js/vapi-common.js"></script>
<script src="../js/vapi-client.js"></script>
<script src="../js/dom-inspector.js" type="module"></script>
</body>
</html>

View File

@@ -0,0 +1 @@
window.google_ad_status = 1;

View File

@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html id="ublock0-epicker">
<head>
<meta charset="utf-8">
<meta name="color-scheme" content="light dark">
<title>uBlock Origin Element Picker</title>
<link rel="stylesheet" href="../lib/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="../lib/codemirror/addon/hint/show-hint.css">
<link rel="stylesheet" href="../css/themes/default.css">
<link rel="stylesheet" href="../css/common.css">
<link rel="stylesheet" href="../css/epicker-ui.css">
<link rel="stylesheet" href="../css/codemirror.css">
</head>
<body>
<aside style="right: 2px; bottom: 2px;">
<div id="windowbar"><div id="minimize"><svg viewBox="0 0 64 64"><path d="M 16,48 H 48" /><rect x="16" y="16" height="32" width="32" /></div><div id="move"></div><div id="quit" data-i18n-title="pickerQuit"><svg viewBox="0 0 64 64"><path d="M16 16L48 48M16 48L48 16" /></div></div>
<section>
<div>
<div class="codeMirrorContainer codeMirrorBreakAll cm-theme-override"></div>
<div class="resultsetWidgets">
<span id="resultsetModifiers">
<span id="resultsetDepth" class="resultsetModifier">
<span><span></span><span></span><span></span></span>
<input type="range" min="0" max="7" value="7">
</span>
<span id="resultsetSpecificity" class="resultsetModifier">
<span><span></span><span></span><span></span></span>
<input type="range" min="0" max="7" value="6">
</span>
</span>
<span id="resultsetCount"></span>
</div>
</div>
<div id="toolbar">
<div>
<button id="pick" type="button" data-i18n="pickerPick">_<span class="hover"></span></button>
<button id="preview" type="button" data-i18n="pickerPreview">_<span class="hover"></span></button>
</div>
<button id="create" type="button" class="preferred" disabled data-i18n="pickerCreate">_<span class="hover"></span></button>
</div>
</section>
<ul id="candidateFilters">
<li id="netFilters">
<span data-i18n="pickerNetFilters"></span>
<ul lang="en" class="changeFilter"></ul>
</li>
<li id="cosmeticFilters" data-specificity="3">
<span data-i18n="pickerCosmeticFilters"></span>
<ul lang="en" class="changeFilter"></ul>
</li>
</ul>
</aside>
<svg id="sea"><path d></path><path d></path></svg>
<script src="../lib/codemirror/lib/codemirror.js"></script>
<script src="../lib/codemirror/addon/edit/closebrackets.js"></script>
<script src="../lib/codemirror/addon/edit/matchbrackets.js"></script>
<script src="../lib/codemirror/addon/hint/show-hint.js"></script>
<script src="../lib/hsluv/hsluv-0.1.0.min.js"></script>
<script src="../js/vapi.js"></script>
<script src="../js/vapi-common.js"></script>
<script src="../js/vapi-client.js"></script>
<script src="../js/theme.js" type="module"></script>
<script src="../js/i18n.js" type="module"></script>
<script src="../js/epicker-ui.js" type="module"></script>
</body>
</html>

View File

@@ -0,0 +1,55 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2014-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// Reference:
// https://github.com/fingerprintjs/fingerprintjs/tree/v2
(function() {
'use strict';
const hex32 = len => {
return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)
.toString(16)
.slice(-len)
.padStart(len, '0');
};
const browserId = `${hex32(8)}${hex32(8)}${hex32(8)}${hex32(8)}`;
const fp2 = function(){};
fp2.get = function(opts, cb) {
if ( !cb ) { cb = opts; }
setTimeout(( ) => { cb([]); }, 1);
};
fp2.getPromise = function() {
return Promise.resolve([]);
};
fp2.getV18 = function() {
return browserId;
};
fp2.x64hash128 = function() {
return browserId;
};
fp2.prototype = {
get: function(opts, cb) {
if ( !cb ) { cb = opts; }
setTimeout(( ) => { cb(browserId, []); }, 1);
},
};
self.Fingerprint2 = fp2;
})();

View File

@@ -0,0 +1,45 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2022-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const visitorId = (( ) => {
let id = '';
for ( let i = 0; i < 8; i++ ) {
id += (Math.random() * 0x10000 + 0x1000 | 0).toString(16).slice(-4);
}
return id;
})();
const FingerprintJS = class {
static hashComponents() {
return visitorId;
}
static load() {
return Promise.resolve(new FingerprintJS());
}
get() {
return Promise.resolve({
visitorId,
});
}
};
window.FingerprintJS = FingerprintJS;
})();

View File

@@ -0,0 +1,110 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
// https://developers.google.com/analytics/devguides/collection/analyticsjs/
const noopfn = function() {
};
//
const Tracker = function() {
};
const p = Tracker.prototype;
p.get = noopfn;
p.set = noopfn;
p.send = noopfn;
//
const w = window;
const gaName = w.GoogleAnalyticsObject || 'ga';
const gaQueue = w[gaName];
// https://github.com/uBlockOrigin/uAssets/pull/4115
const ga = function() {
const len = arguments.length;
if ( len === 0 ) { return; }
const args = Array.from(arguments);
let fn;
let a = args[len-1];
if ( a instanceof Object && a.hitCallback instanceof Function ) {
fn = a.hitCallback;
} else if ( a instanceof Function ) {
fn = ( ) => { a(ga.create()); };
} else {
const pos = args.indexOf('hitCallback');
if ( pos !== -1 && args[pos+1] instanceof Function ) {
fn = args[pos+1];
}
}
if ( fn instanceof Function === false ) { return; }
try {
fn();
} catch (ex) {
}
};
ga.create = function() {
return new Tracker();
};
ga.getByName = function() {
return new Tracker();
};
ga.getAll = function() {
return [new Tracker()];
};
ga.remove = noopfn;
// https://github.com/uBlockOrigin/uAssets/issues/2107
ga.loaded = true;
w[gaName] = ga;
// https://github.com/gorhill/uBlock/issues/3075
const dl = w.dataLayer;
if ( dl instanceof Object ) {
if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
dl.hide.end();
dl.hide.end = ()=>{};
}
if ( typeof dl.push === 'function' ) {
const doCallback = function(item) {
if ( item instanceof Object === false ) { return; }
if ( typeof item.eventCallback !== 'function' ) { return; }
setTimeout(item.eventCallback, 1);
item.eventCallback = ()=>{};
};
dl.push = new Proxy(dl.push, {
apply: function(target, thisArg, args) {
doCallback(args[0]);
return Reflect.apply(target, thisArg, args);
}
});
if ( Array.isArray(dl) ) {
const q = dl.slice();
for ( const item of q ) {
doCallback(item);
}
}
}
}
// empty ga queue
if ( gaQueue instanceof Function && Array.isArray(gaQueue.q) ) {
const q = gaQueue.q.slice();
gaQueue.q.length = 0;
for ( const entry of q ) {
ga(...entry);
}
}
})();

View File

@@ -0,0 +1,36 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const noopfn = function() {
};
window.cxApi = {
chooseVariation: function() {
return 0;
},
getChosenVariation: noopfn,
setAllowHash: noopfn,
setChosenVariation: noopfn,
setCookiePath: noopfn,
setDomainName: noopfn
};
})();

View File

@@ -0,0 +1,130 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const noopfn = function() {
};
//
const Gaq = function() {
};
Gaq.prototype.Na = noopfn;
Gaq.prototype.O = noopfn;
Gaq.prototype.Sa = noopfn;
Gaq.prototype.Ta = noopfn;
Gaq.prototype.Va = noopfn;
Gaq.prototype._createAsyncTracker = noopfn;
Gaq.prototype._getAsyncTracker = noopfn;
Gaq.prototype._getPlugin = noopfn;
Gaq.prototype.push = function(a) {
if ( typeof a === 'function' ) {
a(); return;
}
if ( Array.isArray(a) === false ) { return; }
// https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link
// https://github.com/uBlockOrigin/uBlock-issues/issues/1807
if (
typeof a[0] === 'string' &&
/(^|\.)_link$/.test(a[0]) &&
typeof a[1] === 'string'
) {
try {
window.location.assign(a[1]);
} catch(ex) {
}
}
// https://github.com/gorhill/uBlock/issues/2162
if ( a[0] === '_set' && a[1] === 'hitCallback' && typeof a[2] === 'function' ) {
a[2]();
}
};
//
const tracker = (function() {
const out = {};
const api = [
'_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic',
'_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic',
'_cookiePathCopy _deleteCustomVar _getName _setAccount',
'_getAccount _getClientInfo _getDetectFlash _getDetectTitle',
'_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion',
'_getVisitorCustomVar _initData _linkByPost',
'_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey',
'_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey',
'_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo',
'_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar',
'_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath',
'_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode',
'_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout',
'_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime',
'_trackPageview _trackSocial _trackTiming _trackTrans',
'_visitCode'
].join(' ').split(/\s+/);
for ( const method of api ) {
out[method] = noopfn;
}
out._getLinkerUrl = function(a) {
return a;
};
// https://github.com/AdguardTeam/Scriptlets/issues/154
out._link = function(a) {
if ( typeof a !== 'string' ) { return; }
try {
window.location.assign(a);
} catch(ex) {
}
};
return out;
})();
//
const Gat = function() {
};
Gat.prototype._anonymizeIP = noopfn;
Gat.prototype._createTracker = noopfn;
Gat.prototype._forceSSL = noopfn;
Gat.prototype._getPlugin = noopfn;
Gat.prototype._getTracker = function() {
return tracker;
};
Gat.prototype._getTrackerByName = function() {
return tracker;
};
Gat.prototype._getTrackers = noopfn;
Gat.prototype.aa = noopfn;
Gat.prototype.ab = noopfn;
Gat.prototype.hb = noopfn;
Gat.prototype.la = noopfn;
Gat.prototype.oa = noopfn;
Gat.prototype.pa = noopfn;
Gat.prototype.u = noopfn;
const gat = new Gat();
window._gat = gat;
//
const gaq = new Gaq();
(function() {
const aa = window._gaq || [];
if ( Array.isArray(aa) ) {
while ( aa[0] ) {
gaq.push(aa.shift());
}
}
})();
window._gaq = gaq.qf = gaq;
})();

View File

@@ -0,0 +1,28 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
window._gaq = window._gaq || {
push: function() {
}
};
})();

View File

@@ -0,0 +1,855 @@
/**
*
* Source below is based on Mozilla source code:
* https://searchfox.org/mozilla-central/rev/d317e93d9a59c9e4c06ada85fbff9f6a1ceaaad1/browser/extensions/webcompat/shims/google-ima.js
*
* Modifications to the original code below this comment:
* - Avoid JS syntax not supported by older browser versions
* - Add missing shim event
* - Modified to avoid jshint warnings as per uBO's config
* - Added `OmidVerificationVendor` to `ima`
* - Have `AdError.getInnerError()` return `null`
* - Have `AdDisplayContainer` constructor add DIV element to container
* - Added missing event dispatcher functionality
* - Corrected return type of `Ad.getUniversalAdIds()`
* - Corrected typo in `UniversalAdIdInfo.getAdIdValue()` method name
* - Corrected dispatch of LOAD event when preloading is enabled
* - Corrected dispatch of CONTENT_PAUSE/RESUME_REQUESTED events
*
* Related issue:
* - https://github.com/uBlockOrigin/uBlock-issues/issues/2158
*
**/
'use strict';
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* Bug 1713690 - Shim Google Interactive Media Ads ima3.js
*
* Many sites use ima3.js for ad bidding and placement, often in conjunction
* with Google Publisher Tags, Prebid.js and/or other scripts. This shim
* provides a stubbed-out version of the API which helps work around related
* site breakage, such as black bxoes where videos ought to be placed.
*/
if (!window.google || !window.google.ima || !window.google.ima.VERSION) {
const VERSION = "3.517.2";
const CheckCanAutoplay = (function() {
// Sourced from: https://searchfox.org/mozilla-central/source/dom/media/gtest/negative_duration.mp4
const TEST_VIDEO = new Blob(
[
new Uint32Array([
469762048,
1887007846,
1752392036,
0,
913273705,
1717987696,
828601953,
-1878917120,
1987014509,
1811939328,
1684567661,
0,
0,
0,
-402456576,
0,
256,
1,
0,
0,
256,
0,
0,
0,
256,
0,
0,
0,
64,
0,
0,
0,
0,
0,
0,
33554432,
-201261056,
1801548404,
1744830464,
1684564852,
251658241,
0,
0,
0,
0,
16777216,
0,
-1,
-1,
0,
0,
0,
0,
256,
0,
0,
0,
256,
0,
0,
0,
64,
5,
53250,
-2080309248,
1634296941,
738197504,
1684563053,
1,
0,
0,
0,
0,
-2137614336,
-1,
-1,
50261,
754974720,
1919706216,
0,
0,
1701079414,
0,
0,
0,
1701079382,
1851869295,
1919249508,
16777216,
1852402979,
102,
1752004116,
100,
1,
0,
0,
1852400676,
102,
1701995548,
102,
0,
1,
1819440396,
32,
1,
1651799011,
108,
1937011607,
100,
0,
1,
1668702599,
49,
0,
1,
0,
0,
0,
33555712,
4718800,
4718592,
0,
65536,
0,
0,
0,
0,
0,
0,
0,
0,
16776984,
1630601216,
21193590,
-14745500,
1729626337,
-1407254428,
89161945,
1049019,
9453056,
-251611125,
27269507,
-379058688,
-1329024392,
268435456,
1937011827,
0,
0,
268435456,
1668510835,
0,
0,
335544320,
2054386803,
0,
0,
0,
268435456,
1868788851,
0,
0,
671088640,
2019915373,
536870912,
2019914356,
0,
16777216,
16777216,
0,
0,
0,
]),
],
{ type: "video/mp4" }
);
let testVideo;
return function() {
if (!testVideo) {
testVideo = document.createElement("video");
testVideo.style =
"position:absolute; width:0; height:0; left:0; right:0; z-index:-1; border:0";
testVideo.setAttribute("muted", "muted");
testVideo.setAttribute("playsinline", "playsinline");
testVideo.src = URL.createObjectURL(TEST_VIDEO);
document.body.appendChild(testVideo);
}
return testVideo.play();
};
})();
const ima = {};
class AdDisplayContainer {
constructor(containerElement) {
const divElement = document.createElement("div");
divElement.style.setProperty("display", "none", "important");
divElement.style.setProperty("visibility", "collapse", "important");
containerElement.appendChild(divElement);
}
destroy() {}
initialize() {}
}
class ImaSdkSettings {
constructor() {
this.c = true;
this.f = {};
this.i = false;
this.l = "";
this.p = "";
this.r = 0;
this.t = "";
this.v = "";
}
getCompanionBackfill() {}
getDisableCustomPlaybackForIOS10Plus() {
return this.i;
}
getFeatureFlags() {
return this.f;
}
getLocale() {
return this.l;
}
getNumRedirects() {
return this.r;
}
getPlayerType() {
return this.t;
}
getPlayerVersion() {
return this.v;
}
getPpid() {
return this.p;
}
isCookiesEnabled() {
return this.c;
}
setAutoPlayAdBreaks() {}
setCompanionBackfill() {}
setCookiesEnabled(c) {
this.c = !!c;
}
setDisableCustomPlaybackForIOS10Plus(i) {
this.i = !!i;
}
setFeatureFlags(f) {
this.f = f;
}
setLocale(l) {
this.l = l;
}
setNumRedirects(r) {
this.r = r;
}
setPlayerType(t) {
this.t = t;
}
setPlayerVersion(v) {
this.v = v;
}
setPpid(p) {
this.p = p;
}
setSessionId(/*s*/) {}
setVpaidAllowed(/*a*/) {}
setVpaidMode(/*m*/) {}
// https://github.com/uBlockOrigin/uBlock-issues/issues/2265#issuecomment-1637094149
getDisableFlashAds() {
}
setDisableFlashAds() {
}
}
ImaSdkSettings.CompanionBackfillMode = {
ALWAYS: "always",
ON_MASTER_AD: "on_master_ad",
};
ImaSdkSettings.VpaidMode = {
DISABLED: 0,
ENABLED: 1,
INSECURE: 2,
};
class EventHandler {
constructor() {
this.listeners = new Map();
}
_dispatch(e) {
let listeners = this.listeners.get(e.type);
listeners = listeners ? Array.from(listeners.values()) : [];
for (const listener of listeners) {
try {
listener(e);
} catch (r) {
console.error(r);
}
}
}
addEventListener(types, c, options, context) {
if (!Array.isArray(types)) {
types = [types];
}
for (const t of types) {
if (!this.listeners.has(t)) {
this.listeners.set(t, new Map());
}
this.listeners.get(t).set(c, c.bind(context || this));
}
}
removeEventListener(types, c) {
if (!Array.isArray(types)) {
types = [types];
}
for (const t of types) {
const typeSet = this.listeners.get(t);
if (typeSet) {
typeSet.delete(c);
}
}
}
}
class AdsLoader extends EventHandler {
constructor() {
super();
this.settings = new ImaSdkSettings();
}
contentComplete() {}
destroy() {}
getSettings() {
return this.settings;
}
getVersion() {
return VERSION;
}
requestAds(/*r, c*/) {
// If autoplay is disabled and the page is trying to autoplay a tracking
// ad, then IMA fails with an error, and the page is expected to request
// ads again later when the user clicks to play.
CheckCanAutoplay().then(
() => {
const { ADS_MANAGER_LOADED } = AdsManagerLoadedEvent.Type;
this._dispatch(new ima.AdsManagerLoadedEvent(ADS_MANAGER_LOADED));
},
() => {
const e = new ima.AdError(
"adPlayError",
1205,
1205,
"The browser prevented playback initiated without user interaction."
);
this._dispatch(new ima.AdErrorEvent(e));
}
);
}
}
class AdsManager extends EventHandler {
constructor() {
super();
this.volume = 1;
this._enablePreloading = false;
}
collapse() {}
configureAdsManager() {}
destroy() {}
discardAdBreak() {}
expand() {}
focus() {}
getAdSkippableState() {
return false;
}
getCuePoints() {
return [0];
}
getCurrentAd() {
return currentAd;
}
getCurrentAdCuePoints() {
return [];
}
getRemainingTime() {
return 0;
}
getVolume() {
return this.volume;
}
init(/*w, h, m, e*/) {
if (this._enablePreloading) {
this._dispatch(new ima.AdEvent(AdEvent.Type.LOADED));
}
}
isCustomClickTrackingUsed() {
return false;
}
isCustomPlaybackUsed() {
return false;
}
pause() {}
requestNextAdBreak() {}
resize(/*w, h, m*/) {}
resume() {}
setVolume(v) {
this.volume = v;
}
skip() {}
start() {
requestAnimationFrame(() => {
for (const type of [
AdEvent.Type.LOADED,
AdEvent.Type.STARTED,
AdEvent.Type.CONTENT_PAUSE_REQUESTED,
AdEvent.Type.AD_BUFFERING,
AdEvent.Type.FIRST_QUARTILE,
AdEvent.Type.MIDPOINT,
AdEvent.Type.THIRD_QUARTILE,
AdEvent.Type.COMPLETE,
AdEvent.Type.ALL_ADS_COMPLETED,
AdEvent.Type.CONTENT_RESUME_REQUESTED,
]) {
try {
this._dispatch(new ima.AdEvent(type));
} catch (e) {
console.error(e);
}
}
});
}
stop() {}
updateAdsRenderingSettings(/*s*/) {}
}
class AdsRenderingSettings {}
class AdsRequest {
setAdWillAutoPlay() {}
setAdWillPlayMuted() {}
setContinuousPlayback() {}
}
class AdPodInfo {
getAdPosition() {
return 1;
}
getIsBumper() {
return false;
}
getMaxDuration() {
return -1;
}
getPodIndex() {
return 1;
}
getTimeOffset() {
return 0;
}
getTotalAds() {
return 1;
}
}
class Ad {
constructor() {
this._pi = new AdPodInfo();
}
getAdId() {
return "";
}
getAdPodInfo() {
return this._pi;
}
getAdSystem() {
return "";
}
getAdvertiserName() {
return "";
}
getApiFramework() {
return null;
}
getCompanionAds() {
return [];
}
getContentType() {
return "";
}
getCreativeAdId() {
return "";
}
getCreativeId() {
return "";
}
getDealId() {
return "";
}
getDescription() {
return "";
}
getDuration() {
return 8.5;
}
getHeight() {
return 0;
}
getMediaUrl() {
return null;
}
getMinSuggestedDuration() {
return -2;
}
getSkipTimeOffset() {
return -1;
}
getSurveyUrl() {
return null;
}
getTitle() {
return "";
}
getTraffickingParameters() {
return {};
}
getTraffickingParametersString() {
return "";
}
getUiElements() {
return [""];
}
getUniversalAdIdRegistry() {
return "unknown";
}
getUniversalAdIds() {
return [new UniversalAdIdInfo()];
}
getUniversalAdIdValue() {
return "unknown";
}
getVastMediaBitrate() {
return 0;
}
getVastMediaHeight() {
return 0;
}
getVastMediaWidth() {
return 0;
}
getWidth() {
return 0;
}
getWrapperAdIds() {
return [""];
}
getWrapperAdSystems() {
return [""];
}
getWrapperCreativeIds() {
return [""];
}
isLinear() {
return true;
}
isSkippable() {
return true;
}
}
class CompanionAd {
getAdSlotId() {
return "";
}
getContent() {
return "";
}
getContentType() {
return "";
}
getHeight() {
return 1;
}
getWidth() {
return 1;
}
}
class AdError {
constructor(type, code, vast, message) {
this.errorCode = code;
this.message = message;
this.type = type;
this.vastErrorCode = vast;
}
getErrorCode() {
return this.errorCode;
}
getInnerError() {
return null;
}
getMessage() {
return this.message;
}
getType() {
return this.type;
}
getVastErrorCode() {
return this.vastErrorCode;
}
toString() {
return `AdError ${this.errorCode}: ${this.message}`;
}
}
AdError.ErrorCode = {};
AdError.Type = {};
const isEngadget = () => {
try {
for (const ctx of Object.values(window.vidible._getContexts())) {
const player = ctx.getPlayer();
if (!player) { continue;}
const div = player.div;
if (!div) { continue; }
if (div.innerHTML.includes("www.engadget.com")) {
return true;
}
}
} catch (_) {}
return false;
};
const currentAd = isEngadget() ? undefined : new Ad();
class AdEvent {
constructor(type) {
this.type = type;
}
getAd() {
return currentAd;
}
getAdData() {
return {};
}
}
AdEvent.Type = {
AD_BREAK_READY: "adBreakReady",
AD_BUFFERING: "adBuffering",
AD_CAN_PLAY: "adCanPlay",
AD_METADATA: "adMetadata",
AD_PROGRESS: "adProgress",
ALL_ADS_COMPLETED: "allAdsCompleted",
CLICK: "click",
COMPLETE: "complete",
CONTENT_PAUSE_REQUESTED: "contentPauseRequested",
CONTENT_RESUME_REQUESTED: "contentResumeRequested",
DURATION_CHANGE: "durationChange",
EXPANDED_CHANGED: "expandedChanged",
FIRST_QUARTILE: "firstQuartile",
IMPRESSION: "impression",
INTERACTION: "interaction",
LINEAR_CHANGE: "linearChange",
LINEAR_CHANGED: "linearChanged",
LOADED: "loaded",
LOG: "log",
MIDPOINT: "midpoint",
PAUSED: "pause",
RESUMED: "resume",
SKIPPABLE_STATE_CHANGED: "skippableStateChanged",
SKIPPED: "skip",
STARTED: "start",
THIRD_QUARTILE: "thirdQuartile",
USER_CLOSE: "userClose",
VIDEO_CLICKED: "videoClicked",
VIDEO_ICON_CLICKED: "videoIconClicked",
VIEWABLE_IMPRESSION: "viewable_impression",
VOLUME_CHANGED: "volumeChange",
VOLUME_MUTED: "mute",
};
class AdErrorEvent {
constructor(error) {
this.type = "adError";
this.error = error;
}
getError() {
return this.error;
}
getUserRequestContext() {
return {};
}
}
AdErrorEvent.Type = {
AD_ERROR: "adError",
};
const manager = new AdsManager();
class AdsManagerLoadedEvent {
constructor(type) {
this.type = type;
}
getAdsManager(c, settings) {
if (settings && settings.enablePreloading) {
manager._enablePreloading = true;
}
return manager;
}
getUserRequestContext() {
return {};
}
}
AdsManagerLoadedEvent.Type = {
ADS_MANAGER_LOADED: "adsManagerLoaded",
};
class CustomContentLoadedEvent {}
CustomContentLoadedEvent.Type = {
CUSTOM_CONTENT_LOADED: "deprecated-event",
};
class CompanionAdSelectionSettings {}
CompanionAdSelectionSettings.CreativeType = {
ALL: "All",
FLASH: "Flash",
IMAGE: "Image",
};
CompanionAdSelectionSettings.ResourceType = {
ALL: "All",
HTML: "Html",
IFRAME: "IFrame",
STATIC: "Static",
};
CompanionAdSelectionSettings.SizeCriteria = {
IGNORE: "IgnoreSize",
SELECT_EXACT_MATCH: "SelectExactMatch",
SELECT_NEAR_MATCH: "SelectNearMatch",
};
class AdCuePoints {
getCuePoints() {
return [];
}
}
class AdProgressData {}
class UniversalAdIdInfo {
getAdIdRegistry() {
return "";
}
getAdIdValue() {
return "";
}
}
Object.assign(ima, {
AdCuePoints,
AdDisplayContainer,
AdError,
AdErrorEvent,
AdEvent,
AdPodInfo,
AdProgressData,
AdsLoader,
AdsManager: manager,
AdsManagerLoadedEvent,
AdsRenderingSettings,
AdsRequest,
CompanionAd,
CompanionAdSelectionSettings,
CustomContentLoadedEvent,
gptProxyInstance: {},
ImaSdkSettings,
OmidAccessMode: {
DOMAIN: "domain",
FULL: "full",
LIMITED: "limited",
},
OmidVerificationVendor: {
1: "OTHER",
2: "GOOGLE",
GOOGLE: 2,
OTHER: 1
},
settings: new ImaSdkSettings(),
UiElements: {
AD_ATTRIBUTION: "adAttribution",
COUNTDOWN: "countdown",
},
UniversalAdIdInfo,
VERSION,
ViewMode: {
FULLSCREEN: "fullscreen",
NORMAL: "normal",
},
});
if (!window.google) {
window.google = {};
}
window.google.ima = ima;
}

View File

@@ -0,0 +1,58 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const init = ( ) => {
window.adsbygoogle = {
loaded: true,
push: function() {
}
};
const phs = document.querySelectorAll('.adsbygoogle');
const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';
for ( let i = 0; i < phs.length; i++ ) {
const id = `aswift_${i}`;
if ( document.querySelector(`iframe#${id}`) !== null ) { continue; }
const fr = document.createElement('iframe');
fr.id = id;
fr.style = css;
const cfr = document.createElement('iframe');
cfr.id = `google_ads_frame${i}`;
fr.appendChild(cfr);
const ph = phs[i];
ph.appendChild(fr);
ph.setAttribute('data-adsbygoogle-status', 'done');
}
};
if (
document.querySelectorAll('.adsbygoogle').length === 0 &&
document.readyState === 'loading'
) {
window.addEventListener('DOMContentLoaded', init, { once: true });
} else {
init();
}
})();
/*
pagead2.googlesyndication.com/pagead/js/adsbygoogle.js,adsbygoogle-placeholder,adsbygoogleStatus,google_ad_channel,google_ad_client,google_ad_format,google_ad_frequency_hint,google_ad_height,google_ad_host,google_ad_host_channel,google_ad_modifications,google_ad_region,google_ad_resizable,google_ad_resize,google_ad_section,google_ad_semantic_area,google_ad_width,google_adbreak_test,google_ads_frame,google_ads_iframe,google_adtest,google_admob_interstitial_slot,google_admob_rewarded_slot,google_admob_ads_only,google-adsense-platform-account,google_adsense_settings,google_ama_config,google-ama-order-assurance,google_ama_settings,google_ama_state,google_apltlad,google_audio_sense,google-auto-placed-read-aloud-player-reserved,google_debug_params,google_full_width_responsive,google_full_width_responsive_allowed,google_image_requests,google_js_errors,google_js_reporting_queue,google_loader_features_used,google_llp,google_logging_queue,google_max_ad_content_rating,google_measure_js_timing,google_ml_rank,google_overlays,google_override_format,google_package,google_page_url,google_persistent_state_async,google_pgb_reactive,google_placement_id,google_prev_ad_formats_by_region,google_prev_ad_slotnames_by_region,google_reactive_ad_format,google_reactive_ads_global_state,google_resizing_height,google_resizing_width,google_responsive_auto_format,google_responsive_dummy_ad,google_responsive_formats,google_restrict_data_processing,google_rum_task_id_counter,google_safe_for_responsive_override,google_shadow_mode,google_srt,google_tag_for_under_age_of_consent,google_tag_origin,google_tag_partner,google_traffic_source,google_unique_id,googletag
*/

View File

@@ -0,0 +1,43 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const noopfn = function() {
};
const w = window;
w.ga = w.ga || noopfn;
const dl = w.dataLayer;
if ( dl instanceof Object === false ) { return; }
if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
dl.hide.end();
}
if ( typeof dl.push === 'function' ) {
dl.push = function(o) {
if (
o instanceof Object &&
typeof o.eventCallback === 'function'
) {
setTimeout(o.eventCallback, 1);
}
};
}
})();

View File

@@ -0,0 +1,154 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
// https://developers.google.com/doubleclick-gpt/reference
const noopfn = function() {
}.bind();
const noopthisfn = function() {
return this;
};
const noopnullfn = function() {
return null;
};
const nooparrayfn = function() {
return [];
};
const noopstrfn = function() {
return '';
};
//
const companionAdsService = {
addEventListener: noopthisfn,
enableSyncLoading: noopfn,
setRefreshUnfilledSlots: noopfn
};
const contentService = {
addEventListener: noopthisfn,
setContent: noopfn
};
const PassbackSlot = function() {
};
let p = PassbackSlot.prototype;
p.display = noopfn;
p.get = noopnullfn;
p.set = noopthisfn;
p.setClickUrl = noopthisfn;
p.setTagForChildDirectedTreatment = noopthisfn;
p.setTargeting = noopthisfn;
p.updateTargetingFromMap = noopthisfn;
const pubAdsService = {
addEventListener: noopthisfn,
clear: noopfn,
clearCategoryExclusions: noopthisfn,
clearTagForChildDirectedTreatment: noopthisfn,
clearTargeting: noopthisfn,
collapseEmptyDivs: noopfn,
defineOutOfPagePassback: function() { return new PassbackSlot(); },
definePassback: function() { return new PassbackSlot(); },
disableInitialLoad: noopfn,
display: noopfn,
enableAsyncRendering: noopfn,
enableLazyLoad: noopfn,
enableSingleRequest: noopfn,
enableSyncRendering: noopfn,
enableVideoAds: noopfn,
get: noopnullfn,
getAttributeKeys: nooparrayfn,
getTargeting: nooparrayfn,
getTargetingKeys: nooparrayfn,
getSlots: nooparrayfn,
refresh: noopfn,
removeEventListener: noopfn,
set: noopthisfn,
setCategoryExclusion: noopthisfn,
setCentering: noopfn,
setCookieOptions: noopthisfn,
setForceSafeFrame: noopthisfn,
setLocation: noopthisfn,
setPublisherProvidedId: noopthisfn,
setPrivacySettings: noopthisfn,
setRequestNonPersonalizedAds: noopthisfn,
setSafeFrameConfig: noopthisfn,
setTagForChildDirectedTreatment: noopthisfn,
setTargeting: noopthisfn,
setVideoContent: noopthisfn,
updateCorrelator: noopfn
};
const SizeMappingBuilder = function() {
};
p = SizeMappingBuilder.prototype;
p.addSize = noopthisfn;
p.build = noopnullfn;
const Slot = function() {
};
p = Slot.prototype;
p.addService = noopthisfn;
p.clearCategoryExclusions = noopthisfn;
p.clearTargeting = noopthisfn;
p.defineSizeMapping = noopthisfn;
p.get = noopnullfn;
p.getAdUnitPath = nooparrayfn;
p.getAttributeKeys = nooparrayfn;
p.getCategoryExclusions = nooparrayfn;
p.getDomId = noopstrfn;
p.getResponseInformation = noopnullfn;
p.getSlotElementId = noopstrfn;
p.getSlotId = noopthisfn;
p.getTargeting = nooparrayfn;
p.getTargetingKeys = nooparrayfn;
p.set = noopthisfn;
p.setCategoryExclusion = noopthisfn;
p.setClickUrl = noopthisfn;
p.setCollapseEmptyDiv = noopthisfn;
p.setTargeting = noopthisfn;
p.updateTargetingFromMap = noopthisfn;
//
const gpt = window.googletag || {};
const cmd = gpt.cmd || [];
gpt.apiReady = true;
gpt.cmd = [];
gpt.cmd.push = function(a) {
try {
a();
} catch (ex) {
}
return 1;
};
gpt.companionAds = function() { return companionAdsService; };
gpt.content = function() { return contentService; };
gpt.defineOutOfPageSlot = function() { return new Slot(); };
gpt.defineSlot = function() { return new Slot(); };
gpt.destroySlots = noopfn;
gpt.disablePublisherConsole = noopfn;
gpt.display = noopfn;
gpt.enableServices = noopfn;
gpt.getVersion = noopstrfn;
gpt.pubads = function() { return pubAdsService; };
gpt.pubadsReady = true;
gpt.setAdIframeTitle = noopfn;
gpt.sizeMapping = function() { return new SizeMappingBuilder(); };
window.googletag = gpt;
while ( cmd.length !== 0 ) {
gpt.cmd.push(cmd.shift());
}
})();

View File

@@ -0,0 +1,46 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const l = {};
const noopfn = function() {
};
const props = [
"$j","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Nj","Oc","Pc","Pe",
"Qc","Qe","Rc","Re","Ri","Sc","Tc","Uc","Vc","Wc","Wg","Xc","Xg","Yc","Yd",
"ad","ae","bd","bf","cd","dd","ed","ef","ek","fd","fg","fh","fk","gd","hd",
"ig","ij","jd","kd","ke","ld","md","mi","nd","od","oh","pd","pf","qd","rd",
"sd","td","ud","vd","wd","wg","xd","xh","yd","zd",
"$d","$e","$k","Ae","Af","Aj","Be","Ce","De","Ee","Ek","Eo","Ep","Fe","Fo",
"Ge","Gh","Hk","Ie","Ip","Je","Ke","Kk","Kq","Le","Lh","Lk","Me","Mm","Ne",
"Oe","Pe","Qe","Re","Rp","Se","Te","Ue","Ve","Vp","We","Xd","Xe","Yd","Ye",
"Zd","Ze","Zf","Zk","ae","af","al","be","bf","bg","ce","cp","df","di","ee",
"ef","fe","ff","gf","gm","he","hf","ie","je","jf","ke","kf","kl","le","lf",
"lk","mf","mg","mn","nf","oe","of","pe","pf","pg","qe","qf","re","rf","se",
"sf","te","tf","ti","ue","uf","ve","vf","we","wf","wg","wi","xe","ye","yf",
"yk","yl","ze","zf","zk"
];
for ( let i = 0; i < props.length; i++ ) {
l[props[i]] = noopfn;
}
window.L = window.J = l;
})();

View File

@@ -0,0 +1,87 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const signatures = [
[ 'blockadblock' ],
[ 'babasbm' ],
[ /getItem\('babn'\)/ ],
[
'getElementById',
'String.fromCharCode',
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
'charAt',
'DOMContentLoaded',
'AdBlock',
'addEventListener',
'doScroll',
'fromCharCode',
'<<2|r>>4',
'sessionStorage',
'clientWidth',
'localStorage',
'Math',
'random'
],
];
const check = function(s) {
for ( let i = 0; i < signatures.length; i++ ) {
const tokens = signatures[i];
let match = 0;
for ( let j = 0; j < tokens.length; j++ ) {
const token = tokens[j];
const pos = token instanceof RegExp
? s.search(token)
: s.indexOf(token);
if ( pos !== -1 ) { match += 1; }
}
if ( (match / tokens.length) >= 0.8 ) { return true; }
}
return false;
};
window.eval = new Proxy(window.eval, { // jshint ignore: line
apply: function(target, thisArg, args) {
const a = args[0];
if ( typeof a !== 'string' || !check(a) ) {
return target.apply(thisArg, args);
}
if ( document.body ) {
document.body.style.removeProperty('visibility');
}
let el = document.getElementById('babasbmsgx');
if ( el ) {
el.parentNode.removeChild(el);
}
}
});
window.setTimeout = new Proxy(window.setTimeout, {
apply: function(target, thisArg, args) {
const a = args[0];
if (
typeof a !== 'string' ||
/\.bab_elementid.$/.test(a) === false
) {
return target.apply(thisArg, args);
}
}
});
})();

View File

@@ -0,0 +1,42 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2021-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const script = document.currentScript;
if ( script === null ) { return; }
const src = script.src;
if ( typeof src !== 'string' ) { return; }
// The scriplet is meant to act ONLY when it's being used as a redirection
// for specific domains.
const re = new RegExp(
'^https?://[\\w-]+\\.(' +
[
'adclixx\\.net',
'adnetasia\\.com',
'adtrackers\\.net',
'bannertrack\\.net',
].join('|') +
')/.'
);
if ( re.test(src) === false ) { return; }
window.nH7eXzOsG = 858;
})();

View File

@@ -0,0 +1,28 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
window.eval = new Proxy(window.eval, { // jshint ignore: line
apply: function() {
}
});
})();

View File

@@ -0,0 +1,30 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const log = console.log.bind(console);
window.eval = new Proxy(window.eval, { // jshint ignore: line
apply: function(target, thisArg, args) {
log(`Document tried to eval... ${args[0]}\n`);
}
});
})();

View File

@@ -0,0 +1,67 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const noopfn = function() {
};
const Fab = function() {};
Fab.prototype.check = noopfn;
Fab.prototype.clearEvent = noopfn;
Fab.prototype.emitEvent = noopfn;
Fab.prototype.on = function(a, b) {
if ( !a ) { b(); }
return this;
};
Fab.prototype.onDetected = function() {
return this;
};
Fab.prototype.onNotDetected = function(a) {
a();
return this;
};
Fab.prototype.setOption = noopfn;
Fab.prototype.options = {
set: noopfn,
get: noopfn,
};
const fab = new Fab();
const getSetFab = {
get: function() { return Fab; },
set: function() {}
};
const getsetfab = {
get: function() { return fab; },
set: function() {}
};
if ( window.hasOwnProperty('FuckAdBlock') ) { window.FuckAdBlock = Fab; }
else { Object.defineProperty(window, 'FuckAdBlock', getSetFab); }
if ( window.hasOwnProperty('BlockAdBlock') ) { window.BlockAdBlock = Fab; }
else { Object.defineProperty(window, 'BlockAdBlock', getSetFab); }
if ( window.hasOwnProperty('SniffAdBlock') ) { window.SniffAdBlock = Fab; }
else { Object.defineProperty(window, 'SniffAdBlock', getSetFab); }
if ( window.hasOwnProperty('fuckAdBlock') ) { window.fuckAdBlock = fab; }
else { Object.defineProperty(window, 'fuckAdBlock', getsetfab); }
if ( window.hasOwnProperty('blockAdBlock') ) { window.blockAdBlock = fab; }
else { Object.defineProperty(window, 'blockAdBlock', getsetfab); }
if ( window.hasOwnProperty('sniffAdBlock') ) { window.sniffAdBlock = fab; }
else { Object.defineProperty(window, 'sniffAdBlock', getsetfab); }
})();

Binary file not shown.

View File

@@ -0,0 +1 @@
<VAST version="2.0"></VAST>

View File

@@ -0,0 +1 @@
<VAST version="3.0"></VAST>

View File

@@ -0,0 +1 @@
<VAST version="4.0"></VAST>

View File

@@ -0,0 +1 @@
<vmap:VMAP xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0"></vmap:VMAP>

View File

@@ -0,0 +1 @@
/* */

View File

@@ -0,0 +1,5 @@
<!DOCTYPE html>
<html>
<head><title></title></head>
<body></body>
</html>

View File

@@ -0,0 +1,3 @@
(function() {
'use strict';
})();

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,72 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const noopfn = function() {
};
const obr = {};
const methods = [
'callClick',
'callLoadMore',
'callRecs',
'callUserZapping',
'callWhatIs',
'cancelRecommendation',
'cancelRecs',
'closeCard',
'closeModal',
'closeTbx',
'errorInjectionHandler',
'getCountOfRecs',
'getStat',
'imageError',
'manualVideoClicked',
'onOdbReturn',
'onVideoClick',
'pagerLoad',
'recClicked',
'refreshSpecificWidget',
'renderSpaWidgets',
'refreshWidget',
'reloadWidget',
'researchWidget',
'returnedError',
'returnedHtmlData',
'returnedIrdData',
'returnedJsonData',
'scrollLoad',
'showDescription',
'showRecInIframe',
'userZappingMessage',
'zappingFormAction'
];
obr.extern = {
video: {
getVideoRecs: noopfn,
videoClicked: noopfn
}
};
methods.forEach(function(a) {
obr.extern[a] = noopfn;
});
window.OBR = window.OBR || obr;
})();

View File

@@ -0,0 +1,30 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
delete window.PopAds;
delete window.popns;
Object.defineProperties(window, {
PopAds: { value: {} },
popns: { value: {} }
});
})();

View File

@@ -0,0 +1,40 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
const magic = String.fromCharCode(Date.now() % 26 + 97) +
Math.floor(Math.random() * 982451653 + 982451653).toString(36);
const oe = window.onerror;
window.onerror = function(msg, src, line, col, error) {
if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) { return true; }
if ( oe instanceof Function ) {
return oe(msg, src, line, col, error);
}
}.bind();
const throwMagic = function() { throw new ReferenceError(magic); };
delete window.PopAds;
delete window.popns;
Object.defineProperties(window, {
PopAds: { set: throwMagic },
popns: { set: throwMagic }
});
})();

View File

@@ -0,0 +1,26 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2022-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
window.canRunAds = true;
window.isAdBlockActive = false;
})();

View File

@@ -0,0 +1,31 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2019-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
(function() {
'use strict';
window.COMSCORE = {
purge: function() {
window._comscore = [];
},
beacon: function() {
}
};
})();