Удалить http referer - PullRequest
       26

Удалить http referer

49 голосов
/ 25 июля 2011

Это способ удалить или скрыть информацию http referer в заголовке запроса?Я хочу удалить информацию о ссылках на http пользователей, которые переходят на другой сайт с моего сайта, используя сценарий, возможно, на javascript python или django

пример:

Host    slogout.espncricinfo.com
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0    
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    
Accept-Language en-us,en;q=0.5    
Accept-Encoding gzip, deflate    
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7    
Connection  keep-alive
Referer http://slogout.espncricinfo.com/index.php?page=index&level=login

Ответы [ 10 ]

97 голосов
/ 14 августа 2015

Начиная с 2015 года, вы не можете отправлять заголовок Referer:

Просто добавьте это в заголовок раздела веб-страницы:

 <meta name="referrer" content="no-referrer" />

Это работает как для ссылок, так и для запросов Ajax , сделанных с помощью кода JavaScript на странице.

Другие действительные meta опции включают в себя:

<meta name="referrer" content="unsafe-url" />
<meta name="referrer" content="origin" />
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="referrer" content="origin-when-cross-origin" />

• Проверьте, работает ли он для вашего браузера здесь: http://caniuse.com/#feat=referrer-policy

• См. Спецификации здесь: http://w3c.github.io/webappsec/specs/referrer-policy/

Также обратите внимание, что браузеры теперь отправляют заголовок Origin (с запросами CORS и POST, смотрите здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin), который включает в себя домен и порт, и, насколько я знаю, не может быть удален. Вы используете <meta name="referrer" content="origin" />, и реферер будет содержать информацию, аналогичную заголовку Origin, что уже хорошо с точки зрения конфиденциальности, поскольку он будет скрывать точную страницу, на которой находится пользователь.

Обновление:

Если вы хотите удалить реферер, используя только JavaScript, вы можете динамически добавить соответствующий метатег непосредственно перед выполнением запроса Ajax. Этот JavaScript добавит <meta name="referrer" content="no-referrer" /> в заголовок раздела веб-страницы:

var meta = document.createElement('meta');
meta.name = "referrer";
meta.content = "no-referrer";
document.getElementsByTagName('head')[0].appendChild(meta);
10 голосов
/ 05 октября 2012

В Javascript есть кросс-браузерное решение, оно использует Iframes, созданное динамически, проверьте подтверждение концепции (заявление об отказе: в нем используется небольшая библиотека JS, которую я кодировал для этой цели).

5 голосов
/ 29 августа 2014

Если вы заинтересованы только в том, чтобы скрыть полный URL-адрес, и не против того, чтобы ваше доменное имя было открыто, этот небольшой код Javascript сделает свою работу.

Ваш пользователь на example.com/secret_url_we_want_to_hide, ваш пользователь щелкает ссылку, которая должна отправить его на google.com. но вместо <a href="http://google.com">Go to Google</a> мы используем это:

a href="http://example.com/redirect.html#http://google.com">Go to Google</a>

Где /redirect.html - это HTML-страница, содержащая следующее: (Изменить: Пожалуйста, смотрите обновление!)

<html><head></head><script>
window.location.replace(location.hash.substring(1));
</script></html>

Google.com увидит http://example.com/redirect.html в теге реферера и никогда не увидит фактический example.com/secret_url_we_want_to_hide.

UPDATE:

В Firefox есть ошибка с location.hash, обходной путь следующий:

<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>
4 голосов
/ 25 июля 2011

Для этого существует множество механизмов, в зависимости от того, какую версию браузера вы используете. Для любого браузера, если пункт назначения находится через HTTP, вы можете «отмыть» источник, перенаправив на страницу HTTPS, которая затем перейдет на целевую страницу.

Для IE вы можете выполнять навигацию, используя JavaScript (например, window.open), который подавит реферер. Или вы можете использовать META Refresh, но это стоит денег. Для браузеров на основе WebKit см. Опцию NoReferrer LINK REL: http://www.webkit.org/blog/907/webkit-nightlies-support-html5-noreferrer-link-relation/

1 голос
/ 28 апреля 2015

Я искал похожее решение, не прибегая к ссылкам, но только для подсчета уникальных посещений с ссылающегося веб-сайта. Проблема, с которой я столкнулся, заключалась в том, что, если кто-то посещал мой сайт по определенной ссылке, счетчик посещений работал бы, но если этот человек обновлял страницу, счетчик посещений все еще работал.

Я использовал Google, чтобы посетить несколько ресурсов по этой теме, и да, было очень очень трудно найти ответ, пока кто-то не указал мне, чтобы посмотреть на php.net для решения.

Я нашел решение в использовании

header('Refresh: 0; url=index.php');

Но только приведенный выше код не является решением. Решение заключается в его размещении. Вот полный код:

$ref=@$_SERVER[HTTP_REFERER];
$domain = parse_url($ref, PHP_URL_HOST);

If ($domain === "google.com") 
    {
        header('Refresh: 0; url=index.php'); //Resets header info to host site so that on page refresh, the hit counter does not
    }                                        // increase but increases only when someone visits from google url again

После «обновления» информация заголовка меняется на информацию о хост-сайте, поэтому при обновлении страницы оператор «if» не будет проверяться и счетчик посещений не будет увеличиваться.

Вы можете поместить свой счетчик попаданий в блок IF. Вы также можете запрограммировать различные параметры для регистрации пустых обращений к вашему веб-сайту и различные параметры для регистрации всех загрузок страниц / просмотров страниц.

Надеюсь, это поможет .....

0 голосов
/ 22 ноября 2018
<meta name="referrer" content="no-referrer"/>

Если вы разместите вышеуказанный код на своей странице, все исходящие ссылки (клики пользователей) не будут отправлять информацию о реферере

Документация

0 голосов
/ 28 ноября 2017

Существует еще один метод, использующий history.replace () метод , чтобы скрыть строку запроса, например, если вы хотите http://example.com/search?q=100 заменить на http://example.com/search, вы можете сделать так: 1005 *

history.replace(null,null,'search')

Надеюсь, это поможет! : D

0 голосов
/ 27 февраля 2017

Я тоже искал решение этой проблемы и, к счастью, нашел этот Hide My Referrer сайт. Что меня поразило, так это то, что он работает даже для запросов https> https.

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

0 голосов
/ 26 июля 2011

Ваше предположение о доступе к заголовку Referer через javascript невозможно.Как и заголовок User-Agent в http, реферер и т. Д. Не могут быть доступны через javascript.Значения для этих заголовков передаются браузером.То, что вы можете сделать, - это хитрый обходной путь, если вам потребуется.

0 голосов
/ 25 июля 2011

Вы не можете.Это решение браузера отправлять рефереру или нет.Вы можете скрыть своего реферера, используя анонимайзер ссылок .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...