Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Самый хитрый скрипт - браузер или бот?


Автор: Analitik 16.1.2007, 13:21
Здравствуйте.
Мне необходим скрипт умеющий со 100% точностью распозновать, вернее даже отличать браузеры (пользователей сайта) от поисковых ботов. Естественно не по UserAgent!

Предполагаю необходимо смотреть список всех свойств объектов в DOM и использовать то, что может сделать ТОЛЬКО браузер.

В сети нашел вот такой пример скрипта:
Для выполнения скрипта требуются функциями форматирования и обработки блоков HTML страницы, подобныме браузерным.
Большинство ботов поисковых систем такими свойствами (к слову, совершенно лишними для робота индексатора) не обладают, но не все!

Код

<div style=”overflow:auto; height: 1px;”>
<table width=”100%”>
<tr>
<td id=”first”>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
</tr>

<tr>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td>aassssssdddddffffgggghhhhjjjkklll</td>
<td id=”second”>aassssssdddddffffgggghhhhjjjkklll</td>
</tr>

</table>
</div>

<script language=”JavaScript”>

var D=document;

function AbsPos(O, Parent){
var X=0, Y=0, Next, D=document;

Next=O; if (Parent==null) Parent=D;
while (Next!=null && Next!==Parent){
Y+=Next.offsetTop; X+=Next.offsetLeft; Next=Next.offsetParent;
}
return [X, Y];
}

var first = AbsPos(D.getElementById(’first’));

var second = AbsPos(D.getElementById(’second’));

if (first[0] != second[0]) {
Здесь выполняется действие;
}

else {
Здесь выполняется иное действие;
}

</script>


В принципе это нечто похожее на то, что мне нужно, но  не совсем.
Необходим скрипт который не при каких условиях не пропустит поискового бота на сайт, даже если этот бот будет "полностью" имитировать браузер. 

Вопросы:
1. Что умеют делать только браузеры и что может использоваться для моего скрипта?
2. Если не жалко, пример реализации?
3. Ваши предложения...

Автор: vasac 16.1.2007, 13:27
Цитата(Analitik @  16.1.2007,  13:21 Найти цитируемый пост)
3. Ваши предложения...

Не страдать фигней.

Цитата(Analitik @  16.1.2007,  13:21 Найти цитируемый пост)
не пропустит поискового бота на сайт, даже если этот бот будет "полностью" имитировать браузер. 

Чем же он тогда будет отличаться?

Нормальные роботы-индексаторы ничего плохого не сделают, тем более большинство из них можно отвадить через robots.txt

Автор: Analitik 16.1.2007, 13:32
Цитата

Не страдать фигней.

Хотелось бы конструктивных предложений.
Цитата

Чем же он тогда будет отличаться?

Это меня и интересует, наверняка есть то чего бот симитировать не сможет.

Дополнено:
Цитата

Нормальные роботы-индексаторы ничего плохого не сделают, тем более большинство из них можно отвадить через robots.txt

Robots.txt - реально это скорее рекомендация для ботов, а не запрет!
И смысл не в жестком и безотказном запрете, а в 100% верном отличии обычного пользователя от бота имитирующего пользователя!

Автор: 12345c 16.1.2007, 16:01
Если Вы не специалист, то какой смысл задавать вопросы, которые может оценить только специалист? Если Вы организатор, желающий нанять специалистов для реализации идеи - так и скажите, что нужна предварительная консультация, на которой (в этой теме) всё равно глубокий анализ не сделают, потому что не велика вероятность, что здесь попадётся  человек, писавший боты (это вероятнее в Си или Джава). Вот когда напустите сюда специалиста, он гораздо лучше будет представлять, какие вопросы задавать. А пока встречные вопросы:

1. Вы знаете случаи писания ботов, работающих через браузерный движок?
2. Для каких задач очень важно подстраиваться под человека и насколько важно противостоять?
3. Будут ли эти боты запускать движок с использованием графического интерфейса для полной идентичности поведения?

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

Автор: Analitik 16.1.2007, 16:30
Цитата

1. Вы знаете случаи писания ботов, работающих через браузерный движок?

Знаю случаи исполнения js скриптов поисковыми ботами.
Цитата

2. Для каких задач очень важно подстраиваться под человека и насколько важно противостоять?

Задач у них много - клоакинг, дорвеи...
Противостоять слово не совсем верное, вернее - определять, бот или человек.
Цитата

3. Будут ли эти боты запускать движок с использованием графического интерфейса для полной идентичности поведения?

Вряд ли...

Автор: Sardar 16.1.2007, 16:30
Большинство ботов вообще не разбирают JS, т.к. индексировать приходиться просто огромные обьёмы текста и тут уж не до заморочек. Кстати именно по этому боты (пока) не умеют индексировать флешки и менюшки сгенерированные на клиенте.

Если плевать на людей не имеющих JS и на свой рейтинг в поисковых, то можно ссылки генерить с onclick="specialLink(this.href)", где:
Код
function specialLink(url) {
  location.navigate((url.indexOf('?') >=0? '&': '?')+'i_am_not_a_bot=true');
}

