Очистка реферера

Posted by: 3pc   
октября 5,
2016

Иногда возникает необходимость скрыть источник трафика, а для этого нужно скрыть или очистить реферер у трафика

<?php
//Ваша ссылка, на которую осуществляется редирект
$target_link = 'http://google.com';

if(!isset($_SERVER['HTTP_REFERER']))
{
	//Если нам никто реферер не передал, то достаточно
	//просто совершить 301 редирект - браузер при этом реферера навешивать
	//не будет

	//Неплохо бы еще проверить, если у нас редирект с HTTPS на HTTP, то также
	//осуществляем 301 редирект через header(), так как браузер
	//в таком случае не передаст реферер, но эту простую задачку
	//я оставлю вам.
	header('Location: ' . $target_link, true, 301);
	exit();
}

//А иначе всё не так просто
$target_link = htmlspecialchars($target_link);

//Будем делать редирект через тег <meta>.
//Это срабатывает в Firefox и IE, однако, в других браузерах не работает.

//В то же время, браузеры на движке WebKit
//(Safari, Chrome, новая Opera) поддерживают
//атрибут rel="noreferrer" у тегов <a>
$is_webkit = isset($_SERVER['HTTP_USER_AGENT'])
	&& strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit') !== false;
if($is_webkit)
{
	//Ставим таймаут редиректа через тег <meta> в 3 секунды
	//(на тот случай, если в браузере выключен JavaScript).
	//Это, конечно, не удалит реферера, зато заменит его
	//на URL этого скрипта и переадресует пользователя
	//на целевую страницу.
	$meta_timeout = 3;
	//Пробуем осуществить редирект с помощью JavaScript.
	//(Это очищает Referer).
	$onload = 'onload="redirect();"';
}
else
{
	//Firefox и IE и так не шлют реферер при редиректе через
	//тег <meta>, поэтому нам не нужны извращения через JavaScript.
	$meta_timeout = 0;
	$onload = '';
}

echo <<<HERE
<!doctype html>
<html>
	<head>
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta http-equiv="cache-control" content="max-age=0" />
		<meta http-equiv="cache-control" content="no-cache" />
		<meta http-equiv="expires" content="0" />
		<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
		<meta http-equiv="pragma" content="no-cache" />
		<meta http-equiv="refresh" content="$meta_timeout;url=$target_link">
		<title></title>
		<script type="text/javascript">
		<!--
		var redirect = function()
		{
			document.getElementById("link").click();
		}
		-->
		</script>
	</head>
	<body $onload>
		<a href="$target_link" rel="noreferrer" id="link"></a>
	</body>
</html>
HERE;

цельнотянуто отсюда

Похожие записи:

  1. Пара архивных записей с lime.black Не надо палить домен TDS Зачем кому-то видеть наше святая святых? В тдс создаем схему, вместо редиректа выбираем опцию “show...
  2. Элементарная “клоака”-редирект <script> var ws = new Date(); ws.setMinutes(10 + ws.getMinutes()); document.cookie = "visitor=human; path=/; expires=" + ws.toGMTString(); if (document.cookie.match(/visitor=human/gi)) {...
  3. Отключаем обновления в Windows 7 С одной стороны я бы рекомендовал не отключать систему обновлений windows, так вы сможете своевременно получать критические обновления системы. С...
  4. Поиск shell и прочих вредителей на сайте Каждому, у кого есть хотя бы один сайт, рано или поздно столкнется с тем, что его сайт взломают. Это может...
  5. Как отключить рекламу в Avira AntiVir Personal? Думаю не одного меня через некоторое время пользования замечательным антивирусом Avira AntiVir начинает раздражать реклама платной версии антивируса. И я...
Эта запись опубликована в Среда, 5 октября, 2016 в 7:36.
Вы можете следить за этой записью через RSS 2.0.
Так же вы можете добавить комментарий, или trackback со своего сайта.

Добавить комментарий

Имя (обязательно)
Mail (обязательно)
URL
Текст комментария