Description:
there are preroll video ads
https://www.tvnow.de/rtl2/curvy-supermodel/die-grosse-tanzchallenge/playerScreenshot:
https://image.prntscr.com/image/kVW6uMwxSEqADahjFMwl5Q.png
System configuration
Information | value
--- | ---
Operating system: | Windows 7
Browser: | google chrome 60
Adguard version: | 2.6.7 browser extension
Adguard filters: | english filter,spyware filter , german filter
note=
We can't block this ad by browser extension.
@AdamWr please check this rule with German IP with AG for Windows
||de-ipd.videoplaza.tv/proxy/distributor/$important,replace=/"vast":{"ad":\[.*?\]}}\]}\,/"vast":{"ad":[]}}]}\,/
@Vincent-Michael
I checked this and even without this rule I do not see ads with Adguard for Windows, but it seems to me that with this rule video loads faster.
Little offtopic...@alex-302 and @AdamWr, this extension work at browser EXTENSION level.....
I have to wait if some solution came for adguard browser extension.....
It is not simple.
Try this
tvnow.de#%#"use strict"; function e(e, t) { e.__defineGetter__("responseText", function() { return t; }), e.__defineGetter__("response", function() { return t; }); } function t(t) { try { var n = JSON.parse(t.responseText); n.ignoreAd = !0, n.noad = !0, n.geoblocked = !1, n.free = !0, n.blockadeText = "0", n.format.enableAd = !1, n.format.hasFreeEpisodes = !0, n.format.isGeoBlocked = !1, e(t, JSON.stringify(n)); } catch (e) {} } function n() { document.arrive(".button.now-freebutton > input.ng-empty", function() { this && this.parentNode && this.parentNode.click(); }); } var r = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function(e, n, o) { return n.includes("/v3/movies/") && this.addEventListener("readystatechange", function() { 4 === this.readyState && t(this); }, !0), r.apply(this, [].slice.call(arguments)); }; var o = function(e, t, n) { function r(e, t, n) { c.addMethod(t, n, e.unbindEvent), c.addMethod(t, n, e.unbindEventWithSelectorOrCallback), c.addMethod(t, n, e.unbindEventWithSelectorAndCallback); } function o(e) { e.arrive = d.bindEvent, r(d, e, "unbindArrive"), e.leave = f.bindEvent, r(f, e, "unbindLeave"); } if (e.MutationObserver && "undefined" != typeof HTMLElement) { var i = 0, c = function() { var t = HTMLElement.prototype.matches || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector; return { matchesSelector: function(e, n) { return e instanceof HTMLElement && t.call(e, n); }, addMethod: function(e, t, n) { var r = e[t]; e[t] = function() { return n.length == arguments.length ? n.apply(this, arguments) : "function" == typeof r ? r.apply(this, arguments) : void 0; }; }, callCallbacks: function(e) { for (var t, n = 0; t = e[n]; n++) t.callback.call(t.elem); }, checkChildNodesRecursively: function(e, t, n, r) { for (var o, i = 0; o = e[i]; i++) n(o, t, r) && r.push({ callback: t.callback, elem: o }), o.childNodes.length > 0 && c.checkChildNodesRecursively(o.childNodes, t, n, r); }, mergeArrays: function(e, t) { var n, r = {}; for (n in e) r[n] = e[n]; for (n in t) r[n] = t[n]; return r; }, toElementsArray: function(t) { return "undefined" == typeof t || "number" == typeof t.length && t !== e || (t = [ t ]), t; } }; }(), l = function() { var e = function() { this._eventsBucket = [], this._beforeAdding = null, this._beforeRemoving = null; }; return e.prototype.addEvent = function(e, t, n, r) { var o = { target: e, selector: t, options: n, callback: r, firedElems: [] }; return this._beforeAdding && this._beforeAdding(o), this._eventsBucket.push(o), o; }, e.prototype.removeEvent = function(e) { for (var t, n = this._eventsBucket.length - 1; t = this._eventsBucket[n]; n--) e(t) && (this._beforeRemoving && this._beforeRemoving(t), this._eventsBucket.splice(n, 1)); }, e.prototype.beforeAdding = function(e) { this._beforeAdding = e; }, e.prototype.beforeRemoving = function(e) { this._beforeRemoving = e; }, e; }(), a = function t(r, o) { var t = new l(), i = this, a = { fireOnAttributesModification: !1 }; return t.beforeAdding(function(t) { var n, c = t.target; t.selector, t.callback, (c === e.document || c === e) && (c = document.getElementsByTagName("html")[0]), n = new MutationObserver(function(e) { o.call(this, e, t); }); var l = r(t.options); n.observe(c, l), t.observer = n, t.me = i; }), t.beforeRemoving(function(e) { e.observer.disconnect(); }), this.bindEvent = function(e, n, r) { n = c.mergeArrays(a, n); for (var o = c.toElementsArray(this), i = 0; i < o.length; i++) t.addEvent(o[i], e, n, r); }, this.unbindEvent = function() { var e = c.toElementsArray(this); t.removeEvent(function(t) { for (var r = 0; r < e.length; r++) if (this === n || t.target === e[r]) return !0; return !1; }); }, this.unbindEventWithSelectorOrCallback = function(e) { var r, o = c.toElementsArray(this), i = e; r = "function" == typeof e ? function(e) { for (var t = 0; t < o.length; t++) if ((this === n || e.target === o[t]) && e.callback === i) return !0; return !1; } : function(t) { for (var r = 0; r < o.length; r++) if ((this === n || t.target === o[r]) && t.selector === e) return !0; return !1; }, t.removeEvent(r); }, this.unbindEventWithSelectorAndCallback = function(e, r) { var o = c.toElementsArray(this); t.removeEvent(function(t) { for (var i = 0; i < o.length; i++) if ((this === n || t.target === o[i]) && t.selector === e && t.callback === r) return !0; return !1; }); }, this; }, s = function e() { function e(e) { var t = { attributes: !1, childList: !0, subtree: !0 }; return e.fireOnAttributesModification && (t.attributes = !0), t; } function t(e, t) { e.forEach(function(e) { var n = e.addedNodes, o = e.target, i = []; null !== n && n.length > 0 ? c.checkChildNodesRecursively(n, t, r, i) : "attributes" === e.type && r(o, t, i) && i.push({ callback: t.callback, elem: node }), c.callCallbacks(i); }); } function r(e, t, r) { if (c.matchesSelector(e, t.selector) && (e._id === n && (e._id = i++), -1 == t.firedElems.indexOf(e._id))) { if (t.options.onceOnly) { if (0 !== t.firedElems.length) return; t.me.unbindEventWithSelectorAndCallback.call(t.target, t.selector, t.callback); } t.firedElems.push(e._id), r.push({ callback: t.callback, elem: e }); } } var o = { fireOnAttributesModification: !1, onceOnly: !1, existing: !1 }; d = new a(e, t); var l = d.bindEvent; return d.bindEvent = function(e, t, n) { "undefined" == typeof n ? (n = t, t = o) : t = c.mergeArrays(o, t); var r = c.toElementsArray(this); if (t.existing) { for (var i = [], a = 0; a < r.length; a++) for (var s = r[a].querySelectorAll(e), u = 0; u < s.length; u++) i.push({ callback: n, elem: s[u] }); if (t.onceOnly && i.length) return n.call(i[0].elem); setTimeout(c.callCallbacks, 1, i); } l.call(this, e, t, n); }, d; }, u = function e() { function t(e) { var t = { childList: !0, subtree: !0 }; return t; } function n(e, t) { e.forEach(function(e) { var n = e.removedNodes, o = (e.target, []); null !== n && n.length > 0 && c.checkChildNodesRecursively(n, t, r, o), c.callCallbacks(o); }); } function r(e, t) { return c.matchesSelector(e, t.selector); } var o = {}; f = new a(t, n); var e = f.bindEvent; return f.bindEvent = function(t, n, r) { "undefined" == typeof r ? (r = n, n = o) : n = c.mergeArrays(o, n), e.call(this, t, n, r); }, f; }, d = new s(), f = new u(); t && o(t.fn), o(HTMLElement.prototype), o(NodeList.prototype), o(HTMLCollection.prototype), o(HTMLDocument.prototype), o(Window.prototype); var h = {}; return r(d, h, "unbindAllArrive"), r(f, h, "unbindAllLeave"), h; } }(window, "undefined" == typeof jQuery ? null : jQuery, void 0); document.addEventListener("DOMContentLoaded", n, !1);
bingo!!!!!!! its working ,thanx a lot....
btw what that rule does?
I don't know:)
This script is from that extension.
Where that extension can work?
Check this instead of previous:
tvnow.de#%#"use strict";function e(e,t){e.__defineGetter__("responseText",function(){return t}),e.__defineGetter__("response",function(){return t})}function t(t){try{var n=JSON.parse(t.responseText);n.ignoreAd=!0,n.noad=!0,n.geoblocked=!1,n.free=!0,n.blockadeText="0",n.format.enableAd=!1,n.format.hasFreeEpisodes=!0,n.format.isGeoBlocked=!1,e(t,JSON.stringify(n))}catch(e){}}function n(){document.arrive(".button.now-freebutton > input.ng-empty",function(){this&&this.parentNode&&this.parentNode.click()})}var r=window.XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.open=function(e,n,o){return n.includes("/v3/movies/")&&this.addEventListener("readystatechange",function(){4===this.readyState&&t(this)},!0),r.apply(this,[].slice.call(arguments))};var o=function(e,t,n){function r(e,t,n){c.addMethod(t,n,e.unbindEvent),c.addMethod(t,n,e.unbindEventWithSelectorOrCallback),c.addMethod(t,n,e.unbindEventWithSelectorAndCallback)}function o(e){e.arrive=d.bindEvent,r(d,e,"unbindArrive"),e.leave=f.bindEvent,r(f,e,"unbindLeave")}if(e.MutationObserver&&"undefined"!=typeof HTMLElement){var i=0,c=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(e,n){return e instanceof HTMLElement&&t.call(e,n)},addMethod:function(e,t,n){var r=e[t];e[t]=function(){return n.length==arguments.length?n.apply(this,arguments):"function"==typeof r?r.apply(this,arguments):void 0}},callCallbacks:function(e){for(var t,n=0;t=e[n];n++)t.callback.call(t.elem);},checkChildNodesRecursively:function(e,t,n,r){for(var o,i=0;o=e[i];i++)n(o,t,r)&&r.push({callback:t.callback,elem:o}),o.childNodes.length>0&&c.checkChildNodesRecursively(o.childNodes,t,n,r)},mergeArrays:function(e,t){var n,r={};for(n in e)r[n]=e[n];for(n in t)r[n]=t[n];return r},toElementsArray:function(t){return "undefined"==typeof t||"number"==typeof t.length&&t!==e||(t=[t]),t}}}(),l=function(){var e=function(){this._eventsBucket=[],this._beforeAdding=null,this._beforeRemoving=null};return e.prototype.addEvent=function(e,t,n,r){var o={target:e,selector:t,options:n,callback:r,firedElems:[]};return this._beforeAdding&&this._beforeAdding(o),this._eventsBucket.push(o),o},e.prototype.removeEvent=function(e){for(var t,n=this._eventsBucket.length-1;t=this._eventsBucket[n];n--)e(t)&&(this._beforeRemoving&&this._beforeRemoving(t),this._eventsBucket.splice(n,1));},e.prototype.beforeAdding=function(e){this._beforeAdding=e},e.prototype.beforeRemoving=function(e){this._beforeRemoving=e},e}(),a=function t(r,o){var t=new l(),i=this,a={fireOnAttributesModification:!1};return t.beforeAdding(function(t){var n,c=t.target;t.selector,t.callback,(c===e.document||c===e)&&(c=document.getElementsByTagName("html")[0]),n=new MutationObserver(function(e){o.call(this,e,t)});var l=r(t.options);n.observe(c,l),t.observer=n,t.me=i}),t.beforeRemoving(function(e){e.observer.disconnect()}),this.bindEvent=function(e,n,r){n=c.mergeArrays(a,n);for(var o=c.toElementsArray(this),i=0;i<o.length;i++)t.addEvent(o[i],e,n,r);},this.unbindEvent=function(){var e=c.toElementsArray(this);t.removeEvent(function(t){for(var r=0;r<e.length;r++)if(this===n||t.target===e[r])return!0;return!1})},this.unbindEventWithSelectorOrCallback=function(e){var r,o=c.toElementsArray(this),i=e;r="function"==typeof e?function(e){for(var t=0;t<o.length;t++)if((this===n||e.target===o[t])&&e.callback===i)return!0;return!1}:function(t){for(var r=0;r<o.length;r++)if((this===n||t.target===o[r])&&t.selector===e)return!0;return!1},t.removeEvent(r)},this.unbindEventWithSelectorAndCallback=function(e,r){var o=c.toElementsArray(this);t.removeEvent(function(t){for(var i=0;i<o.length;i++)if((this===n||t.target===o[i])&&t.selector===e&&t.callback===r)return!0;return!1})},this},s=function e(){function e(e){var t={attributes:!1,childList:!0,subtree:!0};return e.fireOnAttributesModification&&(t.attributes=!0),t}function t(e,t){e.forEach(function(e){var n=e.addedNodes,o=e.target,i=[];null!==n&&n.length>0?c.checkChildNodesRecursively(n,t,r,i):"attributes"===e.type&&r(o,t,i)&&i.push({callback:t.callback,elem:node}),c.callCallbacks(i)})}function r(e,t,r){if(c.matchesSelector(e,t.selector)&&(e._id===n&&(e._id=i++),-1==t.firedElems.indexOf(e._id))){if(t.options.onceOnly){if(0!==t.firedElems.length)return;t.me.unbindEventWithSelectorAndCallback.call(t.target,t.selector,t.callback)}t.firedElems.push(e._id),r.push({callback:t.callback,elem:e})}}var o={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};d=new a(e,t);var l=d.bindEvent;return d.bindEvent=function(e,t,n){"undefined"==typeof n?(n=t,t=o):t=c.mergeArrays(o,t);var r=c.toElementsArray(this);if(t.existing){for(var i=[],a=0;a<r.length;a++)for(var s=r[a].querySelectorAll(e),u=0;u<s.length;u++)i.push({callback:n,elem:s[u]});if(t.onceOnly&&i.length)return n.call(i[0].elem);setTimeout(c.callCallbacks,1,i)}l.call(this,e,t,n)},d},u=function e(){function t(e){var t={childList:!0,subtree:!0};return t}function n(e,t){e.forEach(function(e){var n=e.removedNodes,o=(e.target,[]);null!==n&&n.length>0&&c.checkChildNodesRecursively(n,t,r,o),c.callCallbacks(o)})}function r(e,t){return c.matchesSelector(e,t.selector)}var o={};f=new a(t,n);var e=f.bindEvent;return f.bindEvent=function(t,n,r){"undefined"==typeof r?(r=n,n=o):n=c.mergeArrays(o,n),e.call(this,t,n,r)},f},d=new s(),f=new u();t&&o(t.fn),o(HTMLElement.prototype),o(NodeList.prototype),o(HTMLCollection.prototype),o(HTMLDocument.prototype),o(Window.prototype);var h={};return r(d,h,"unbindAllArrive"),r(f,h,"unbindAllLeave"),h}}(window,"undefined"==typeof jQuery?null:jQuery,void 0);document.addEventListener("DOMContentLoaded",n,!1)
yes that also work.
what do you mean by 'Where that extension can work?' 馃槄
Sites
i just tried tvnow.de.... another german user need to confirm other sites that work with that extension
ok, added.
Most helpful comment
It is not simple.
Try this