Block specific URL on web browsers

I want to block certain URLs on browsers. I don't want to block whole site. For example, I want to block Google Reader, but not whole Google domain. Is there any way I can do it?


Solution 1:

The answer will only SLIGHTLY differ by the operating system you are using. I'm running Ubuntu on a powerpc :p but in general the same rules apply on windows and mac as well. If these instructions do not work for you then I will adapt this answer for your OS. For now here is the Linux method.

The only way I have found after hours of searching, to do this, is to install privoxy.

Once you install privoxy you need to edit the /etc/privoxy/config file in the following manner:
1) Find where it says

#listen-address  localhost:8118

and uncomment this line so that it says

listen-address  localhost:8118

2) Add the following lines to the bottom of this config file:

actionsfile blacklist.action   
actionsfile whitelist.action   

3) Now you need to create these action files in a text editor as root: a) gksu gedit /etc/privoxy/blacklist.action and add the following

{ +block }
www.apple.com/itunes
twil.tv/category/video
www.url.com/page

anything you add under the {+block} line will be blocked

b) Respectively you should create the whitelist.action file

gksu gedit /etc/privoxy/whitelist.action

and add the lines

{ -block }
www.google.com

or whatever you find privoxy blocking that you want to protect.

After you have saved the three files you have to restart privoxy:

sudo /etc/init.d/privoxy restart

and you have to make sure that your proxy settings in your browser or in your network configurations are correct, adding localhost as the proxy and 8118 as the port number will be all you need.

The SERIOUS and UNFORTUNATE drawbacks to privoxy is that it is a proxy so all anyone needs to do to stop it working is turn it off, or use a different browser. I am still searching for a way to add privoxy to my router or to somehow run it , not as a proxy, but as my default on port 80, then you could lock down the config files so that no one could change them.

This is the closest you will find to an answer to your problem.

If it doesn't appear to be working at first don't forget to flush your browser's cache because the pages you have blocked may show up from cache even after they have been blocked.

also you might want to turn this off:

make sure that enforce-blocks 1 is set to 1 in the /etc/privoxy/config file

enforce-blocks 1

Otherwise, when the page blocked warning comes up, it will have an option to go to the blocked page anyways despite being blocked and completely make privoxy meaningless.

Solution 2:

If you want to block a specific domain system-wide, you should use the hosts file (See here). So, if you want to block Google Reader, you'd add the following to your hosts file:

127.0.0.1    reader.google.com

However, there are restrictions on this. While you can block subdomains and domains, you can't use the hosts file to block subdirectories (i.e., www.example.com/subdirectory). In the case of Google Reader, one could simply navigate to www.google.com/reader to get around the blocking. A more comprehensive solution may be to use something like Privoxy to control web access.