Редкий бот догадаеться что это. Редкий юзер с отключенным JS поймёт зачем это было нужно smile

Автор: Analitik 16.1.2007, 16:45
Цитата

... плевать на людей не имеющих JS ...

Это можно  smile 
Цитата

... на свой рейтинг в поисковых ...

А вот этого делать нельзя.

Автор: Sardar 16.1.2007, 17:27
Analitik, спасибо за http://www.seoweblog.ru/about/ smile
Если верить статье, то современные кравлеры падают только на "отрисовке" страниц. Чем код из первого поста тебе не подходит я не понял. Бот который полностью иммитирует браузер (т.е. владеет отрисовкой, XMLHttpRequest и прочее) является браузером по определению.

Взглядом со стороны сей танец я не понял. Все поисковые боты объявляют себя по UserAgent'у, что бы продвинутые движки могли отдавать облегчённые страницы. Другие боты, что контент твой воруют лишь повышают твой рейтинг если ссылки на тебя оставляют (цитируемость), если и ссылки меняют, то забей на них, это не больше чем пыль под ногами smile

Автор: 12345c 16.1.2007, 17:51
Sardar, А нужно это для клоакинга всех мастей smile

Ты знаешь, буквально в последние 2 месяца появилась в логах сайта масса браузеров, которая ведёт себя как бот, но имеет юзер-агента, как у Мозиллы Firefox. И ведь как бота их не отметишь. Если, по статье, поисковики стали использовать хитрых ботов в последние месяцы, то это вполне может быть скрытый поисковик. Такие боты им нужны, чтобы обнаруживать клоакинг, сравнивая показания "честных" ботов и "хитрых".

Автор: Analitik 16.1.2007, 20:19
Цитата

Analitik, спасибо за инфу 
 Всегда пожалуйста.  smile 
Цитата

Чем код из первого поста тебе не подходит я не понял.

Код из первого поста  подходит для гугла, но не для яши.
Цитата

Бот который полностью иммитирует браузер (т.е. владеет отрисовкой, XMLHttpRequest и прочее) является браузером по определению.

Вот потому то я и обратился за помощью к специалистам (к вам), знал бы я все тонкости работы IE и js - не было б вопросов, сам бы все написал!
Цитата

...  буквально в последние 2 месяца появилась в логах сайта масса браузеров, которая ведёт себя как бот, но имеет юзер-агента, как у Мозиллы Firefox. И ведь как бота их не отметишь. Если, по статье, поисковики стали использовать хитрых ботов в последние месяцы, то это вполне может быть скрытый поисковик. Такие боты им нужны, чтобы обнаруживать клоакинг, сравнивая показания "честных" ботов и "хитрых".

Добавить нечего, ответ изчерпывающий.  smile 
Хотя чуть поправлю, не последние 2 месяца, а гораздо раньше (для российского поиска), просто при хорошей посещаемости выявить подобных (хитрых) ботов в логах просто не возможно, на то они и хитрые, чтоб их видно не было (в логах в первую очередь)! 

Автор: S.A.P. 17.1.2007, 18:47
Если что - то с нечеловеческой скоростью запрашивает различные страницы, то возможно это бот и ловить его надо на сервере, а не с помощью JS. Однако скачивая сайт с помощью scrapbook под Мозиллой, я веду себя как бот, хоть и не бот вовсе smile .

Автор: 12345c 17.1.2007, 19:39
S.A.P., хитрые боты могут вести себя как люди - их цель - не обойти сайт, а выявить клоакинг. Поэтому посетят (по наводке) главную страницу, и им этого достаточно. Если недостаточно, то медленно (куда спешить, если на сервере будет 20-50 окон Мозиллы с другими заданиями?) будут переходить по ссылкам, обойдя самые близкие. (Мозилла - потому что код открытый и под свои нужды настроить легко.)

Автор: OZetus 22.1.2007, 18:13
В принципе, я думаю, тема актуальна. Допустим, есть сайт на Аджаксе (страницы подгружаются лишь частично Демка: http://cgroup2.drohobych.com.ua). Дураку ясно, что такой сайтец поисковый робот не проиндексирует. Следовательно, надо подменять контент. UserAgent, как уже было сказано выше,  не очень катет. Короче, думал я, думал, что делать... Есть одна идея, но нужно еще проверить.

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

Вот, ничего пока лучше в голову не пришло smile

Автор: Sardar 22.1.2007, 18:34
Если скрипт из http://forum.vingrad.ru/topic-133197.html взять, там для генерации сигнатуры берёться очень много параметров доступных в разных браузерах. Вкупе с проверкой отрисовки контента (создать слои, замерить размеры, подвигать на абсолютной, змерить offset(Top|Left) и прочее), я даже представить не могу под какой накуркой можно создать бот, что всё это будет понимать. Другое дело что браузеры с наладонников и мобилок, а также просто экзотику можно забанить smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)