Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 18.11.2010, 19:02   #1
Специалист
 
Аватар для pgolovko
 
Регистрация: 07.05.2009
Адрес: Las Vegas
Сообщений: 217
Вес репутации: 189
pgolovko - как роза среди колючекpgolovko - как роза среди колючекpgolovko - как роза среди колючек
Lightbulb Как спрятать контент от роботов/кладоискателей?

Не все роботы будут честно блюсти ваши правила в robots.txt, это факт.
Так как же всетаки скрыть от роботов то про что им знать не надобно, и при этом не ограничевать посетителей паролями и капчами? Извесно, что многие роботы не могут читать javascript или не разбираются в cookies, иногда и то и другое.
Тестируем ...
index.php файл:
PHP код:
<?php
setcookie
("test""testing");
?>
<html>
<script type="text/javascript">
var hmm  = 'content';
function test()
{
var uhmm = 'php';
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("test").innerHTML=xmlhttp.responseText;
    }
  }
var aha = hmm+'.'+uhmm;
xmlhttp.open("GET",aha,true);
xmlhttp.send();
}
</script>
<body onload="test()">
some content here..
<div id="test"></div>
the rest of page content..
</body>
</html>
content.php контент для "real human":
PHP код:
<?php
if($_COOKIE["test"] == "testing"){
  print 
"Hello real human!";
  }
?>
В итоге настоящий посетитель с броузером перед носом получит желаемый Hello real human! результат, а робот только то что ему дозволенно.
Вполне понятно, что не у всех броузеров включены cookies или javascript; но их настолько ничтожное количество, что данный метод можно считать почти идеальным.
Возможно есть методы более короткие и эффективные. Если есть - то поделитесь. Буду рад почерпать, что то новенькое.
Вот такая темка для размышления.
pgolovko вне форума   Ответить с цитированием
Старый 19.11.2010, 03:03   #2
К черту кодекс !!
 
Аватар для Красавчег
 
Регистрация: 19.12.2009
Адрес: [ forum.sape.ru ]
Сообщений: 2,168
Вес репутации: 375
Красавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущееКрасавчег - прекрасное будущее
По умолчанию

Цитата:
Сообщение от pgolovko Посмотреть сообщение
спрятать контент от роботов
Уже давно перестал даже пытаться что-то скрывать. А вообще, лучший способ спрятать контент - это не выкладывать его в интернет.
__________________
Вы использовали запрещённое администрацией слово(-а). Пожалуйста, удалите его(их).
Красавчег вне форума   Ответить с цитированием
Старый 19.11.2010, 12:27   #3
Специалист
 
Аватар для pgolovko
 
Регистрация: 07.05.2009
Адрес: Las Vegas
Сообщений: 217
Вес репутации: 189
pgolovko - как роза среди колючекpgolovko - как роза среди колючекpgolovko - как роза среди колючек
По умолчанию

Немного иная версия с аналогичным принцепом. В первом примере сначала проводилась проверка на javascript, а потом загружался файл с проверкой на cookies. В данном случае content.php файл вообще не загружается если обе javascript и cookie проверки были неудачными.
index.php
PHP код:
<?php
$myvar 
mt_rand();
$cookie mt_rand();
setcookie($cookie$myvar);
$var1 "human";
?>
<html>
<script type="text/javascript">
var hmm = "content";
function test(){
  var uhmm = "php";
  var mycookie = readCookie("<? print $cookie?>");
  if(mycookie == "<? print $myvar?>"){
    document.getElementById("test").innerHTML = IO(hmm+"."+uhmm+"?var=<? print $var1?>");
    }
  }
function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++){
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
  return null;
  }
function IO(U,V){
  var X = !window.XMLHttpRequest ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
  X.open(V ? 'PUT' : 'GET', U, false );
  X.setRequestHeader('Content-Type', 'text/html')
  X.send(V ? V : '');
  return X.responseText;
  }
