Скрипт переход по внешней ссылке на javascript

На одном из коммерческих сайтов, в back-end панеле для секретуток и офисного плангтона требовалось постить мануал ссылки на сторонние веб ресурсы. Но учитывая, что сторонние веб ресурсы могут палить переходы и в некоторой степени злоупотребить этим, решили подстраховаться и сделать заглушку для перехода по внешней ссылке. Так как эта задача является тривиальной, нужно сделать максимально просто и не используя серверного программного обеспечения. Зная, что на стороне клиента основным языком является javascript, этим и можно воспользоваться для переадресации на другой сайт.

Серверные языки использовать для перехода по внешней ссылке требуется в том случае если нужно контролировать большой поток публикаций от посещаемой аудитории как например вконтакте или комментарии на сайте. Естественно в таком случае нужно отсеивать нежеланные сайты-ссылки с вирусами и плохим содержимым. В данном случае скрипт на javascript является универсальным для переадресации. Можно как самостоятельно вести на страницу редиректа при написании ресурса или же серверным программным языком (php perl им подобным) фильтровать публикации и заменять ссылки на ссылку со страницей редиректа внешних ссылок.

Короче, создаем страницу для информирования посетителя о переадресации на другой сайт и указываем ей ссылку-url к примеру ref . Добавляем код в заголовок этой страницы между тегами head:

<!-- html, javascript -->
<meta name="robots" content="none" />
<noscript><meta http-equiv="refresh" content="0; url=/"></noscript> <!-- если выключена поддержка скриптов  -->
<script type="text/javascript">
	window.opener = null; // fix control target="_blank"
	if(window.location.search != '') {
		var referUrl = decodeURI(window.location.search.substr(1) + location.hash);
		referUrl = (referUrl.indexOf('://') == -1) ? 'http://' + referUrl : referUrl;
		// хост
		var parser = document.createElement('a');
		parser.href = referUrl;
		var referHostname = parser.hostname;
	} else { 
		window.location.href = '/'; 
	}
	function redirect(referUrl) {
		window.location.href = referUrl;
	}
</script>

Далее между тегами body добавляем код:

<!-- html, javascript -->
<div style="text-align:center;">
    Вы собираетесь перейти на другой сайт <b><script type="text/javascript">document.write(referHostname);</script></b><br>подтвердите
</div>

<div style="text-align:center; margin-top:5%; font-weight:bold">
    <a href="javascript:redirect(referUrl);" onclick="redirect(referUrl);" style="cursor:pointer; display:inline-block; border:1px dashed #E4E4E4; padding:10px;">
        ДА, перейти
    </a>
    <a href="javascript:close();" style="cursor:pointer; display:inline-block; border:1px dashed #E4E4E4; padding:10px; margin-left:50px;">
        НЕТ, вернуться
    </a>
</div>

Таким образом для переадресации на другой сайт, просто ссылаетесь на созданую страницу
добавив в конец знак вопроса а затем дописаваете адрес куда нужно переадресовать.

Правельно было бы, шифровать uri адрес переадресуемого сайта, чтобы ваш же сервер случайным образом не обрабатывал его. Если все же обрабатывает и при переадресации выдает http ошибку 404, удалите в начале переадресуемой строки http://. Скрипт сам добавит этот протокол при переадресации. Убедиться в этом поможет переменная document.write(referUrl);.