hosty: Script para eliminar publicidad en cualquier navegador

Desde que probé la app AdAway para Android busque lo mismo para Linux, pero no lo encontré, si hay soluciones similares como el ya publicado aquí Script para eliminar publicidad en cualquier navegador, pero no es exactamente lo busco. ¿Cual es la diferencia? AdAway toma varias fuentes, las mezcla, quita lineas duplicadas y limpia el archivo.

Y además los scripts que encontraba no usaban tu archivo hosts original, es decir que las configuraciones de tu archivo hosts no estaban en el archivo hosts generado. Así que buscando encontré un script que se acercaba mucho, lo edite y lo cambie para por fin lograr exactamente lo que quería, el resultado de esto es hosty, así lo llame.

¿Ventajas frente a AdBlock y demás extenciones de navegadores? Además de que esto funciona en todo el sistema operativo de una vez, se evita el uso de recursos de este tipo de extensiones.

Requisitos:

Requiere cURL y Wget

Instalamos los requisitos:

Ubuntu/Mint/Debian:
$ sudo apt-get install curl wget

Arch/Manjaro/Antergos:
$ sudo pacman -S curl wget

Fedora/RHEL/CentOS:
$ sudo yum install curl wget

SUSE:
$ sudo zypper in curl wget

Instalar hosty:

$ sudo rm /usr/local/bin/hosty ; sudo wget -c https://github.com/juankfree/hosty/raw/master/hosty -O /usr/local/bin/hosty ; sudo chmod +x /usr/local/bin/hosty

Ahora lo ejecutamos (Recuerden ejecutarlo al menos 1 vez por semana o por mes para tener su archivo hosts actualizado y que bloquee los nuevos sitios de publicidad):
$ hosty

Restaurar archivo hosts original

$ sudo cp /etc/hosts.original /etc/hosts

Desinstalar el script

$ sudo rm /usr/local/bin/hosty

Tip: Si quieren modificar el archivo hosts les recomiendo que modifiquen el archivo /etc/hosts.original y luego correr hosty, de esta forma hosty generara el archivo hosts con sus configuraciones personales (Hacer esto si ya corrieron hosty alguna vez, no antes.).

Todo el código del script disponible en mi GitHub.

Saludos!