</script>
<body onload="test()">
<div id="test">Only a real human should be able to read this content.</div>
</body>
</html>
content.php
PHP код:
<?php
$var 
$_REQUEST['var'];
print 
"Hello real {$var}! You can read this.";
?>
Название cookie и его содержимое предугадать практически невозможно, так как оно генерируется из случайных чисел при каждой загрузки страницы.
В итоге робот получит: Only a real human should be able to read this content.
А человек с броузером: Hello real human! You can read this.

А так же, я привел небольшой пример как передать $var1 в content.php файл в случае удачной проверки. $var1 можно было бы передать и через cookie, и таким образом убрать его содержимое из исходного кода, но это уже другая история.

Последний раз редактировалось pgolovko; 19.11.2010 в 12:35.
pgolovko вне форума   Ответить с цитированием
Старый 26.11.2010, 15:10   #4
Новичок
 
Аватар для creator-kir
 
Регистрация: 08.04.2008
Адрес: Альтернативная Вселенная
Сообщений: 35
Вес репутации: 196
creator-kir на пути к лучшему
Отправить сообщение для creator-kir с помощью ICQ
По умолчанию

Чисто вопрос: проверка (помимо всего прочего) основывается на убеждении, что робот не умеет принимать куки?...
creator-kir вне форума   Ответить с цитированием
Старый 26.11.2010, 18:30   #5
Специалист
 
Аватар для pgolovko
 
Регистрация: 07.05.2009
Адрес: Las Vegas
Сообщений: 217
Вес репутации: 189
pgolovko - как роза среди колючекpgolovko - как роза среди колючекpgolovko - как роза среди колючек
По умолчанию

Цитата:
Сообщение от creator-kir Посмотреть сообщение
Чисто вопрос: проверка (помимо всего прочего) основывается на убеждении, что робот не умеет принимать куки?...
По поводу ботов топа Гоши или Яши, 100% доказанный факт.

Гоша вполне объективно отвечает на такие вопросы:
http://www.google.com/search?hl=en&q...=&oq=&gs_rfai=

Но есть такие роботы которые читают абсолютно весь контент на вашем сайте, включая javascript, flash, и cookies. Такие роботы обычно пишутся для Windows OS, и работают непосредственно через Internet Explorer Object:
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
В 2006 году я написал аналогичный робот, который бегал по интернету собирая всякую дрянь... http://www.astanda.com/forums/viewtopic.php?t=28 Так же есть более свежие аналоги таких роботов, как XRumer и ScrapeBox, и т.д.

Ну не в этом дело.

Выше приведенные примеры кода помогают спрятать контент от ботов аналогичным с googlebot/yandexbot, которые читают в основном только human-readable текст невдаваясь в програмируемые способности вашего сайта.
pgolovko вне форума   Ответить с цитированием
Старый 26.11.2010, 20:49   #6
Новичок
 
Аватар для 5996682
 
Регистрация: 14.08.2008
Сообщений: 94
Вес репутации: 0
5996682 может только надеяться на улучшение
По умолчанию

ИМХО, если защищаться, то защищаться по полной, а не одними куками.

Делал года 1,5-2 назад такую штуку, он робота высчитывал сразу по нескольким параметрам: по кукам, как у ТС, по java-скрипту, по скорости перемещения по сайту, по количеству просмотренных страниц, по каскадности просмотра страниц, по наличию переходов по "ссылкам-ловушкам", по посылаемой "браузером" информации, наконец, по ip-базе ботов.

В результате такой разносторонней проверки выдавался "вердикт" - бот или чел, в вероятности первого. А потом, если показатель в пределах 50%-60% выдавал задержку 5 сек., если 60-70 - 15 сек. и т.д.

В принципе 99% ботов "убивалось" на корню(логи изучали очень подробно). Яша и Гоша под проверку не попадали, т.к. для них был специально разработан другой фильтр, который определял принадлежность ботов, "помеченных" как поисковые, по их ip-шникам.

Там тоже очень длинная предыстория. Но, главное, проблем с индексацией сайта не было!

Вот это защита была, и то проскакивали иногда "уникумы", а Вы говорите "куки"! Кстати, когда изучал роботов, которые пробивались все-таки, очень много хитростей для себя узнал новых.

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

