Что такое реферер или как использовать HTTP-заголовок referer
Реферер – это важный элемент HTTP-заголовка, который позволяет отслеживать источник перехода на веб-страницу. В статье объясняется, как использовать заголовок referer для улучшения аналитики и безопасности сайта.
Узнайте, как правильно настроить и использовать referer для отслеживания трафика, предотвращения спама и других полезных целей, связанных с веб-разработкой.
- Сбор из referer с помощью PHP, JavaScript и ASP
- После того как вы получили referer, что с ним делать?
- Общее приветствие
- Приветствие посетителей из поисковой системы
- Передача информации в формы
- Создание специального предложения для определенных посетителей
- Направление посетителей на другую страницу
- Блокирование пользователей по referer с помощью .htaccess
- Не полагайтесь на referer
Сбор из referer с помощью PHP, JavaScript и ASP
PHP хранит информацию из referer в системной переменной HTTP_REFERER. Чтобы отобразить ее на PHP-странице, нужен следующий код:
if(isset($_SERVER['HTTP_REFERER'])) {
echo $_SERVER['HTTP_REFERER'];
}Он проверяет, содержит ли переменная значение, а затем выводит его на экран. Вместо echo $_SERVER['HTTP_REFERER']; можно задать строки скрипта таким образом, чтобы проверить различные referer.
JavaScript использует для чтения server http referer DOM. Так же, как в случае с PHP, нужно проверить, содержит ли заголовок значение. Если вы хотите управлять переменно, то сначала нужно установить данную переменную. Вот как отобразить referer на странице с помощью JavaScript.
Обратите внимание, что DOM использует альтернативное написание referer:
if (document.referrer) {
var myReferer = document.referrer;
document.write(myReferer);
}После этого можно использовать заголовок в скрипте с переменной myReferer.
ASP, как и PHP, устанавливает referer в качестве системной переменной. После чего нужно получить данную информацию следующим образом:
if (Request.ServerVariables("HTTP_REFERER")) {
Dim myReferer = Request.ServerVariables("HTTP_REFERER")
Response.Write(myReferer)
}Также можно настроить скрипт с использование переменной myReferer.
После того как вы получили referer, что с ним делать?
После того, как вы получили информацию из HTTP referer, ее можно использовать в скриптах сайта. Например, чтобы вывести данные о том, откуда пришли посетители. Но гораздо интереснее использовать заголовок для отображения различной информации в зависимости от того, откуда пришли пользователи.
Общее приветствие
Можно вывести URL-адрес из referer в верхней части страницы в общем приветствии:
<script>
if (document.referrer) {
document.write("<p>Thank you for visiting from " +
document.referrer + "</p>");
} </script>Приветствие посетителей из поисковой системы
Когда кто-то перешел на ваш сайт из поисковой системы, можно предоставить таким пользователям немного дополнительной информации, чтобы побудить их дольше оставаться на ресурсе. Например, вывести для них ссылку на новостную рассылку сайта:
<script>
if (document.referrer) {
searchEngine = /google.com/;
if (searchEngine.test(document.referrer)) {
document.write("<p>Welcome Google visitor!</p>");
}
}
</script>Передача информации в формы
Если у вас на сайте есть ссылка, кликнув по которой посетители могут сообщить о проблемах с ресурсом. Люди часто сообщают о проблемах с веб-страницей без указания URL-адреса, на котором она возникла. Но можно использовать информацию из server http referer, чтобы предположить, о какой проблеме на какой странице идет речь.
Этот скрипт добавляет referer в скрытое поле формы:
<script>
function start() {
var ref = document.getElementById('referrer');
ref.value = document.referrer;
}
onload = start;
</script>
<input type="hidden" value="" id="referrer" />Создание специального предложения для определенных посетителей
Возможно, вы захотите предоставить людям, которые приходят с конкретной страницы, специальное предложение на ваши товары или услуги. C этой целью можно было бы открыть новое окно, чтобы предложить страницу. Но помните, что людям не всегда нравятся всплывающие окна, так что используйте их осторожно:
<script>
if (document.referer == "http://domain/special-offer.htm") {
var newWin = window.open('http://mydomain/special.htm','special');
}
</script>Направление посетителей на другую страницу
Также можно направить людей с определенным HTTP referer на другую страницу. Будьте осторожны, так как Google и другие поисковые системы могут расценить это, как введение в заблуждение, и наказать ваш сайт:
<script>
if (document.referrer == "http://domain/redirect") {
location.href = "http://www.newpage.com/";
}
</script>Блокирование пользователей по referer с помощью .htaccess
Если вы страдаете от referer-спама с одного домена, можно просто заблокировать его на вашем сайте. Если вы используете Apache с установленным mod_rewrite, тогда можно блокировать спам с помощью нескольких строк кода (rewritecond http referrer, запрет входа без referrer ).
Добавьте следующие строки в файл .htaccess:
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} spammer.com [NC]
RewriteRule .* - [F]Измените spammer.com на домен, который нужно заблокировать. Не забудьте добавить перед периодами в домене.
Не полагайтесь на referer
Помните, что возможна подмена HTTP referer, поэтому не стоит использовать его для важных страниц. Лучше применять его в качестве дополнения. Но если страница должна быть доступна только конкретным пользователям, то придется установить для нее пароль через файл htaccess.
Комментарии