Remove URL Redirections





Remove URL Redirections

Cut out the middleman and make links point directly to where you want to go.

Many portal sites use redirection links for links that point to other sites. The link first goes to a tracking page on the portal, which logs your click and sends you on your way to the external site. Not only is this an invasion of privacy, but it's also slower, since you need to load the tracking page before you are redirected to the page you actually want to read. This hack detects such redirection links and converts them to direct links that take you straight to the final destination.

The Code

This user script runs on all pages, except for a small list of pages where it is known to cause problems with false positives. It uses the document.links collection to find all the links on the page and checks whether the URL of the link includes another URL within it. If it finds one, it extracts it and unescapes it, and replaces the original URL.

Save the following user script as nomiddleman.user.js:


	// ==UserScript==

	// @name        NoMiddleMan

	// @namespace   http://0x539.blogspot.com/

	// @description Rewrites URLs to remove redirection scripts

	// @include     *

	// @exclude		http://del.icio.us/*

	// @exclude     http://*bloglines.com/*

	// @exclude		http://web.archive.org/*

	// @exclude		http://*wists.com/*

	// ==/UserScript==



	// based on code by Albert Bachand

	// and included here with his gracious permission

	// http://kungfoo.webhop.org/nomiddleman.user.js



	for (var i=0; i<document.links.length; i++) { 

		 var link, temp, start, url, qindex, end; 

		 link = document.links[i];



		 // Special case for Google results (assumes English language)

		 if (link.text == 'Cached' ||

			 /Similar.*?pages/.exec(link.text)) {

			 continue;

		 }



		 temp = link.href.toLowerCase();



		 // ignore javascript links and GeoURL

		 if (temp.indexOf('javascript:') == 0 ||

		 temp.indexOf('geourl.org') != -1) {

			 continue;

		 }



		 // find the start of the (last) real url

		 start = Math.max(temp.lastIndexOf('http%3a'),

				  temp.lastIndexOf('http%253a'),

				  temp.lastIndexOf('http:'));



		 if (start <= 0) { 

			 // special case: handle redirect url without a 'http:' part 

			 start = link.href.lastIndexOf('www.'); 

			 if (start < 10) {

				 start = 0;

			 } else { 

				 link.href = link.href.substring(0, start) + 

				 'http://' + link.href.substring(start);

			 }

		 }



		 // we are most likely looking at a redirection link

		 if (start > 0) {

			 url = link.href.substring(start);



			 // check whether the real url is a parameter 

			 qindex = link.href.indexOf('?'); 

			 if (qindex > -1 && qindex < start) {

			     // it's a parameter, extract only the url

				 end = url.indexOf('&');

				 if (end > -1) {

				 url = url.substring(0, end);

				 }

			 }

			 // handle Yahoo's chained redirections

			 var temp = url;

			 url = unescape(url);



			 while (temp != url) {

				 temp = url;

				 url = unescape(url);

			 }

			 // and we're done

			 link.href = url.replace(/&amp;/g, '&');

		 }

	}


Running the Hack

Before installing the user script, go to http://www.yahoo.com and search for greasemonkey. In the list of search results, each linked page is really a redirect through Yahoo!'s servers, as shown in Figure.

Yahoo! Redirection URL


Now, install the user script (Tools Install This User Script), go back to http://www.yahoo.com, and execute the same search. The link to the search result page now points directly to http://dream.sims.berkeley.edu/~ryanshaw/wordpress/2005/02/18/greasemonkey-stole-your-job-and-your-business-model/, as shown in Figure.

Yahoo! Direct URL


There are a variety of ways that sites can redirect links through a tracking page. This script doesn't handle all of them, but it handles the most common cases and a few special cases used by popular sites (such as Yahoo!). The author maintains a weblog at http://0x539.blogspot.com/ where you can check for updates to this script.


     Python   SQL   Java   php   Perl 
     game development   web development   internet   *nix   graphics   hardware 
     telecommunications   C++ 
     Flash   Active Directory   Windows