Hola, mundo!
En vista de la
nueva política de YouTube de blockear Ad Blockers, me he puesto a pensar qué clase de mecanismo utiliza para detectarlos.
Nunca he usado un Ad Blocker, ni mucho menos para YouTube, pero me consta que en general, se prensentan en forma de extensiones para el navegador. En tal caso, es posible que YouTube simplemente tenga una lista negra de extensiones y al detectar alguna de éstas, se niegue a funcionar al completo.
Bajo esta premisa, he desarrollado un pequeño "Ad Blocker" trivial, que se ejecuta simplemente desde la consola JavaScript del navegador. De momento sólo lo he probado en Chrome, pero funciona perfectamente. Para utilizarlo, basta con abrir las herramientas de desarrollo de Chrome (tecla F12), y ejecutar el siguiente script en el intérprete que sale bajo la pestaña "Consola":
//Simple YouTube Skipper by SkyNoxt
setInterval(function () {
if (document.querySelector(".ad-showing")) {
let video = document.querySelector("video");
if (!isNaN(video.duration)) video.currentTime = video.duration;
else document.querySelector(".ytp-ad-skip-button-container").click();
}
}, 1000);
El script en sí es muy simple: registra un evento que se ejecuta cada un tiempo determinado. Dicho evento tiene 2 partes principales:
1 - Detectar cuándo hay un anuncio activo, obtener el nodo HTML correspondiente al video y llevarlo automáticamente hasta el final.
2 - Detectar el botón que sale sobre el reproductor para cerrar anuncios estáticos, y presionarlo automáticamente.
Puesto que esta lógica se ejecuta cíclicamente cada un tiempo establecido, es posible que un anuncio se reproduzca durante un máximo de dicho tiempo. En el script se puede ver que lo he puesto cada 1000 milisegundos, pero podéis cambiarlo según vuestras preferencias.
Tened en cuenta que el evento seguirá activo hasta que la pestaña actual de Chrome (aquélla donde se reproduce YouTube, y en la cuál hay que ejecutar el script) navegue hacia otra página, o se actualize. Esto no incluye abrir otros videos, o ir hacia la página principal de YouTube mediante su logo en la web. Dichas acciones se pueden realizar tantas veces como se desee sin necesidad de ejecutar el script de nuevo, gracias al mecanismo que usa YouTube para navegar de un contenido a otro, sin recargar completamente la página.
Me imagino que este será el mismo concepto que sigan los Ad Blockers. Sin embargo, al no requerir ninguna extensión, resulta en una instalación más limpia y supongo que será bastante más difícil de detectar
.
Un saludo,
~Sky