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!
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!
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 😀
Me llego el issue, ya fue incluido, ejecuta hosty para actualizar el hosts. Se toman directamente de tu repositorio.
Maravilloso método. Simple y fácil. Gracias.
Gracias por el aporte. Funciona.
Muchas gracias por tu trabajo, lo voy a probar.
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
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.
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!
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
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.
Funciona super bien al menos de momento!!!
Mil Gracias 🙂
Estupendo. Justo lo que necesitaba. En Kontact era imposible abrir el navegador sin la retahila de anuncios colgados del articulo a leer.
Gracias.
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.
Muuy bueno. Gracias por compartir. Saludos argentinos.
Una pregunta, este metodo es detectable por webs anti adblocks que pululan por la web?
Si es detectable, hasta ahora en una sola web tuve este problema.
Lo solucione agregando la web a la whitelist.
Gracias por la respuesta y por la herramienta.
Muy bueno!!
Gracias!!
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
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! 🙂
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 😀
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!
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.
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!
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.
Me refiero a los cambios en README.md, hosty e install.sh, no son compatibles con el proyecto. Regresa a los archivos originales.
ya esta https://github.com/juankfree/hosty/pull/3
🙂
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.
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?
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?
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
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
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
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 ?
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.
Muchas Gracias, es lo que buscaba para Spotify, ¿Sera posible ocultar el recuadro de publicidad del cliente Linux?. ¿Es necesario agregarlo a Cron?
Saludos,
De nada 🙂
Desconozco, pero es parte de la propia app, no creo que sea muy fácil
No, yo actualizo siempre manualmente
Saludos :D!
Lo tengo instalado desde AUR, pero no funciona para nada. ¿Qué podrá ser?
Con las instrucciones de este post tampoco me funciona.
Instálalo desde el AUR:
$ yaourt -S hosty
y ejecútalo:
$ sudo hosty
Saludos
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.
@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/
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.
Ejecuta el comando:
$ ls -lah /etc/hosts
y pega la salida aquí.
@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
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»
El comando es «hosty –debug»
Se pasó mal, es «hosty» seguido de dos guiones medios «-» y » debug»
hosty espacio guion medio guion medio debug
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.
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
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
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.
Muchisimas gracias!!! Muito obrigado!!!
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/
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.
hola Juan! yo uso este script desde que lo posteaste… pèro ahora no quita mas las publicidades de youtube….
podrias arreglarlo??
gracias!!
saludos!
Buenas.
Utilizo hosty en Gnu/Linux desde hace ya bastante tiempo. Estoy intentando hacerlo funcionar en Mac, podrías echarme una mano?
Saludos