Редирект без передачи REFERER - скрываем HTTP_REFERER

Задача: Есть сайт А, с которого совершается переход (кликом по ссылке) на сайт Z. При этом, сайту Z не обязательно знать, что переход совершается с сайта А. Обычно браузеры передают одним из заголовков данные об HTTP_REFERER (сайт-источник). Собственно, всё сводится к тому, чтобы убрать или подменить его неким промежуточным ресурсом X, Y :)

1. Простой редирект. На ресурсе А ссылка ставится на некий промежуточный X. Ресурс X перебрасывает посетителя на конечный ресурс Z ( HTTP-заголовок ‘Location: http://www.Z’). Однако, в этом случае REFERER-ом передается ресурс A, несмотря на наличие промежуточного ресурса X

2. Редирект javascript-ом. Имитируем щелчок на странице:

<html>
<head>
<script type='text/javascript'>
function navigateWithReferrer(url) {
var fakeLink = document.createElement('a');
if (typeof(fakeLink.click) == 'undefined')
location.href = url;
else {
fakeLink.href = url;
document.body.appendChild(fakeLink);
fakeLink.click();
}
}
</script>
</head>

3 Редирект с использованием Meta-заголовка REFRESH в HTML коде
<META HTTP-EQUIV=”Refresh” Content=”1; URL=http://Z”>
или HTTP-заголовка header(‘Refresh: 0; url=http://Z’);

4 Редирект с использованием flash-функции getURL(url,”_self”)  у пользователя должен быть установлен flash. Кроме того, (сам не проверял…) начиная с IE 7 для Flash-редиректа предусмотрена защита от подмены заголовка

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Комментарии (2) к записи “Редирект без передачи REFERER - скрываем HTTP_REFERER”

  1. Андрюха сообщает :

    Спасибо! Круто! Теперь лью трафик со своим реферером :)

  2. А я подменяю реферер так: сообщает :

    function get($url,$referer='')
    { $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_USERAGENT, getenv ('HTTP_USER_AGENT'));
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    $ss=curl_exec($ch);
    curl_close($ch);
    return '';
    }

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