Proxy Server host block list is now available at http://goo.gl/jXiOLp, make sure you do not use this in Windows host file.
http://hosts-file.net/ad_servers.txt http://jamesisbored.com/iphone/content/hosts.php http://jansal.googlecode.com/svn/trunk/adblock/hosts http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts;showintro=0&mimetype=plaintext http://someonewhocares.org/hosts/hosts http://sysctl.org/cameleon/hosts http://unbelovedhosts.apk.defim.de/hosts http://winhelp2002.mvps.org/hosts.txt http://www.malwaredomainlist.com/hostslist/hosts.txt http://www.montanamenagerie.org/hostsfile/hosts.txt https://adaway.org/hosts.txt
It’s a good idea to do this script in a directory that is specific to your host file project
#!/bin/bash
clear
echo "Removing old host file downloads - start"
rm host*.txt
rm all.txt
echo "Removing old host file downloads - stop"
echo "Downloading new versions of the host file lists - start"
curl -s -o host1.txt http://goo.gl/A8LzsL
curl -s -o host2.txt http://goo.gl/P1JY6Q
curl -s -o host3.txt http://hosts-file.net/ad_servers.txt
curl -s -o host4.txt http://jamesisbored.com/iphone/content/hosts.php
curl -s -o host5.txt http://jansal.googlecode.com/svn/trunk/adblock/hosts
#curl -s -o host6.txt http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
#curl -s -o host7.txt http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts;showintro=0&mimetype=plaintext
curl -s -o host8.txt http://someonewhocares.org/hosts/hosts
curl -s -o host9.txt http://sysctl.org/cameleon/hosts
curl -s -o host10.txt http://unbelovedhosts.apk.defim.de/hosts
curl -s -o host11.txt http://winhelp2002.mvps.org/hosts.txt
curl -s -o host12.txt http://www.malwaredomainlist.com/hostslist/hosts.txt
curl -s -o host13.txt http://www.montanamenagerie.org/hostsfile/hosts.txt
curl -s -o host14.txt http://www.mvps.org/winhelp2002/hosts.txt
curl -s -o host15.txt https://adaway.org/hosts.txt
curl -s -o host16.txt https://mirror.cedia.org.ec/malwaredomains/immortal_domains.txt
curl -s -o host17.txt https://mirror.cedia.org.ec/malwaredomains/justdomains
#curl -s -o host18.txt https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext
curl -s -o host19.txt https://raw.githubusercontent.com/lewisje/jansal/master/adblock/hosts
curl -s -o host20.txt http://hosts-file.net/hphosts-partial.asp
echo "Downloading new versions of the host file lists - stop"
echo "Combining all lists into one - start"
cat *.txt > all.txt
echo "Combining all lists into one - stop"
echo "Cleaning the list - step 1"
sed -i '/^#/ d' all.txt
echo "Cleaning the list - step 2"
tr '[:upper:]' '[:lower:]' < all.txt > cleaner.txt
echo "Cleaning the list - step 3"
sed -i -e 's|127.0.0.1||' cleaner.txt
echo "Cleaning the list - step 4"
sed -i -e 's|0.0.0.0||' cleaner.txt
echo "Cleaning the list - step 5"
sed -i -e 's|::1||' cleaner.txt
echo "Cleaning the list - step 6"
sed -i -e 's|fe80::1%lo0||' cleaner.txt
echo "Cleaning the list - step 7"
sed -i -e 's/^[[:space:]]*//' cleaner.txt
echo "Cleaning the list - step 8"
sed -i '/^*{/d' cleaner.txt
echo "Cleaning the list - step 9"
cat cleaner.txt | sort | awk '!a[$0]++' > all.txt
echo "Cleaning the list - step 10"
rm clean*
echo "Cleaning the list - step 11"
sed -i '/^\s*$/d' all.txt
echo "Cleaning the list - step 12"
sed -i -e 's/^/0.0.0.0 /' all.txt
echo "Saving new hosts file"
cp all.txt hosts
echo "Saving new hosts lists file"
cat hosts | sort | sed -e 's|0.0.0.0 ||' > host
Make sure you chmod the shell script
chmod +x update_hosts.sh
Mac OS X Example – Open Terminal
cd ~/Downloads curl -O http://winhelp2002.mvps.org/hosts.txt sudo cp /private/etc/hosts /private/etc/hosts.bk sudo cp ~/Downloads/hosts.txt /private/etc/hosts
Windows PowerShell first create a text file from the list above or with your own list and save it as C:\Temp\hosts\ServerList.txt
# Directory Parameter
$FileDirectory = "C:\Temp\hosts\lists\"
# If directory doesn't exist create the directory
if((Test-Path $FileDirectory) -eq 0)
{
mkdir $FileDirectory;
# cd $FileDirectory;
}
$hostfiltered = ""
clear
$ServerList = (Get-Content "C:\Temp\hosts\ServerList.txt") | Sort-Object
$ServerNumber = 1
write-host $ServerList.count total host lists read from file
foreach ($line in $ServerList)
{
# write-host $line
# We assume the file you download is named what you want it to be on your computer
$FileName = [System.IO.Path]::GetFileName($line)
$FullFilePath = "$($FileDirectory)Server_$($ServerNumber).txt"
# write-host $FullFilePath
# Give a basic message to the user to let them know what we are doing
Write-Host "`r`nDownloading '$line' to '$FullFilePath'"
# Download - Start
$uri = New-Object "System.Uri" "$line"
$request = [System.Net.HttpWebRequest]::Create($uri)
$request.set_Timeout(15000) #15 second timeout
$response = $request.GetResponse()
$totalLength = [System.Math]::Floor($response.get_ContentLength()/1024)
$responseStream = $response.GetResponseStream()
$targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList $FullFilePath, Create
$buffer = new-object byte[] 10KB
$count = $responseStream.Read($buffer,0,$buffer.length)
$downloadedBytes = $count
while ($count -gt 0)
{
[System.Console]::Write("`r`nDownloaded {0}K of {1}K", [System.Math]::Floor($downloadedBytes/1024), $totalLength)
$targetStream.Write($buffer, 0, $count)
$count = $responseStream.Read($buffer,0,$buffer.length)
$downloadedBytes = $downloadedBytes + $count
}
$targetStream.Flush()
$targetStream.Close()
$targetStream.Dispose()
$responseStream.Dispose()
# Give a basic message to the user to let them know we are done
Write-Host "`r`nDownload complete"
# Download - Stop
$ServerNumber = $ServerNumber + 1
}
cd C:\Temp\hosts\lists
Write-Host "`r`nCombining Lists"
$FullFilePathFiltered = "C:\Temp\hosts\lists\combined_files.txt"
$FullFilePathFiltered1 = "C:\Temp\hosts\lists\combined_files1.txt"
If (Test-Path $FullFilePathFiltered){
Remove-Item $FullFilePathFiltered
}
If (Test-Path $FullFilePathFiltered1){
Remove-Item $FullFilePathFiltered1
}
Get-ChildItem -recurse -include "*.txt" | % { Get-Content $_ -ReadCount 0 | Add-Content $FullFilePathFiltered }
Remove-Item C:\Temp\hosts\lists\Server_*
Write-Host "`r`nCombined Lists"
Write-Host "`r`nCleaning File - Remove Localhost"
(get-content $FullFilePathFiltered) | select-string -pattern 'localhost' -notmatch | Set-Content $FullFilePathFiltered
(get-content $FullFilePathFiltered) | select-string -pattern 'broadcasthost' -notmatch | Set-Content $FullFilePathFiltered
Write-Host "`r`nCleaning File - Remove Localhost - Done"
Write-Host "`r`nCleaning File - Replace Tabs with space"
cat $FullFilePathFiltered | %{$_ -replace '[\t]',' '} > $FullFilePathFiltered1
Write-Host "`r`nCleaning File - Replace Tabs with space - Done"
Write-Host "`r`nCleaning File - Replace Double Spaces"
cat $FullFilePathFiltered1 | %{$_ -replace ' {2,}',' '} > $FullFilePathFiltered
Write-Host "`r`nCleaning File - Replace Double Spaces - Done"
Write-Host "`r`nCleaning File - Remove Empty Lines"
(Get-Content $FullFilePathFiltered ) | Where { $_ } | Set-Content $FullFilePathFiltered1
Write-Host "`r`nCleaning File - Remove Empty Lines - Done"
Write-Host "`r`nCleaning File - Remove localhost ::1"
(Get-Content $FullFilePathFiltered1) | Where { $_ -notmatch "^:" } | Set-Content $FullFilePathFiltered
Write-Host "`r`nCleaning File - Remove localhost ::1 - Done"
Write-Host "`r`nCleaning File - Remove comments"
(Get-Content $FullFilePathFiltered) | Where { $_ -notmatch "^#" } | Set-Content $FullFilePathFiltered
Write-Host "`r`nCleaning File - Remove comments - Done"
Write-Host "`r`nCleaning File - Replace 0.0.0.0 with 127.0.0.1"
cat $FullFilePathFiltered | %{$_ -replace "0.0.0.0","127.0.0.1"} > $FullFilePathFiltered1
cat $FullFilePathFiltered1 | %{$_ -replace "188.165.196.30","127.0.0.1"} > $FullFilePathFiltered
cat $FullFilePathFiltered | %{$_ -replace "46.246.119.139","127.0.0.1"} > $FullFilePathFiltered1
Write-Host "`r`nCleaning File - Replace 0.0.0.0 with 127.0.0.1 - Done"
Write-Host "`r`nCleaning File - Remove Duplicates"
(get-content $FullFilePathFiltered1) |Sort-Object | get-unique| out-file $FullFilePathFiltered
Write-Host "`r`nCleaning File - Remove Duplicates - Done"
Clear-Content $FullFilePathFiltered1
Add-Content $FullFilePathFiltered1 (get-content "C:\Temp\hosts\header.txt")
Add-Content $FullFilePathFiltered1 (get-content $FullFilePathFiltered)
Write-Host "`r`nFile Cleaned"
#Only uncomment these if the lists combined is less than a couple MB otherwise it will make your computer nuts.
#Move-Item "C:\Windows\System32\drivers\etc\HOSTS" "C:\Windows\System32\drivers\etc\hosts.old"
#Move-Item $FullFilePathFiltered1 "C:\Windows\System32\drivers\etc\hosts"
Reference: http://winhelp2002.mvps.org/hosts.htm
Originally Posted on July 29, 2013
Last Updated on November 15, 2016
Last Updated on November 15, 2016
All information on this site is shared with the intention to help. Before any source code or program is ran on a production (non-development) system it is suggested you test it and fully understand what it is doing not just what it appears it is doing. I accept no responsibility for any damage you may do with this code.