Невозможно зафиксировать правильный реферер с помощью javascript document.referrer

Мы пытаемся захватить реферера, используя код javascript document.referrer. Но в некоторых случаях мы получаем неверный вывод.

В моем случае откройте Google.de, затем выполните поиск «zalando», а затем нажмите на рекламу в поисковой рекламе. Когда я попал на страницу, в качестве реферера должен был отображаться «Google.de», но вместо этого он показывает нам «zalando.de». Пожалуйста, найдите прикрепленный скриншот для справки.

Надеюсь, это что-то связанное с сайтом. Но мне немного любопытно узнать следующие вещи:

  1. Почему в моем случае не работает document.referrer?
  2. Какие методы используют владельцы веб-сайтов для смены реферера?
  3. Есть ли способ получить правильный реферер с помощью javascript в приведенном выше случае?

Помощь приветствуется :)

введите здесь описание изображения


person Unknown    schedule 06.09.2013    source источник


Ответы (2)


Проблема с Google в том, что он защищен SSL (HTTPS).

Реферер удаляется путем перехода с защищенного хоста на незащищенный хост.

Google изменил шифрование на SSL по умолчанию почти для всех пользователей (за исключением стран, где шифрование не разрешено, как в некоторых странах Азии, ...). Эта проблема также возникает во многих веб-статистике и поиске в Google, google для «encrypted_search_terms в WordPress» — многие люди сталкиваются с проблемой невозможности доступа к рефереру — просто потому, что он удаляется во время HTTP-запросов.

Если доступ к веб-сайту осуществляется через безопасное соединение HTTP (HTTPS) и ссылка указывает куда-либо, кроме другого безопасного места, то поле реферера не отправляется.

Будущий стандарт HTML5 будет поддерживать атрибут/значение rel = «noreferrer», чтобы указать пользовательскому агенту не отправлять реферер.

Источник: http://en.wikipedia.org/wiki/HTTP_referer#References

Обновление:

URL запроса: http://www.zalando.de/mbox-de-home/?wt_ga41=5671686226_28149528346&wt_gk41=Exact_5671686226_zalando&gclid=CKTOt4eZvrkCFUHHtAodDDAAKw

Реферер: http://www.google.de/aclk?sa=l&ai=Cpa3Esq4tUvv-G4e9-Qap_YH4AvKmg_ID8tzul2md6c2tKAgAEAFQwa_i7v7_____AWCVspWCpAegAZ67pcQDyAEBqQJzLk9s6Bu2PqoEIk_QWWoJkHHqxkgWDNaWPV1Nuz1wbu1k-cSPx7tybvJDfR6AB8rE2js&sig=AOD64_3X48XkFIMsdt0_6nyr60yxwlqYKQ&ved=0CDEQ0Qw&adurl=http://www.zalando.de/mbox-de-home/%3Fwt_ga41%3D5671686226_28149528346%26wt_gk41%3DExact_5671686226_zalando&rct=j&q=zalando

На самом деле реферер отправляется, и защищенного соединения нет.

Проблема сейчас в том, что от поиска в гугле до сайта магазина у вас цепочка разных страниц и запросов. Вы захватываете реферера не в том месте.

Google Search -> Google Ad Redirect 1 -> Google Ad Redirect 2 ... -> Целевая страница Zalando -> Сайт zalando

Реферер должен быть захвачен по первому запросу после ухода с сайтов google. На самом деле вы захватываете реферера в конце этой цепочки.

Это ваша целевая страница:

http://www.zalando.de/mbox-de-home/?wt_ga41=5671686226_22217536906& wt_gk41=Exact_5671686226_zalando&gclid=CL7JlvibvrkCFeXMtAodS3oALw

Это тот момент, когда вы должны захватить реферера (возможно, с помощью вашего языка на стороне сервера, а не с помощью Javascript).

person Daniel W.    schedule 09.09.2013
comment
@ Дэн .. спасибо за хорошее объяснение. Я хотел бы знать, есть ли способ получить реферера со стороны клиента. Потому что мы работаем над утилитой (разработанной с использованием JavaScript) для проверки того, откуда пользователь попал на клиентскую страницу. - person Unknown; 09.09.2013
comment
@Unknown Вы можете включить Javascript с document.referrer на сайт здесь: http://www.zalando.de/mbox-de-home/ (ссылка с ads.google.com), но не http://www.zalando.de (ссылка с zalando.de/mbox-de-home) - person Daniel W.; 09.09.2013

Работает, но есть 302 редирект с платного поискового объявления на сайт. Вы можете увидеть это перенаправление, если у вас открыт разработчик Chrome и вы смотрите на вкладку сети, когда заходите на сайт. Или используйте путь перенаправления подключаемого модуля Chrome — https://chrome.google.com/webstore/detail/redirect-path/aomidfkchockcldhbkggjokdkkebmdll.

Я не уверен, почему вы хотите изменить реферера с помощью js. Вы используете Google Analytics, почему бы просто не посмотреть там отчет о реферере?

person Blexy    schedule 06.09.2013
comment
Спасибо за ваш ответ. Но не могли бы вы объяснить, как перенаправление 302 влияет на реферера. Если вы проверите другие платные объявления, вы получите реферера. Но в приведенном выше случае это не так. Почему? Кстати, я не использую аналитику Google, и мы не должны в нашем случае. - person Unknown; 07.09.2013
comment
Я только что проверил несколько других объявлений, и они показывают мне ту же проблему, что и у вас. Например, когда вы запускаете document.referrerit, он возвращает URI страницы, которая связана с этой страницей. В вашем случае путь выглядит следующим образом: google.com (объявление) › rei.com/?gclid =CMvomLLCuLkCFY9xQgodXxoA-rei.com/?gclid=CMvomLLCuLkCFY9xQgodXxoA-. Поэтому, когда вы находитесь на целевой странице и запускаете document.referrer, вы на самом деле не получаете поиск Google, вы получаете ссылку перенаправления 302. - person Blexy; 07.09.2013
comment
@Blexy .. спасибо за объяснение. Итак, есть ли способ получить фактического реферера с помощью javascript? - person Unknown; 07.09.2013
comment
Я не верю, что ты можешь. Теоретически вам нужно будет добавить параметр запроса к объявлению, которое вы нажимаете в Google, что я не думаю, что это возможно. Просто любопытно, что именно вы пытаетесь сделать? - person Blexy; 07.09.2013
comment
У нас есть небольшая утилита для проверки того, откуда пользователь попал на клиентскую веб-страницу. Он работает нормально до сих пор. Но в приведенном выше случае это терпит неудачу. - person Unknown; 07.09.2013