viernes, 15 de febrero de 2019

Comprimiendo Hosts-File StevenBlack


Compactar Hosts-File StevenBlack . . . ¿como?

Esto ya lo hecho varias veces para el Local-Proxy Privoxy .. La presente entrada al Blog es para dar la idea general al interesado de como realizarlo para su metodo de bloqueo favorito; claro con su adecuada adaptacion.


https://github.com/StevenBlack/hosts
Extending and consolidating hosts files from several well-curated sources like adaway.org, mvps.org, malwaredomainlist.com, someonewhocares.org, and potentially others.

Hosts-File StevenBlack. Alimentado con listas de bloqueo de increibre reputacion y tambien con participacion de sus fieles usuarios. Su archivo txt ya rebasa los 1.5 Mb . . . como aligerar ? . . . Utilizando Palabras-Clave

Palabras-Clave. La densidad de keywords es el porcentaje de veces que aparece una palabra (o serie de palabras) en el conjunto del texto frente al número de palabras totales.


Densidad de keywords . . mis WildCards (comodines). Un comodín coincidirá con las solicitudes de nombres de dominio que nos interese. A wild-card in card games is one that may be used to represent any other playing card, En vez de tener todas las cartas de naipes solo necesitas las suficientes que den coincidencias con las que te interesen.
Haciendo uso de Power-Shell . . .
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
# llega a tardar . . . 1:30 Hrs; anque depende de su equipo.
# ---------------------------- --------------------------
# Descargando de https://github.com/StevenBlack/hosts . . . . . . Unified hosts + gambling + porn
# Note que en mi caso solo doy salida por el proxy señalado . . si no utiliza remuevalo
Invoke-WebRequest -Proxy 'http://127.0.0.1:8118' "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn/hosts" -OutFile "StevenBlackhosts.txt"
# ---------------------------- --------------------------
#  Dejando las puras urls Steven Black
Get-Content "StevenBlackhosts.txt" | Select-Object -Skip 30 | Foreach-Object {$_ -Replace('^0.0.0.0 ', '')} | Where-Object {$_ -notmatch '#'} | ? {$_.trim() -ne "" } | foreach { $_ + '/' } | Set-Content "StevenBlackhosts-urls.txt"
#
# determinar densidad de palabras del hosts
$contents = Get-Content "StevenBlackhosts-urls.txt"
$words = $contents.split(" .,?()") | Where-Object {$_} # this removes any empties/spaces
($words | Group-Object | Sort-Object -Property Count -Descending | Format-Table name,count -auto )   | select -First 200 | Out-File "SBtmp0.tmp"
# selecciono solo 200 por que es cansado y es mejor ir avanzando despacio
# ---------------------------- --------------------------
# limpiando de datos conocidos y que afectan demasiado
Get-Content "SBtmp0.tmp" |
Where-Object {$_ -notmatch '^.+\/'} |
Where-Object {$_ -notmatch '^.  '} |
Where-Object {$_ -notmatch '^www '} |
Where-Object {$_ -notmatch '^[a-z0-9][a-z0-9] '} |
Where-Object {$_ -notmatch '^cdn '} |
Where-Object {$_ -notmatch '^api '} |
Where-Object {$_ -notmatch '^com '} |
Where-Object {$_ -notmatch '^media '} |
Where-Object {$_ -notmatch '^tumblr '} |
Where-Object {$_ -notmatch '^static '} |
Where-Object {$_ -notmatch '^blogspot '} |
Where-Object {$_ -notmatch '^taboola '} |
Where-Object {$_ -notmatch '^pixel '} |
Where-Object {$_ -notmatch '^cloudfront '} |
Where-Object {$_ -notmatch '^amazonaws '} |
Where-Object {$_ -notmatch '^thumblogger '} |
Where-Object {$_ -notmatch '^akamaihd '} |
Where-Object {$_ -notmatch '^blog '} |
Where-Object {$_ -notmatch '^img '} |
Where-Object {$_ -notmatch '^images '} |
Where-Object {$_ -notmatch '^yahoo '} |
Where-Object {$_ -notmatch '^secure '} |
Where-Object {$_ -notmatch '^www\d '} |
Where-Object {$_ -notmatch '^thumblogger '} |
Where-Object {$_ -notmatch '^download '} |
Where-Object {$_ -notmatch '^content '} |
Where-Object {$_ -notmatch '^data '} |
Where-Object {$_ -notmatch '^delivery '} |
Where-Object {$_ -notmatch '^web '} |
Where-Object {$_ -notmatch '^search '} |
Where-Object {$_ -notmatch '^galleries '} |
Where-Object {$_ -notmatch '^engine '} |
Where-Object {$_ -notmatch '^mail '} |
Where-Object {$_ -notmatch '^net '} |
Where-Object {$_ -notmatch '^top '} |
Where-Object {$_ -notmatch '^video '} |
Where-Object {$_ -notmatch '^cdn\d '} |
Where-Object {$_ -notmatch '^online '} |
Where-Object {$_ -notmatch '^org '} |
Set-Content "SBtmp1.tmp"
# en ..:: "SBtmp1.tmp"  puede ver como resultaron sus KeyWords; use Notepaq
#
# 1- de "SBtmp1.tmp" dejar solo las palabras
Get-Content "SBtmp1.tmp" | Select-Object -Skip 3 | Foreach-Object {$_ -Replace('\d+$', '')} | Foreach-Object {$_ -Replace('\s+$','')} | ? {$_.trim() -ne "" } | Set-Content "SBtmp2.tmp"
# 2- de "SBtmp2.tmp" convertir a REGEX
Get-Content "SBtmp2.tmp" | Foreach-Object {$_ -Replace('\.\.\.$', '.+')} | foreach {"(^|\.)" + $_ } | foreach { $_ + "($|\/|\.)" } | Set-Content "SBtmp3.tmp"
# 3- a cada palabra buscar y poner los resultados
$WC = Get-Content "SBtmp3.tmp"
$WCA = Get-Content "StevenBlackhosts-urls.txt"
$results =Foreach($WCc in $WC)
{
$find = $WCA | Select-String $WCc
@( "---------------------------------------------------" )
@( "Palabra-clave..::" +"$WCc ", "$find")
@( "---------------------------------------------------" )
}
$results | Out-File "Revision.tmp"
(Get-Content "Revision.tmp") -replace '\s+',"`n" | Set-Content "Revision1.tmp"
#
# analisar resultados "Revision1.tmp". Aqui determinas como armaras tus WildCards
#
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------

Como lucen mis KeyWords . . .

Determinando como armar las WildCards. Analisar resultados "Revision1.tmp"
Notese como veo estan armadas el grueso de urls afeactados .. hay que tener en mente que las palabras cortas llegan a afectar demasiado por lo que se debe complementer observando atentamente los encabezados afectados.





En Keywords .. Mientras mas largas mejor; sin embargo no es una regla general como ejemplo la  palabra "download" . .  . . . . . ojo las KeyWords los adapto para Privoxy usted adapte para su metodo de bloqueo favorito. . . . que tenga una  "Feliz caceria".