Sunday, 25 March 2012

How to: Use the HOSTS file to block websites in Windows?

Windows uses a HOSTS (located in %systemdrive%/windows/system32/drivers/etc) file to maintain a personal list of web addresses. Any time a request is made for a URL, the HOSTS file will be checked first. If a corresponding address is found you will be directed to that IP without first consulting a DNS Server. The original intent of this file was to define where sites exist; we will use it in this context to define where they don’t exist. Lets first look at a HOSTS file entry

127.0.0.1 localhost

This is the loopback address for your machine for those cases where an application needs to reference the local machine by IP address- the loopback address will always be valid. This entry should never be changed.

Now lets add an entry to block

127.0.0.1 www.yahoo.com

We are telling our local machine that Yahoo actually exists on the local machine. Any request for www.yahoo.com will be directed to the local machine and therefore effectively blocked. You could also use the IP of another website if you wanted to be creative.

Let’s take a closer look at a URL http://www.yahoo.com

  • http:// defines the transfer protocol in this case Hyper Text Transport Protocol; this is the standard for viewing websites. Another common protocol is ftp:// for file transfer.
  • www is the host
  • yahoo.com is the domain
  • .com is further classified as the TLD (Top Level Domain)
A HOSTS file entry will disregard the transfer protocol so it isn’t needed. However, the host does play an important role. A webmaster may choose to define a host for his/her website. “WWW” has become the universal standard for the default host. It is just as common to define a site with no host as well. This means that as far as DNS goes www.yahoo.com & yahoo.com are two totally different sites, even though they resolve to the same place. Because of this to effectively block the site, you must also block all hosts. This would usually mean:

127.0.0.1 yahoo.com

127.0.0.1 www.yahoo.com