🌐 delete cookies 🍪

Agrees to the cookies dialog to make it disappear forever except for YouTube where cookies will be rejected thanks to the new function provided by YouTube!

当前为 2022-08-31 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name 🌐 delete cookies 🍪
  3. // @name:fr 🌐 suppression de l'avertissement des cookies 🍪
  4. // @namespace https://greasyfork.org/en/users/876222-zzz-the-hacker
  5. // @version 1.0.5
  6. // @description Agrees to the cookies dialog to make it disappear forever except for YouTube where cookies will be rejected thanks to the new function provided by YouTube!
  7. // @description:fr Confirme l'acceptation des cookies pour le faire disparaître définitivement sauf pour YouTube où les cookies seront refusés grâce à la nouvelle fonction apportée par YouTube !
  8. // @author zzz le hacker
  9. // @match https://consent.google.*/*
  10. // @match https://www.google.tld/*
  11. // @match https://starve.io/
  12. // @match https://www.google.com
  13. // @match https://www.youtube.com/
  14. // @match https://www.facebook.com/
  15. // @match https://twitter.com/
  16. // @match https://www.instagram.com/
  17. // @match http://www.baidu.com/
  18. // @match https://www.wikipedia.org/
  19. // @match https://www.reddit.com/
  20. // @match https://consent.yahoo.com/v2/collectConsent?sessionId=3_cc-session_83f05cbb-450a-4c64-a23a-bc67eb43a71f
  21. // @match https://yahoo.com/
  22. // @match https://www.amazon.com/
  23. // @match https://www.netflix.com/fr/
  24. // @match https://www.netflix.com/fr-en/
  25. // @match https://www.twitch.tv/
  26. // @match https://www.ebay.com/
  27. // @match https://moomoo.io/
  28. // @match https://diep.io
  29. // @match https://devast.io/
  30. // @match https://slither.io
  31. // @match https://krunker.io/
  32. // @match https://odysee.com/
  33. // @match https://www.amazon.de/
  34. // @match https://www.amazon.fr/
  35. // @match https://www.amazon.nl/
  36. // @match https://www.amazon.it/
  37. // @match https://www.amazon.es/
  38. // @match https://www.amazon.co.uk/
  39. // @run-at document-start
  40. // @grant none
  41. // ==/UserScript==
  42.  
  43. (function(){
  44. "use strict";
  45. alert('cookie deleter : actived - agrees (or refuse if you are going to YouTube) to the cookies dialog to make it disappear forever')
  46. if (document.readyState != 'loading') consent();
  47. else document.addEventListener('DOMContentLoaded', consent);
  48.  
  49. function consent() {
  50. var e=document.querySelector('#introAgreeButton');
  51. if (!e) e=document.querySelector('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://consent.google.com/s"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://twitter.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://starve.io/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://consent.google.*/*"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.google.tld/*"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://starve.io/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.google.com"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.youtube.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.facebook.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://twitter.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.instagram.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="http://www.baidu.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.wikipedia.org/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.reddit.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://consent.yahoo.com/v2/collectConsent?sessionId=3_cc-session_83f05cbb-450a-4c64-a23a-bc67eb43a71f"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://yahoo.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.netflix.com/fr/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.netflix.com/fr-en/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.twitch.tv/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.ebay.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://diep.io"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://moomoo.io/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://devast.io/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://slither.io"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://krunker.io/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://odysee.com/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.de/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.fr/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.nl/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.it/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.es/"] button');('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, form[action="https://www.amazon.co.uk/"] button');
  52. e && e.click();
  53. }
  54.  
  55. var t, e=r.querySelector('#introAgreeButton')
  56. || ( (t=r.querySelectorAll('#lightbox[class*="ytd-consent-bump"] a.ytd-button-renderer:not([href])')) && (t.length==1) && (e=t[0]) )
  57. || ( (t=r.querySelectorAll('form button')) && (t.length == 1) && (e=t[0]) )
  58. || ( (t=r.querySelectorAll(':scope form button')) && (t.length == 4) && (e=t[1]) ) /*20220524*/
  59. || ( (t=r.querySelectorAll('ytd-button-renderer > a:not([href]) tp-yt-paper-button[class*="primary"]')) && (t.length == 1) && (e=t[0]) )
  60. || ( (t=r.querySelectorAll('ytd-button-renderer > a:not([href]) tp-yt-paper-button[class*="primary"]')) && (t.length == 2) && (e=t[0]) );
  61. e && e.click();
  62.  
  63. if (location.href.startsWith('https://consent.youtube.com/')) {
  64. if (document.readyState != 'loading') consent();
  65. else document.addEventListener('DOMContentLoaded', consent);
  66. return;
  67. }
  68.  
  69. if (window !== window.top) return;
  70.  
  71. function cookies() {
  72. var r={}, a=document.cookie;
  73. a.split(';').forEach(function(e){
  74. var p=e.split('=');
  75. if (p[0]) r[p.shift().trim()]=p.join('=');
  76. });
  77. return r;
  78. }
  79.  
  80. var ck=cookies();
  81. if (ck['APISID']) return;
  82.  
  83. function hasDismiss(e, l=1) {
  84. var p=e;
  85. while (p && l-- && (p=p.parentNode)) {
  86. if (p.id=='dismiss-button') return p;
  87. }
  88. }
  89.  
  90. function SImutF(mutL){
  91. for (let mut of mutL) {
  92. let t=mut.target, db=t;
  93. if ( (t.id=='dismiss-button') || (db=hasDismiss(t,2)) ) {
  94. if (db.__c__) continue;
  95. if (t.classList.contains('yt-upsell-dialog-renderer') || t.classList.contains('ytd-mealbar-promo-renderer')) ;
  96. else if (t.classList.contains('yt-tooltip-renderer')) {
  97. t=t.querySelector('yt-button-renderer');
  98. if (!t) continue;
  99. }
  100. else continue;
  101. db.__c__=true;
  102. setTimeout(function(){
  103. t.click();
  104. delete db.__c__;
  105. }, 300);
  106. subObs.observe(t,{attributes: true, subtree: true});
  107. }
  108. }
  109. }
  110. var obs=new MutationObserver(SImutF);
  111. var subObs=new MutationObserver(SImutF);
  112. var obs_w4PU=new MutationObserver(function(mutL){
  113. for (let mut of mutL) {
  114. for (let n of mut.addedNodes) {
  115. if (n.nodeName == 'YTD-POPUP-CONTAINER') {
  116. this.disconnect();
  117. setObs();
  118. return;
  119. }
  120. }
  121. }
  122. });
  123. var obs_w4ErRd=new MutationObserver(function(mutL){
  124. for (let mut of mutL) {
  125. for (let n of mut.addedNodes) {
  126. if (n.id == 'columns') {
  127. let r=n.querySelector('yt-playability-error-supported-renderers');
  128. if (r) {
  129. this.disconnect();
  130. setErRdObs();
  131. return;
  132. }
  133. }
  134. }
  135. }
  136. });
  137. var obsCk=new MutationObserver(function(mutL){
  138. var cb;
  139. for (let mut of mutL) {
  140. for (let n of mut.addedNodes) {
  141. if (n.nodeName == 'TP-YT-IRON-OVERLAY-BACKDROP') {
  142. cb=document.querySelector('#lightbox');
  143. consent();
  144. }
  145. if ( (n.nodeName == 'YTD-CONSENT-BUMP-LIGHTBOX') || (n=cb) ) {
  146. this.disconnect();
  147. setTimeout(function(){
  148. let ck=cookies();
  149. if (ck['CONSENT'] && !ck['CONSENT'].startsWith('YES')) document.cookie='CONSENT=YES+;path=/;secure;domain=youtube.com;expires='+(new Date(Date.now()+567648000000)).toUTCString()+';';
  150. }, 5000);
  151. // not an iframe anymore
  152. consent(null,n);
  153. return;
  154. }
  155. }
  156. }
  157. });
  158.  
  159. var ErRd, ErRdIT,
  160. obsErRd=new MutationObserver(function(mutL){
  161. var t, ITc=30;
  162. for (let mut of mutL) {
  163. t=mut.target;
  164. if (t.id=='dismiss-button') {
  165. if (t.classList.contains('yt-player-error-message-renderer')) t=t.querySelector(':scope yt-button-renderer paper-button#button');
  166. else continue;
  167. if (ErRdIT) clearInterval(ErRdIT);
  168. ErRdIT=setInterval(function(){
  169. if (!ITc-- || ErRd.hidden || !t) {
  170. clearInterval(ErRdIT);
  171. ErRdIT=0;
  172. }
  173. else t.click();
  174. }, 300);
  175. return;
  176. }
  177. }
  178. });
  179.  
  180. function init() {
  181. var t;
  182. if (document.querySelector('ytm-app')) {
  183. new MutationObserver(function(mutL){
  184. for (let mut of mutL) {
  185. for (let n of mut.addedNodes) {
  186. if (n.classList.contains('upsell-dialog-lightbox') || n.classList.contains('consent-bump-lightbox') ) {
  187. if (t=document.querySelector('.upsell-dialog-dismiss-button button, .consent-bump-button-wrapper button')) {
  188. t.click();
  189. }
  190. }
  191. }
  192. }
  193. }).observe(document.body, {childList: true, subtree: false});
  194. }
  195.  
  196. setObs();
  197. setErRdObs();
  198. if (ck['CONSENT'] && !ck['CONSENT'].startsWith('YES')) {
  199. obsCk.observe(document.body, {childList:true});
  200. setTimeout(function(){obsCk.disconnect();},30000);
  201. }
  202. }
  203.  
  204. var c=1;
  205. function setObs(){
  206. var r=document.querySelector('ytd-app ytd-popup-container');
  207. if (!r) {
  208. if (c--) obs_w4PU.observe(document.querySelector('ytd-app'), {childList:true});
  209. return;
  210. }
  211. obs.observe(r, {childList: true, subtree: true});
  212. }
  213.  
  214. function setErRdObs() {
  215. ErRd=document.querySelector('ytd-app yt-playability-error-supported-renderers');
  216. if (!ErRd) {
  217. obs_w4ErRd.observe(document.querySelector('ytd-app'), {childList: true, subtree: true});
  218. setTimeout(function(){obs_w4ErRd.disconnect();}, 20000);
  219. }
  220. else obsErRd.observe(ErRd ,{childList: true, subtree: true, attributes: true});
  221. }
  222.  
  223. if (document.readyState != 'loading') init();
  224. else document.addEventListener('DOMContentLoaded', init);
  225.  
  226. function inject() {
  227.  
  228. var r=document.head || document.documentElement;
  229. if (!r) {
  230. setTimeout(inject,0);
  231. return;
  232. }
  233.  
  234. var s=document.createElement('style');
  235. r.appendChild(s);
  236. s.textContent="#consent-bump,iron-overlay-backdrop,yt-upsell-dialog-renderer{opacity:0;}yt-upsell-dialog-renderer *,yt-bubble-hint-renderer,.upsell-dialog-lightbox,.consent-bump-lightbox{display:none !important;}ytd-app > ytd-consent-bump-lightbox,ytd-app > ytd-consent-bump-v2-lightbox,ytd-app ~ iron-overlay-backdrop,ytd-app ~ tp-yt-iron-overlay-backdrop{display:none;}";
  237.  
  238. s=document.createElement('script');
  239. s.textContent= `(function(){var c=160, pl, plR, prom, oldp={}, t, done, hasPaused;
  240.  
  241. const obs=new MutationObserver(function(mutL){
  242. if (!prom) {
  243. if (prom=document.querySelector('ytd-player#ytd-player') ) {
  244. if (prom.getPlayerPromise) {
  245. prom.getPlayerPromise().then(function(a){
  246. pl=a;
  247. patch();
  248. });
  249. }
  250. else prom=null;
  251. }
  252. }
  253.  
  254. for (let mut of mutL) {
  255. for (let n of mut.addedNodes) {
  256. if (n.id == 'movie_player') {
  257. plR=n.closest('ytd-player#ytd-player');
  258. if (!plR) continue;
  259. this.disconnect();
  260. setTimeout(function(){
  261. pl=plR.getPlayer();
  262. patch();
  263. }, 0);
  264. return;
  265. }
  266. }
  267. }
  268. });
  269.  
  270. function init(){
  271. obs.observe(document.querySelector('ytd-app') || document.body, {childList: true, subtree: true});
  272. setTimeout(function(){obs.disconnect();},10000);
  273. f();
  274. }
  275.  
  276. function f(){
  277. plR=document.querySelector('ytd-player#ytd-player');
  278. if (plR) pl=plR.getPlayer();
  279.  
  280. if (!pl) {
  281. if (--c) setTimeout(f,100);
  282. return;
  283. }
  284. else patch();
  285. }
  286. if (document.readyState != 'loading') init();
  287. else document.addEventListener('DOMContentLoaded', init);
  288.  
  289. function patch() {
  290. if (done) return;
  291. if (pl) done=1;
  292. obs.disconnect();
  293. for (let i in pl) if (typeof pl[i] == 'function') {
  294. if ( !['cancelPlayback', 'pauseVideo', 'stopVideo', 'playVideo'].includes(i) ) continue;
  295. oldp[i]=pl[i];
  296. pl[i]=function() {
  297. let pass= (!hasPaused && i=='playVideo') ? true:false;
  298. let st=(new Error()).stack;
  299. if ( !pass && (st.search(/(\\.onFulfilled|_onFulfilled|scheduler\\.js:|handlePopupClose_)/)>0) && (st.search(/onYtStopOldPlayer/) ==-1) ) {
  300. if (i=='pauseVideo') hasPaused=1;
  301. return;
  302. }
  303. oldp[i].apply(this,arguments);
  304. }
  305. }
  306. }
  307. })();`;
  308.  
  309. r.appendChild(s);
  310. if (s.parentNode) s.parentNode.removeChild(s);
  311.  
  312. } // inject()
  313.  
  314. inject();
  315. })();