Вот, много букав получилось)))

P.S. Кому лень читать полностью, обозначу главную идею 3-мя вышенаписанными словами - Контент защитить невозможно!
5996682 вне форума   Ответить с цитированием
Старый 26.11.2010, 22:26   #7
Специалист
 
Аватар для pgolovko
 
Регистрация: 07.05.2009
Адрес: Las Vegas
Сообщений: 217
Вес репутации: 189
pgolovko - как роза среди колючекpgolovko - как роза среди колючекpgolovko - как роза среди колючек
По умолчанию

Цитата:
Сообщение от 5996682 Посмотреть сообщение
по скорости перемещения по сайту, по количеству просмотренных страниц, по каскадности просмотра страниц, по наличию переходов по "ссылкам-ловушкам", по посылаемой "браузером" информации, наконец, по ip-базе ботов.
Хмм, интересные идеи. На выходных попробую воплатить в жизнь хотябы парочку из них. Жаль, MySQL захлебнётся, если поток посетителей "на проверку" будет по 500k+ в сутки. Спасибо за идеи
pgolovko вне форума   Ответить с цитированием
Старый 26.11.2010, 23:20   #8
Новичок
 
Аватар для 5996682
 
Регистрация: 14.08.2008
Сообщений: 94
Вес репутации: 0
5996682 может только надеяться на улучшение
По умолчанию

Цитата:
Сообщение от pgolovko Посмотреть сообщение
Хмм, интересные идеи. На выходных попробую воплатить в жизнь хотябы парочку из них. Жаль, MySQL захлебнётся, если поток посетителей "на проверку" будет по 500k+ в сутки. Спасибо за идеи
Ну Вы базу роботов ведите, тогда на повторные попытки роботов ресурсов меньше потратите.
5996682 вне форума   Ответить с цитированием
Старый 26.11.2010, 23:52   #9
Магистр
 
Аватар для Йода
 
Регистрация: 04.12.2007
Сообщений: 3,680
Вес репутации: 416
Йода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущееЙода - прекрасное будущее
По умолчанию

Цитата:
Сообщение от 5996682 Посмотреть сообщение
Ну Вы базу роботов ведите, тогда на повторные попытки роботов ресурсов меньше потратите.
Ога. Все сетки адсл провайдеров в гбл..
__________________
С уважением, Йода
Йода вне форума   Ответить с цитированием
Старый 27.11.2010, 00:36   #10
Новичок
 
Аватар для 5996682
 
Регистрация: 14.08.2008
Сообщений: 94
Вес репутации: 0
5996682 может только надеяться на улучшение
По умолчанию

Цитата:
Сообщение от Йода Посмотреть сообщение
Ога. Все сетки адсл провайдеров в гбл..
Не, я ж не бан лепил им. Просто при расчете учитывал, был уже бот с этого ip(сетки) или нет, соответственно, робота можно значительно быстрей вычислять. Плюс ip-шник в базу попадал в случае хотя бы 3 обращений ко мне на сайт, все обращения за 24 часа суммировались и считались, как "одно". Т.е. иными словами если с ip-шника было три попытки обхода сайта с промежутком более 24 часов между обращениями, то добавлял его в базу.

Если человек зашел бы потом с этого ip - смог бы нормально увидеть сайт, ну если б пощелкал по ссылкам по-быстрому, вырубил бы js и куки, то получил бы задержку загрузки.
5996682 вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спрятать ссылки FlyingDutchman Общие вопросы оптимизации 24 26.09.2010 23:01
Спрятать блок на странице от индексации pablodiablo Google, MSN, Yahoo 7 28.05.2010 18:47
Спрятать Внешние ссылки (ВС) lib3rty Вопросы от новичков 22 23.04.2010 15:25
Как спрятать беки от Yahoo? Штрафная РОТА Google, MSN, Yahoo 19 07.02.2010 15:34
как безопасно спрятать от глаз ссылки сапы Zsilent Вопросы от новичков 23 22.12.2008 13:52


Часовой пояс GMT +3, время: 11:10.