Перейти к контенту

Скрываем document.referer


Рекомендуемые сообщения

А еще вот такой вопрос. как сделать, чтобы старые ссылки тоже стали через редирект?

Зашел в "настройки" -> "пересчет и обновления" -> "перестройка содержимого сообщений", но все по старому, ничего не изменилось.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
  • Ответы 148
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Джаваскрипт:
<script type="text/javascript">
function dereferer(val){
deref=window.open('http://ya.ru','','toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes');
deref.window.location=val
}
</script>

 

Линк преобразовать к виду:

<a href="java script:;" onclick="java script:dereferer('http://domen.ru/site.php')">http://domen.ru/site.php</a>

 

Документ-реферером будет яндекс.

 

Теоретически, есть минимальный риск возникновения ошибки доступа: если имеется сверхбыстрый интернет, и сверхмедленный компьютер.

 

Абсолютно надежна конструкция с "эбаут:бланк", которая будет работать всегда без ошибок:

deref=window.open('about:blank','','toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes');

Внимание! java script нужно писать слитно!

 

Для 2.3.3:

1. Добавить код функции dereferer(val) в ./jscripts/ipb_global.php:

function dereferer(val){
deref=window.open('http://ya.ru','','toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes');
deref.window.location.href=val;
}

 

2. Открыть ./source/classes/bbcoe/class_bbcode_core.php, найти в функции regex_build_url( $url=array() ):

		return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];

Заменить на:

		return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"java script:void(0);\" onclick=\"dereferer('{$url['html']}');\">".$show."</a>" . $url['end'];

 

3. Открыть ./source/classes/bbcoe/class_bbcode.php (и class_bbcode_legacy.php), найти в функции pre_edit_parse($txt=""):

			$txt = preg_replace( "#<a href=[\"'](http://|https://|ftp://|news://)?(\S+?)['\"].*?".">(.+?)</a>#s" , "\[url=\"\\1\\2\"\]\\3\[/url\]"  , $txt );

Добавить перед:

			$txt = preg_replace( "#<a href=\"java script:void\(0\);\" onclick=\"dereferer\('(http://|https://|ftp://|news://)?(\S+?)'\);\".*?".">(.+?)</a>#s" , "\[url=\"\\1\\2\"\]\\3\[/url\]"  , $txt );

 

P.S. FatCat, а почему при этот происходит задержка перед загрузкой целевой страницы?

Ссылка на комментарий
Поделиться на других сайтах

P.S. FatCat, а почему при этот происходит задержка перед загрузкой целевой страницы?

Потому, что новая происходит последовательное обращение к двум страницам. Скрипт эмулирует три действия пользователя: клик - переход на яндекс, затем как бы ввод в адресную строку нужного URL, и затем второй клик - переход на URL. Если прислушаться в и-эксплорере, слышно два щелчка, а не один, как при обычном переходе по ссылке. Первый щелчок - это отправка запроса к яндексу (или к *.dll, содержащей эбаут:бланк), и именно тогда заполняется документ.реферер; второй щелчок - обращение к странице линка.

 

У меня довольно шустрый компьютер, и эти два щелчка сливаются в один дробный щелчок.

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

Ссылка на комментарий
Поделиться на других сайтах

Меня удивило время задержки, компьютер не слабый, а разница при переходе по прямой ссылке и через скрипт на глаз раз в 5-10, не много ли?
Ссылка на комментарий
Поделиться на других сайтах

Меня удивило время задержки, компьютер не слабый, а разница при переходе по прямой ссылке и через скрипт на глаз раз в 5-10, не много ли?

У меня разница меньше секунды. Причем одинаково и в ИЕ, и в Опере.

 

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

Тулбаров у меня нет вообще никаких, антивирус у меня МакЭфи - может быть в этом дело.

Ссылка на комментарий
Поделиться на других сайтах

блин много всего...

 

скажите лучще прямо в отдельном посте как сделать для форума 2.3.3

 

для файлика go.php

<html><head></head><body>
<script type="text/javascript">
var sloc=window.location+''
if(!sloc.split('go.php?')[1])location='/404.php'
else location=sloc.split('go.php?')[1]
</script>
</body></html>

 

Чтобы все ссылки на форуме были на сам форум...

Ссылка на комментарий
Поделиться на других сайтах

для файлика go.php

Файлик в своем домене будет лежать?

Тогда по документ.реферер будет определяться Ваш домен, скроет только, с какой страницы осуществлен переход.

 

ИМХО, идея подстановки в документ.реферер яндекса или эбаут:бланк - самая лучшая идея.

Ссылка на комментарий
Поделиться на других сайтах

лижбы ссылки не были прямые...

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

Ссылка на комментарий
Поделиться на других сайтах

ну вобщем на старом форуме у меня было так что все ссылки которые добавляли пользователи перепарсивались в ссылку с редиректом через go.php
Ссылка на комментарий
Поделиться на других сайтах

скажите лучще прямо в отдельном посте как сделать для форума 2.3.3

4 страницы много? Вы видимо только 3 осилили, ибо на 4й это есть :D Только нужно заменять не через яву, а через ваш редирект, это написано на тойже странице чуток выше.

