Скрипт переход по внешней ссылке на javascript
На одном из коммерческих сайтов, в back-end панеле для секретуток и офисного плангтона требовалось постить мануал ссылки на сторонние веб ресурсы. Но учитывая, что сторонние веб ресурсы могут палить переходы и в некоторой степени злоупотребить этим, решили подстраховаться и сделать заглушку для перехода по внешней ссылке. Так как эта задача является тривиальной, нужно сделать максимально просто и не используя серверного программного обеспечения. Зная, что на стороне клиента основным языком является javascript, этим и можно воспользоваться для переадресации на другой сайт.
Серверные языки использовать для перехода по внешней ссылке требуется в том случае если нужно контролировать большой поток публикаций от посещаемой аудитории как например вконтакте или комментарии на сайте. Естественно в таком случае нужно отсеивать нежеланные сайты-ссылки с вирусами и плохим содержимым. В данном случае скрипт на javascript является универсальным для переадресации. Можно как самостоятельно вести на страницу редиректа при написании ресурса или же серверным программным языком (php perl им подобным) фильтровать публикации и заменять ссылки на ссылку со страницей редиректа внешних ссылок.
- пример: http://ftpn.ru/ref/?https://www.youtube.com/watch?v=GfWzVx7ijvE
- Национальные домены - кириллица, латиница и д.р.
- Популярные протоколы: ftp, http, https, и другие...
- Если не задан протокол добавляет http
- Seo: удерживает поисковых ботов
- Поддерживает все браузеры включая IE6 и выше
- Универсален, подходит для всех: ucoz сайты, динамичные, статичные сайты
- Валидный код
- Блокировка фишинговой страницы при
target=_blank
Короче, создаем страницу для информирования посетителя о переадресации на другой сайт
и указываем ей ссылку-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);
.