Ad & Spyware Prevention Using Your Hosts File






3.17/5 (8 votes)
Jan 11, 2006

51724

297
This article explains how you can prevent ads and spyware, using your hosts file.
Introduction
I created this script to automate the process of updating your hosts file from the list contained on http://www.someonewhocares.org/hosts/. Using this hosts file is the best way I have found to "make the internet not suck (as much)" just like it claims to.
The VBScript downloads the web page to a local temp file, parses it so only comments and wanted lines are contained, then puts this file in the proper directory. It also creates a backup copy of the hosts file, and sets the new one to read-only. Just double-click to execute it or if the "all was successful" echo is removed from the end, then it may be run as a Windows scheduled task. I have tested it on Windows 2K, 2003, and XP.
Prevention is better than cleaning, and being able to use hotmail without the "Win Free DVD Player" ad flashing in your face is priceless. Every IT guy should use this!
The Code
'Create objFSO and objIE objects
Set objFSO = CreateObject("Scripting.FileSystemObject")
set objIE=WScript.createobject("internetexplorer.application")
'Determine path to hosts and set strHostsPath to correct path
dim bFolder, strHostsPath
bFolder = objFSO.folderExists("C:\WINDOWS\")
if bFolder = False then
strHostsPath = "C:\WINNT\system32\drivers\etc\"
else
strHostsPath = "C:\WINDOWS\system32\drivers\etc\"
End if
'Create Temp Web file here since
'it needs a few milliseconds to complete
Set TempWebFile = objFSO.CreateTextFile("C:\Temp.html", 2)
'Navigate and wait for page to load
objIE.Navigate ("http://someonewhocares.org/hosts/")
Wscript.Sleep 1000
'If sleep here omitted, an endless loop
'happens on windows 2003
'wait for IE to Download Page before continuing execution
While objIE.Busy: Wend
'Write contents of navigated webpage to local temp Web file
TempWebFile.Write objIE.Document.body.outerHTML
TempWebFile.close 'Close File
'open the local Webpage and read in all lines
set PageText = objFSO.GetFile("C:\temp.html")
set ts = pagetext.OpenAsTextStream(1,-2)
dim ResultLine,ResultComment,ReadLine
'40
'Create output file for parsed data from webpage
Set OutFile = objFSO.OpenTextFile("C:\temp.txt",2,True)
' FileMode = 1=read 2=Write 8=Append
Do while not ts.AtEndOfStream
ReadLine = ts.readline
ResultLine = InStr(Readline, "127.0.0.1")
ResultComment = InStr(Readline, "#")
'Weed out anything but Good lines,
' comments, and blanklines, and write temp file.
if (ResultLine = 1) or (ResultComment = 1) _
or (ReadLine = "") then
OutFile.WriteLine(ReadLine)
end if
Loop
ts.close
OutFile.close 'Close File
'Set host file to normal attributes from whatever it may be
Set objHostsFile = objFSO.GetFile(strHostsPath + "hosts")
objHostsFile.Attributes = 0
'Backup existing hosts file
set BackFile=objFSO.GetFile(strHostsPath + "hosts")
BackFile.Copy strHostsPath + "hosts.bak"
'Copy new hosts file
set NewFile=objFSO.GetFile("C:\temp.txt")
NewFile.Copy strHostsPath + "hosts"
'Delete Temp Files
set DeleteFile=objFSO.GetFile("C:\Temp.html")
DeleteFile.delete
NewFile.delete
'Set new host file attribute to read only
objHostsFile.Attributes = 1
WScript.Echo "Your Hosts File Has Been Updated Successfully!"