Подтвердить что ты не робот

Удалить http-референт

Можно ли удалить или скрыть информацию о ссылках на HTTP в заголовке запроса? Я хочу удалить http-ссылку для пользователей, которые отправляются на другой сайт с моего сайта, используя script, возможно, в 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
4b9b3361

Ответ 1

С 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, который уже хорош с точки зрения конфиденциальности, поскольку он скроет точную страницу, в которой находится пользователь.

Update:

Если вы хотите удалить реферер только с использованием 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);

Ответ 2

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

Ответ 3

Существует множество механизмов для этого, в зависимости от того, какую версию браузера вы используете. Для любого браузера, если пункт назначения находится по 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/

Ответ 4

Если вы заинтересованы только в сокрытии полного 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 в теге referrer и никогда не увидит фактического example.com/secret_url_we_want_to_hide.

UPDATE:

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

<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>

Ответ 5

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

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

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

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

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

[email protected]$_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. Вы также можете запрограммировать различные параметры, чтобы записывать пустые хиты на свой сайт и различные параметры для регистрации всех pageloads/просмотров страниц.

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

Ответ 6

Ваше предположение о доступе к заголовку Referer с помощью javascript невозможно. Подобно заголовку User-Agent в http, referer и т.д., Javascript не может быть доступен. Значения этих заголовков подаются браузером. Что вы можете сделать, это сложная работа, если вам это нужно.

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

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