У яких випадках HTTP_REFERER буде порожнім


163

Я знаю, що можна отримати порожній HTTP_REFERER. За яких обставин це відбувається? Якщо я отримую порожній, чи завжди це означає, що користувач змінив його? Отримати порожній такий же, як отримати нульовий? і за яких обставин я теж це отримую?


8
Коли клієнт не надсилає його.
Ігнасіо Васкес-Абрамс

Відповіді:


277

Він буде / може бути порожнім, коли ендузер

  • ввели URL-адресу сайту в самий адресний рядок браузера.
  • відвідав сайт за допомогою закладки, що підтримується браузером.
  • відвідав сайт як першу сторінку у вікні / вкладці.
  • натиснув посилання у зовнішній програмі.
  • переключився з https на http.
  • перейшли з https-адреси на іншу https-адресу.
  • встановлено програмне забезпечення безпеки (антивірус / брандмауер / тощо), яке позбавляє реферала від усіх запитів.
  • знаходиться за проксі-сервером, який позбавляє реферала від усіх запитів.
  • відвідував сайт програмно (як, згортання ), не встановлюючи заголовка реферала (пошукові роботи!).

32
Ви можете додати ", коли користувач переходить із захищеної (HTTPS) сторінки на незахищену".
Джон Пік

4
"відвідали сайт як першу сторінку у вікні / вкладці." Навіть якщо це було, натиснувши на посилання та відкривши його в новому вікні / вкладці ?? Ти впевнений? Це була б дуже неправильна поведінка браузера
Маттео

Також дивіться тут stackoverflow.com/questions/21922143 / ... для exeptions до цього
GetFree

4
"перейшов з https в інший https". Ви впевнені в цьому? : \
Оскар Медерос

5
За замовчуванням перехід від HTTPS-URL до іншої URL-адреси HTTPS встановлює повний референт. Однак цю політику за замовчуванням можна скасувати. w3.org/TR/referrer-policy
Дхаваль Капіль

34

HTTP_REFERER - надсилається браузером із зазначенням останньої сторінки, яку переглядав браузер!

Якщо ви довіряєте [HTTP_REFERER] з будь-якої важливої ​​причини, ви не повинні, оскільки це можна легко підробити:

  1. Деякі браузери обмежують доступ, щоб не дозволяти передавати HTTP_REFERER
  2. Введіть адресу в адресному рядку, не пройде HTTP_REFERER
  3. відкриття нового вікна браузера не передасть HTTP_REFERER, тому що HTTP_REFERER = NULL
  4. має деякий додаток до браузера, який блокує його з міркувань конфіденційності. Деякі брандмауэры та аудіозаписи роблять це.

Спробуйте це розширення для Firefox, ви зможете встановити будь-які заголовки:

@Master of Celebration:

Firefox:

розширення: refspoof , refontrol , модифікувати заголовки , no-referer

Повністю відключити: параметр доступний у about: config у розділі "network.http.sendRefererHeader", і ви хочете встановити це значення 0, щоб відключити передачу реферера.

Google chrome / Chromium:

розширення: noref , spoofy , зовнішній noreferrer

Повністю відключіть: Chnage ~ / .config / google-chrome / Default / Preferences або ~ / .config / Chrome / Default / Preferences та встановіть це:

{
   ...
   "enable_referrers": false,
   ...
}

Або просто додайте --no-referenceers до ярлика або в cli:

google-chrome --no-referrers

Опера:

Повністю відключіть: Налаштування> Налаштування> Додатково> Мережа та зніміть прапорець "Надіслати інформацію про реферала"

Підробляння веб-сервісу:

http://referer.us/

Автономний проксі-фільтрувальний проксі (підробляти будь-який заголовок):

Привокси

Підміняти http_referer під час використання wget

'--referer = url'

Підробляти http_referer при використанні curl

-е, - реферер

Підробляти http_referer з telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)

Tamper Data - це ще одне розширення Firefox, яке варто переглянути, якщо ви хочете грати зі зміною значень реферала.
Кріс Хепнер

Я дуже намагався запам'ятати це ім'я. але моя пам’ять зрадила мене. Дякую :)
ThatGuy

@nix Some browsers limit access to not allow HTTP_REFERER to be passedЧи можете ви назвати приклад такого браузера та / або розширення?
Майстер святкування

@MasterofCelebration додав способи підробляти http_referer у свою відповідь.
ThatGuy

Не використовуйте referendumr.us для підробки / приховування реферала! Це не працює і не протікає вашу інформацію. Єдиний працюючий сервіс на даний момент - це безкоштовна послуга пересилання прихованих служб.
Брайан Сміт

9

Список BalusC суцільний. Ще один додатковий спосіб, коли це поле часто видається порожнім, - це коли користувач знаходиться за проксі-сервером. Це схоже на те, що знаходиться за брандмауером, але дещо відрізняється, тому я хотів згадати його заради повноти.


8

Він також буде порожнім, якщо буде використано новий стандартний чернетки політики перенаправлення, щоб запобігти надсиланню заголовка реферала до джерела запиту. Приклад:

<meta name="referrer" content="none">

Хоча Chrome і Firefox вже реалізували проект версії Посилань на політику, ви повинні бути обережними з нею, оскільки, наприклад, Chrome очікує no-referrerзамість none(і я neverдесь бачив ).


Таблиця сумісності браузера: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
djvg

0

Я визнав реалізацію реферального браузера справді непослідовною.

Наприклад, елемент прив’язки з атрибутом "завантажити" працює як очікується в Safari і надсилає реферала, але в Chrome референт буде порожнім або "-" в журналах веб-сервера.

<a href="http://foo.com/foo" download="bar">click to download</a>

У Chrome порушено - референт не надіслано.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.