Ссылка на комментарий
Поделиться на других сайтах

Доброго времени суток. Сделал так чтобы ссылка после go.php?url= еще шифровалась в base64.

 

 if (!stristr($url['html'], "domain.ru"))
{
return ( isset($url['st']) ? $url['st'] : '' ) . "<noindex><a href='http://www.domain.ru/go.php?url=".$url['html'] = base64_encode($url['html'])."' rel=\"nofollow\" target='_blank'>".$show."</a></noindex>" . $url['end'];
}
else
{
return ( isset($url['st']) ? $url['st'] : '' ) . "<noindex><a href='".$url['html'] = base64_encode($url['html'])."' rel=\"nofollow\" target='_blank'>".$show."</a></noindex>" . $url['end'];
}

 

Неподскажите что нужно добавить в pre_edit_parse чтобы при редактировании поста она декодировались в нормальный вид? Немогу понять куда можно там вставить base64_decode

Ссылка на комментарий
Поделиться на других сайтах

да, новые ссылки нормально создаются... проблема только с теми, что были раньше.

 

в админке персчет и обновление сообщений нада делать

 

FatCat помоги... ниче не понял тут... куда в какой файл чего вставить, чтобы ссылки парсились в http://www.domen.ru/go.php?http://www.owndomen.ru/

 

версия 2.3.1

 

Чтобы не зависеть от чужого анонимайзера, можно сделать свой. По документ-реферер будет виден домен, но не будет видно, с какой страницы домена осуществлен переход:

"<a href='goto.html\?".$url['html']."' target='_blank'>".$show."</a>"

Сделал, чтобы и домен было не видно, и сам анонимайзер "встроен" в линк ;)

return $url['st'] . "<a href=\"& #106;& #97;& #118;& #97;& #115;& #99;& #114;& #105;& #112;& #116;:tlt=window.open();tlt.document.write('<& #115;& #99;& #114;& #105;& #112;& #116; type=& #92;& #39;text\/& #106;& #97;& #118;& #97;& #115;& #99;& #114;& #105;& #112;& #116;& #92;& #39;>location=& #92;& #39;".$url['html']."& #92;& #39;<\/& #115;& #99;& #114;& #105;& #112;& #116;>');\" title='".$show."'>".$show."</a>" . $url['end'];

Пробелы между амперсандами и решетками убрать.

По document_referer теперь будет отдаваться локалхост :D

 

Сорри, исправил код.

 

 

UPD

 

Добавил анконвертер:

 

В функцию