59 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Jorgicio dijo

    No olviden agregarlo al Cron, también. Yo lo hice para que haga esa pega por mí.

    Lo acabo de probar, y funciona a la perfección. Incluso me atrevería a decir que funciona mejor que el método con daemons como Squid o Privoxy.

    ¡Se agradece!

    1.    Jorgicio dijo

      Una duda, sí:

      ¿Cómo lo hago para contribuir con mi lista de ads bloqueados? Subiré algunos a mi github que acabo de probar y funcionan.

      El drama también está en que queda el espacio (section) con un espacio con un aviso de que «no se puede conectar». Se agradece la ayuda 😀

      1.    juankfree dijo

        Me llego el issue, ya fue incluido, ejecuta hosty para actualizar el hosts. Se toman directamente de tu repositorio.

  2.   babel dijo

    Maravilloso método. Simple y fácil. Gracias.

  3.   Chaparral dijo

    Gracias por el aporte. Funciona.

  4.   ThecaTTony dijo

    Muchas gracias por tu trabajo, lo voy a probar.

  5.   Joaquin dijo

    Buen post! Creo que escribiste mal un comando si no me equivoco:

    sudo cp /etc/hosts.original /etc/hosts

    ¿no debería ser al revés?

    sudo cp /etc/hosts /etc/hosts.original

    1.    juankfree dijo

      No, esta bien escrito es para restaurar el archivo original. Los únicos pasos necesarios son instalar y ejecutar, los otros son para volver al hosts original y para desinstalar el programa.

      1.    Joaquin dijo

        Sí, es que no había visto el código de tu script. Ahora entiendo que el script hace una copia del original llamada «hosts.original» y yo te endí mal. Pensé que era para hacer la copia antes de ejecutar el script. Saludos!

  6.   soymicmic dijo

    Muy bueno, me gusta mucho.

    La única sugerencia que veo es en el punto «Parsing, cleaning, de-duplicating, sorting…» incluir ahí un fichero de «lista blanca» o excepciones

    1.    juankfree dijo

      Listo, desde este momento podes incluir excepciones en /etc/hosts.whitelist una por linea. Puede ser la dirección sola o con 0.0.0.0 o con 127.0.0.1 al principio.

  7.   ianpocks dijo

    Funciona super bien al menos de momento!!!

    Mil Gracias 🙂

  8.   Bert dijo

    Estupendo. Justo lo que necesitaba. En Kontact era imposible abrir el navegador sin la retahila de anuncios colgados del articulo a leer.
    Gracias.

  9.   Xurxo dijo

    Gracias por publicar el script.
    Es fácilmente auditable, editable y a mi me evita tener que actualizar mi lista en /etc/hosts cada poco.

  10.   rawBasic dijo

    Muuy bueno. Gracias por compartir. Saludos argentinos.

  11.   Martin dijo

    Una pregunta, este metodo es detectable por webs anti adblocks que pululan por la web?

    1.    juankfree dijo

      Si es detectable, hasta ahora en una sola web tuve este problema.

      1.    juankfree dijo

        Lo solucione agregando la web a la whitelist.

      2.    Martin dijo

        Gracias por la respuesta y por la herramienta.

  12.   xpt dijo

    Muy bueno!!
    Gracias!!

  13.   Pegasusonline dijo

    Que bueno que esta este script!!!

    Como sugerencia te diria para mejorar la implementacion y masificacion del script es que en las instrucciones, utilizar git clone / git pull asi todos nos beneficiamos de las actualizaciones !!

    Muchas gracias y sigue asi!!!

    Saludos
    PegasusOnline

    1.    juankfree dijo

      No uso git para esto pero el script corre SIEMPRE actualizado automáticamente desde el día 0. Con esta simple linea siempre corre actualizado.
      https://github.com/juankfree/hosty/blob/master/hosty

      Saludos! 🙂

  14.   moa dijo

    En que momento restauraria el archivo host original? o no tengo porque restaurarlo pues ese paso no lo hice, como lo agrego al cron, y además como modificaria el hosts.original, de que forma valla 😀

    1.    Juank dijo

      Exacto, restaurar el host original obviamente no hay que hacerlo.

      Con respecto al cron, no lo uso con cron, Google seguramente tiene muy buenos tutoriales, esta en mis planes extender hosty, interfaz grafica, cron, etc. pero a futuro.

      Para modificar hosts.original:
      En una terminal: $ sudo EDITOR-DE-TEXTO-FAVORITO /etc/hosts.original

      Saludos!

  15.   cyttorak dijo

    Hola

    He intentado mejorar tu script y lo he dejado así: https://github.com/cyttorak/hosty/blob/master/hosty.sh
    ¿Qué te parece?
    Es la primera vez que hago un fork en github así que por favor avísame si debería haberle cambiado el nombre al script para respetar tu autoría o añadir algún reconocimiento o basta como esta.
    Gracias.

    1.    Juank dijo

      Hola!
      Te explico como se procede normalmente en Github cuando queres aportar a un proyecto 🙂
      1) Hacer un fork – Hecho
      2) Modificar lo deseado, manteniendo la compatibilidad con el proyecto original – A medias, modificaste cosas que no corresponden en hosty original, creo que me entendes a lo que me refiero, y por favor mantén todos los textos en ingles.
      3) Hacer un pull request al proyecto original, para hacer esto debes ir a tu repositorio, ir a Pull Requests https://i.imgur.com/Y1PMKST.png luego a New pull request http://i.imgur.com/ljhaIdH.png y explicar todos los cambios realizados
      4) Luego yo acepto el pull y listo, se actualiza hosty original con tu nombre de usuario como autor.

      Muchas gracias por el interés, si te quieres contactar rápidamente conmigo en mi blog tenes mis redes sociales http://juankblog.tk/ preferentemente por Twitter, o G+ si no tienes. Saludos!

      1.    cyttorak dijo

        Hola
        Ya he modificado el mensaje que se me quedo en español.
        Sobre el punto 2 de lo de la compatibilidad no se a que te refieres ¿es por el uso del awk?
        Probablemente a estar todo el día fuera, así que mañana te hago el pull
        Muchas gracias. Hasta luego.

    2.    Juank dijo

      Me refiero a los cambios en README.md, hosty e install.sh, no son compatibles con el proyecto. Regresa a los archivos originales.

    3.    Juank dijo

      Listo, adapte el readme y el paquete del aur al codigo nuevo e hice mas legibles los echo.

      Saludos y gracias por tu colaboración al proyecto, viva el software libre! :D.

      1.    cyttorak dijo

        Una pregunta ¿por que se excluyen los dominios que hay en la linea 42 de https://github.com/juankfree/hosty/blob/master/hosty.sh mediante el sed? ¿No supone eso una whitelist al margen de la que haga el usuario?

    4.    Juank dijo

      Hosty es un bloqueador de publicidad, así lo pensé yo, si bloquea webs de forma que es imposible acceder al contenido, se transforma en una censura autoimpuesta y se aleja de ser un bloqueador de anuncios, aunque se muestren mas anuncios, al menos de esta forma puedo acceder a las webs, ya que la idea es poder usar todas las webs, aunque signifique ver publicidad.

      Se usa sed porque… no se, funciono en el momento que lo escribí simplemente, la idea seria usar el mismo método que el archivo whitelist, y que el usuario decida con el parametro -a/–all si quiere bloquear todo o no, aunque creo que no se puede tomar parámetros sin modificar https://github.com/juankfree/hosty/blob/master/hosty o si?

      1.    cyttorak dijo

        He hecho la prueba y si se pude.
        Mira http://back.host22.com/ej.sh
        y ejecuta
        bash <(curl -s http://back.host22.com/ej.sh) uno dos tres cuatro
        la salida sera:
        Param : uno
        Param : dos
        Param : tres
        Param : cuatro

        Dentro de un rato te haré otro pull con algunas mejoras

      2.    cyttorak dijo

        He hecho la prueba y si se pude. Ejecuta
        bash <(curl -s back.host22.com/ej.sh) uno dos tres cuatro
        y la salida sera:
        Param : uno
        Param : dos
        Param : tres
        Param : cuatro

        Dentro de un rato te haré otro pull con algunas mejoras

      3.    cyttorak dijo

        He hecho la prueba y si se pude. Ejecuta
        bash <(curl -s back . host22 . com / ej.sh) uno dos tres cuatro #quita los espacios de la url, lo escribo asi porque si no no se me publica el comentario
        y la salida sera:
        Param : uno
        Param : dos
        Param : tres
        Param : cuatro

        Dentro de un rato te haré otro pull con algunas mejoras

  16.   snock dijo

    Supongo que seria mucho pedir que la ventana de la publicidad desaparezca como hace adblock ?¿ 😛 por pedir que no quede . Por lo demas el script va de fabula y se nota el consumo de ram y mas con 20 pestañas abiertas. Se puede añadir mas listas ?

    1.    Yukiteru dijo

      No es dificil, puedes usar un style CSS personalizado en Firefox para evitar que queden esas ventanas, por aca hay información sobre el procedimiento, http://foro.desdelinux.net/viewtopic.php?pid=22259#p22259

      El metodo en esencia es el mismo, solo que se le agrega un paso más para evitar la fea página que aparece diciendo que la página web no esta disponible. Espero te sea de ayuda.

  17.   Patricio dijo

    Muchas Gracias, es lo que buscaba para Spotify, ¿Sera posible ocultar el recuadro de publicidad del cliente Linux?. ¿Es necesario agregarlo a Cron?

    Saludos,

    1.    Juank dijo

      De nada 🙂
      Desconozco, pero es parte de la propia app, no creo que sea muy fácil
      No, yo actualizo siempre manualmente
      Saludos :D!

      1.    lesco dijo

        Lo tengo instalado desde AUR, pero no funciona para nada. ¿Qué podrá ser?

      2.    lesco dijo

        Con las instrucciones de este post tampoco me funciona.

      3.    Juank dijo

        Instálalo desde el AUR:
        $ yaourt -S hosty

        y ejecútalo:
        $ sudo hosty

        Saludos

      4.    lesco dijo

        Lo hago de esa manera, pero no funciona para nada. No veo que filtre publicidad alguna. No se cuál será el problema. De momento sigo con AdBlock Plus.
        Gracias.

      5.    Yukiteru dijo

        @lesco revisa que el archivo /etc/hosts contenga las nuevas entradas creadas por script. De ser posible y para revisar, pasa el contenido del archivo por http://paste.desdelinux.net/

      6.    lesco dijo

        Diría que el archivo /etc/hosts está prácticamente vacío. Sólo tiene estas líneas:

        # Ad blocking hosts generated lun mar 2 20:05:48 ART 2015
        # Don’t write below this line. It will be lost if you run hosty again.

        Cuando ejecuto «sudo hosty» obtengo este resultado:
        http://paste.desdelinux.net/?dl=5110

        Saludos.

      7.    Juank dijo

        Ejecuta el comando:
        $ ls -lah /etc/hosts

        y pega la salida aquí.

    2.    lesco dijo

      @JuanK, gracias por la atención. Esta es la salida de tal comando:

      -rw-r–r– 1 root root 0 mar 2 20:15 /etc/hosts

      1.    Juank dijo

        Ejecuta:
        $ hosty –debug

        y pega la salida de ese comando y algunas de las primeras lineas del archivo que se indica despues de «You can see the results in»

      2.    Juank dijo

        El comando es «hosty –debug»
        Se pasó mal, es «hosty» seguido de dos guiones medios «-» y » debug»

      3.    Juank dijo

        hosty espacio guion medio guion medio debug

      4.    lesco dijo

        La salida de «hosty –debug»:

        http://paste.desdelinux.net/?dl=5112

        El archivo mencionado luego de “You can see the results in” es /tmp/tmp.viLL774YmV en mi caso, y sus únicas líneas son:

        # Ad blocking hosts generated mié mar 4 23:38:18 ART 2015
        # Don’t write below this line. It will be lost if you run hosty again.

        No hay más líneas en el archivo.

  18.   Guille Monor dijo

    Hola Juan!

    mis agradecimientos por este gran desarrollo llamado hosty.
    fui encontrando direcciones que quisiera agregar a hosty, algunos nuevos ads, como podria yo y otros colaborar para que los agregues al «repositorio» de ads ?

    saludos desde ARG

    Guille

  19.   Felipe dijo

    hola,
    ¿se puede poner eso en un smarphone que tiene ubuntu, o hay que cambiar algo para adaptarlo? y si la respuesta es si, entonces ¿que tamaño tiene mas o menos despues de estar puesto? para saber si tengo espacio suficiente.
    gracias

  20.   Pablo dijo

    El guión da error en distros como Gentoo que por defecto no usan sudo. Deberías hacer una versión sin sudo e indicar que el cronjob habrá que crearlo en el cron del administrador.

    Por lo demás, excelente idea. Hacía falta algo cómodo como Adaway pero para Linux.
    Saludos.

  21.   Marcelo dijo

    Muchisimas gracias!!! Muito obrigado!!!

  22.   gato2707 dijo

    A principios de febrero de 2016 es programa fue alterado para convertirlo en instrumento de censura. Una explicación más extensa en:

    https://elgatoconlinux.wordpress.com/2016/02/20/bloquear-publicidad-no-es-lo-mismo-que-el-activismo-politico-o-la-censura-moralina/

    1.    S dijo

      Hola. Soy el autor del cambio y por tanto de haber metido la pata, pues ese cambio es un error no intencionado.

      El script fue modificado como se explica en el commit para permitir dos cosas
      1- Que el script pudiera usar fuentes en zip y en .7z
      2- Que el usuario pudiera agregar fuentes sin necesidad de meterlas en el script
      (puedes verificarlo en el comentario del merge que introduce el error que mencionas).

      Primero encontré varias fuentes en zip y 7z y pensé que era interesante que el script pudiera manejarlas, así que las agregue (metí todas las que encontré para probar mejor, por eso hay de todo) para probar las modificaciones necesarias para que pudiera descomprimirlas y añadirlas al resultada.

      Luego quise probar también la lista aede y la agregué.

      Durante todo esto me di cuenta que esto me impedía subir los cambios al proyecto porque estas fuentes, como tu dices, no deberían estar en el script. Así que de hay surgió la otra modificación que te comentaba: que el usuario pudiera agregar fuentes (via ~/.hosty) sin necesidad de modificar el script.

      Por falta de tiempo todos estos cambios los hice de manera discontinuada y se ve que o se me olvido quitar las fuentes del script antes de hacer el merge.
      Para colmo de la mala suerte, me aceptaron el «pull request» sin darse cuenta de este error.

      Creo que es comprensible que nadie iba a incluir esas fuentes esperando que ni el autor original que tiene que aceptar el pull request ni los usuarios finales se iban a dar cuenta. Ha sido simplemente un error.

      Espero haber aclarado lo sucedido y te pido por favor que modifiques tu post para que quede reflejado.

      Muchas gracias y siento las molestias.

  23.   ivan dijo

    hola Juan! yo uso este script desde que lo posteaste… pèro ahora no quita mas las publicidades de youtube….

    podrias arreglarlo??

    gracias!!

    saludos!

  24.   Predatux dijo

    Buenas.
    Utilizo hosty en Gnu/Linux desde hace ya bastante tiempo. Estoy intentando hacerlo funcionar en Mac, podrías echarme una mano?
    Saludos