function unconvert($txt="", $code=1, $html=0) {

добавить в начало:

$txt = preg_replace( "#<a href=[\"']&\#106;&\#97;&\#118;&\#97;&\#115;&\#99;&\#114;&\#105;&\#112;&\#116;:tlt=window.open\(\);tlt.document.write\('<&\#115;&\#99;&\#114;&\#105;&\#112;&\#116; type=&\#92;&\#39;text/&\#106;&\#97;&\#118;&\#97;&\#115;&\#99;&\#114;&\#105;&\#112;&\#116;&\#92;&\#39;>location=&\#92;&\#39;(.+?)&\#92;&\#39;</&\#115;&\#99;&\#114;&\#105;&\#112;&\#116;>'\);\" title='(.+?)'>(.+?)</a>#"  , "\[URL=\\1\]\\2\[/URL\]"   , $txt );

 

ССЫЛКА делается с лишними слешами, это раз

 

При редактировании декодер не декодит, видимо из-за слешей этих самых... это два

 

С кодом пытаюсь разобраться, но думаю понадобится помощь...

 

ссылка при добавлении получается:

<a href="& #106;& #97;& #118;& #97;& #115;& #99;& #114;& #105;& #112;& #116;:tlt=window.open();tlt.document.write('<& #115;& #99;& #114;& #105;& #112;& #116; type=& #92;& #39;text\/& #106;& #97;& #118;& #97;& #115;& #99;& #114;& #105;& #112;& #116;& #92;& #39;>location=& #92;& #39;http://java%20script:tlt=window.open();tlt.document.write(& #92;& #39;<\/& #115;& #99;& #114;& #105;& #112;& #116;>');" title='location=& #092;& #39;http://ya.ru& #092;& #39;</script>& #39;);" title=& #39;http://ya.ru& #39;>http://ya.ru'>location=& #092;& #39;http://ya.ru& #092;& #39;</script>& #39;);" title=& #39;http://ya.ru& #39;>http://ya.ru</a>

Ссылка на комментарий
Поделиться на других сайтах

P.S. FatCat, а почему при этот происходит задержка перед загрузкой целевой страницы?

Потому, что новая происходит последовательное обращение к двум страницам. Скрипт эмулирует три действия пользователя: клик - переход на яндекс, затем как бы ввод в адресную строку нужного URL, и затем второй клик - переход на URL. Если прислушаться в и-эксплорере, слышно два щелчка, а не один, как при обычном переходе по ссылке. Первый щелчок - это отправка запроса к яндексу (или к *.dll, содержащей эбаут:бланк), и именно тогда заполняется документ.реферер; второй щелчок - обращение к странице линка.

 

У меня довольно шустрый компьютер, и эти два щелчка сливаются в один дробный щелчок.

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

 

в Опере недетская пауза перед переходом...

в 6м ксплорере умеренная пауза, но заметная, в адресе можно увидеть ya.ru

в FireFox вабще самая малая задержка и не видно адреса ya.ru

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Народ, прочитал 5 страниц вдоль и поперек, здорово у вас тут сюжет закручен!!!

А нельзя ли в одном посте или файле собрать вашу замечательную переписку, чтоб все стало на свои места, а то читай сообщение №, в сообщении № сам черт ногу сломит и весь топик на одних оверквотингах построен!

 

Большая человеческая просьба, сделайте ПО ЧЕЛОВЕЧЕСКИ!

Изменено пользователем POGRANICHNIK
Ссылка на комментарий
Поделиться на других сайтах

Большая человеческая просьба, сделайте ПО ЧЕЛОВЕЧЕСКИ!

Тут в кучу смешались несколько вариантов модификации.

ИМХО, лучший вариант - последний.

Для "двушек" это #79.

Ссылка на комментарий
Поделиться на других сайтах

Ужас как всё закручено...

Может кто нибудь мне переделает за $?

Версия форума 2.3.4

Хочу:

что бы ссылки были типа:

redirect.php?to=ссылка

Что бы ссылки были в noflow и noindex

Что бы ссылки на мой форум не попадали под редирект, ноиндекс и нофлоу

Что бы при редактировании и цитировании не было никаких ошибок (типа редиректа не редирект и тд)

И что бы все существующие ссылки заменились.

Ссылка на комментарий
Поделиться на других сайтах

2-Cross-:

Под двушку делать не буду, но попробую отговорить от неверного решения.

 

Смысл скрывать document.referer:

  • Не дать поисковкам проиндексировать линки на сайты конкурентов;
  • Если у Вас варезный контент, не дать правообладателям зафиксировать переходы на их сайты и даунлоады с их сайтов;
  • мелкая пакость рекламным ботам и подобной шушере.

 

Теперь по пунктам:

  • Многим поисковкам плевать на "ноиндекс", они всё равно проанализируют контейнер <a htef="URL" ... > А вот параметр, передаваемый функции джаваскрипт, они индексировать не будут, ибо не сумеют.
  • При переходе на сайт правообладателя через redir.php Вы скроете страницу, с которой осуществлен переход, но домен не скроется. Джаваскрипт позволит передать правообладателю ту ложную информацию о реферале, какую Вы пожелаете, в моем примере это яндекс.
  • Разве что ботам пофигу; у них все равно сайты-редиректы; им нужны кликабельность ссылок...

Ссылка на комментарий
Поделиться на других сайтах

Не дать поисковкам проиндексировать линки на сайты конкурентов;

Не совсем для этого, но это тоже надо.

 

Если у Вас варезный контент, не дать правообладателям зафиксировать переходы на их сайты и даунлоады с их сайтов;

Боже упаси, я не распространяю варез.

 

Многим поисковкам плевать на "ноиндекс", они всё равно проанализируют контейнер <a htef="URL" ... > А вот параметр, передаваемый функции джаваскрипт, они индексировать не будут, ибо не сумеют.

Чем меньше внешних, тем это лучше отражается на позициях в пс. Я изучаю SEO уже на протяжении года, даже уже немного больше чем года... чисто для себя.

Ноиндекс - это для яши. Нофлоу для гугли, и (если не ошибаюсь) для яху.

 

Моя цель не скрыть document.referer. А избавиться от внешних.

Ссылка на комментарий
Поделиться на других сайтах

Моя цель не скрыть document.referer. А избавиться от внешних.

Тогда самое простое: редирект в своем домене, и все линки стали внутренними. Достигается минимальной правкой парсера.

Глянь в этом топике сообщение #26. Вместо anonym.to сделай свой редирект.

Ссылка на комментарий
Поделиться на других сайтах

Вот это как я понял?

if (!stristr($url['html'], "test217.ru")
and !stristr($url['html'], "anonym.to")
and !stristr($url['html'], "yandex")
and !stristr($url['html'], "03.ru"))
{
return $url['st'] . "<a href='http://anonym.to/\?".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];
}
else
{
return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];
}

А как под 2.3 подогнать?

В 2.3 вместо:

return $url['st'] . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];

Идёт это:

return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];

 

И ещё, что бы мне вставить редирект, мне просто надо будет перед ".$url['html']." вписать redirect.php?to=

? Или ещё надо ставить какие нибудь знаки? А то я в этих законах php не оч шарю.

Ссылка на комментарий
Поделиться на других сайтах

Ну может кто поможет мне правильно переделать?

Попробуй

if (!stristr($url['html'], "твой_домен.ru")
and !stristr($url['html'], "redirect.php")
and !stristr($url['html'], "yandex")
and !stristr($url['html'], "03.ru"))
{
return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"redirect.php?to=".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
}
else
{
return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
}

Я не проверял, но по идее должно так работать.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.