ExBB Community » Файловый ExBB » Модификации и дополнения » Дополнение: Определение пауков поисковиков

Страниц (7): [1] 2 3 4 5 6 7 »
 

1. Икар - 13 декабря 2010 — 15:55 - перейти к сообщению
Установка:

1) Добавляем новый класс (и присваиваем этому классу заданный цвет, которым будут отображаться Боты - у меня желтый) в /templates/имя_стиля/style.css. Что следует добавить и в какое место - выделено полужирным шрифтом.
style.css (Отобразить)


2) language/russian/lang_front_all.php
В нем находим, расшифроки Пользователей форума и добавляем новую расшифровку Бот (Что следует добавить и в какое место - выделено полужирным шрифтом.):
Цитата:
$this->LANG['Admin'] = 'Администратор';
$this->LANG['Moderator'] = 'Модератор';
$this->LANG['SuperModer'] = 'Супермодератор';
$this->LANG['User'] = 'Пользователь';
$this->LANG['Robot'] = 'Бот';


в этом же файле находим расшифровки:

CODE:
$this->LANG['OnlineDataVSHide'] = ...
$this->LANG['OnlineData'] = ...
$this->LANG['TodayVisit'] = ...


ремим их и вставляем за ними (для привода к стандартному виду отображения, читаем "удаляем их и вставляем..." Удаляем строки - начинающиеся у меня в примере с //):

Цитата:
//$this->LANG['OnlineDataVSHide'] = 'За последние %d минут форум посетило: %d (гостей: %d, зарегистрированных: %d, скрытых: %d)';
//$this->LANG['OnlineData'] = 'За последние %d минут форум посетило: %d (зарегистрированных: %d, гостей: %d)';
//$this->LANG['TodayVisit'] = 'Сегодня форум посетили: %d (гостей: %d, зарегистрированных: %d%s)%s';
$this->LANG['OnlineDataVSHide'] = 'За последние %d минут форум посетило: %d (ботов:%d, гостей: %d, зарегистрированных: %d, скрытых: %d)';
$this->LANG['OnlineData'] = 'За последние %d минут форум посетило: %d (зарегистрированных: %d, гостей: %d, ботов:%d)';
$this->LANG['TodayVisit'] = 'Сегодня форум посетили: %d (ботов: %d, гостей: %d, зарегистрированных: %d%s)%s';


3) Только (для стиля Invision2), - в других стилях ЭТОТ ПУНКТ ПРОПУСКАЕМ!
В templates/имя_стиля/board_body.tpl
находим строку ниже (у меня 51 строка) и добавляем выделенный фрагмент:
Цитата:
<td class="row1">{$countonline}<br/><div>{$fm->_MembersOutput}</div><a href="tools.php?action=online" title="{$fm->LANG['ViewFullList']}"><b>{$fm->LANG['WhoOnline']}</b></a>&nbsp;[ <span class="admin">{$fm->LANG['Admin']}</span>, <span class="supmoder">{$fm->LANG['SuperModer']}</span>, <span class="moder">{$fm->LANG['Moderator']}</span>, <span class="robot">{$fm->LANG['Robot']}</span>, {$fm->LANG['User']} ]{$todayvisit}{$userstop}</td>


4) В index.php
находим строки
CODE:
sprintf($fm->LANG['OnlineDataVSHide']...
sprintf($fm->LANG['OnlineData']...

ремарим их и вставляем за ними (для привода к стандартному виду отображения материала, читаем "удаляем их и вставляем...", строки подлежащие удалению начинаются //).
CODE:

//sprintf($fm->LANG['OnlineDataVSHide'],$fm->exbb['membergone'],$fm->_OnlineTotal,$fm->_OnlineGuest,$fm->_Members,$fm->_Invisible):
//sprintf($fm->LANG['OnlineData'],$fm->exbb['membergone'],$fm->_OnlineTotal,$fm->_Members,$fm->_OnlineGuest);
sprintf($fm->LANG['OnlineDataVSHide'],$fm->exbb['membergone'],$fm->_OnlineTotal,$fm->_OnlineRobots,$fm->_OnlineGuest,$fm->_Members,$fm->_Invisible):
sprintf($fm->LANG['OnlineData'],$fm->exbb['membergone'],$fm->_OnlineTotal,$fm->_Members,$fm->_OnlineGuest,$fm->_OnlineRobots);


Далее находим переменную $online_last - ремарим и после неё вставляем (для привода к стандартному виду отображения материала, читаем "удаляем их и вставляем..., строки, подлежащие удалению, начинаются с //":
CODE:
//$online_last = ... (там длинная строка)
$online_last = $countonline . ' [ <span class="admin">'.$fm->LANG['Admin'].'</span>, <span class="supmoder">'.$fm->LANG['SuperModer'].'</span>, <span class="moder">'.$fm->LANG['Moderator'].'</span>, <span class="robot">'.$fm->LANG['Robot'].'</span> ]';


в том же файле находим функцию today() (она в самом низу index.php должна быть) - ПОЛНОСТЬ ЕЁ РЕМАРИМ (в стандартном изложении материала - читай ПОЛНОСТЬЮ ЕЁ УДАЛЯЕМ) и заменяем на ту, что в спойлере.

Спойлер (Отобразить)


5) В файле /include/ fm.class.php ремим (в стандартном изложении материала читаем - удаляем) полностью и вставляем ниже функцию _OnlineLog из спойлера (все ремарки из функции в спойлере можно удалить)
Текст _OnlineLog (Отобразить)


Что должно получиться в итоге:
2. Икар - 13 декабря 2010 — 16:54 - перейти к сообщению
Дополнение "Ловля ботов поисковиков" (дополнения и разъяснения)

Если список роботов мал...
Кстати, все отлавливаемые боты перечислены в fm.class.php в функции

function _IsSpider() (Отобразить)


Кому мало - можете дописать из этого списка :
Список поисковиков (в нагрузку) (Отобразить)


ВЫЛОЖИЛ Все измененные файлы от сегодняшнего 19 декабря 2010 (которые у меня сейчас на хостинге) - для просмотра, поскольку установка сложна!
3. Икар - 15 декабря 2010 — 11:21 - перейти к сообщению
Ответы на возникшие вопросы:

Umbr пишет:
У меня вопросы по описанию установки:
Икар пишет:
1) Добавляем новый класс

В какое место ставить?

Строки текста показаны обычным шрифтом, что следует добавить и конкретно куда - выделено.

Umbr пишет:

Цитата:
3) (для стиля Invision2), - в других стилях этого НЕ СДЕЛАЕТЕ!

Предыдущие стоки подходят или только те которые следуют дальше?

Пункт 3) только для стиля Invision2, для других стилей - этот пункт пропускаем.

Umbr пишет:

Полностью "заремарить текст", это перед каждой строкой прописать // или достаточно ставить их перед определённым блоком? Можно ли всё оформить в классическом варианте: "найдите - замените"?

Если Вам удобнее, то вместо "заремарьте" - читайте "удалите". Я текст ремарю, поскольку, возможно, когда-нибудь потребуется посмотреть - что было в классическои исполнении. Что конкретно ремарить - показано в кодах, в строках начинающихся с //.

Umbr пишет:

Это добавление "привлекает" роботов или просто фиксирует их вход?

Фиксирует вход и отображает в списке входивших за сегодняшний день + показывает присутствие в реальном времени.


===========================================
Прошу модераторов удалить все дальнейшие сообщения до конца темы.
===========================================
4. nikk - 15 декабря 2010 — 11:24 - перейти к сообщению
ИкарДа работает или нет?! Улыбка
(Добавление)
Черт! Похоже у тебя все получилось! Вижу что тебя посетил Googlebot, Yandex
5. Икар - 15 декабря 2010 — 11:29 - перейти к сообщению
Как работает - смотрите форум в подписи.
Сейчас посмотрел логи:
Цитата:
Googlebot (1087+19 8.84 МБ 14 Дек 2010 - 23:58)
Yandex bot (1859+158 8.50 МБ 14 Дек 2010 - 23:57)

Думаю, что боты пробыли на сайте больше 3 минут (судя по загруженному объему), поэтому - похоже на правду...


Но ещё очень сыро.
Роботов хочу выделить в отдельную группу и отделить от гостей и пользователей, что бы была запись:

Цитата:

Сегодня форум посетили: 20 (гостей: 12, зарегистрированных: 6, роботов: 2)


Как проверить - работает ли отображение робота в текущий момент, в строке:
Цитата:
За последние 15 минут форум посетило:

или придется ждать 23.NN? Примерно в это время меня боты посещают ежедневно.
(Добавление)
Думаю, что ссылку надо бы изменить, а то при нажатии (на Яндекс бота) вылезает:

Я же вместо ID пользователя записываю IP поисковика... Радость естественно, что такого пользователя в системе нет.
6. nikk - 15 декабря 2010 — 13:03 - перейти к сообщению
сделал все у тебя, но ботов не видною.. или нужно подождать?
(Добавление)
Икар
можешь весь код fm.class.php выложить?
7. Икар - 15 декабря 2010 — 13:22 - перейти к сообщению
Вот весь fm.class.php.

Получай!!! И надеюсь поможешь сообразить откуда что дальше брать...
а то брожу по скриптам и концов всё найти не могу.
8. nikk - 15 декабря 2010 — 13:36 - перейти к сообщению
Икар пишет:
Сегодня форум посетили: 20 (гостей: 12, зарегистрированных: 6, роботов: 2

А интересно, если один и тот же робот зайдет два-три раза в течении суток, он будет учитываться как один робот или каждый раз как новый?
(Добавление)
и еще...
у меня появился Googlebot, но при клике на него, перекидывает на страницу профиля юзера! Как это?
http://militaryforum.ru/profile....ber=66.249.66.75
9. Икар - 15 декабря 2010 — 13:56 - перейти к сообщению
nikk пишет:
Икар пишет:
Сегодня форум посетили: 20 (гостей: 12, зарегистрированных: 6, роботов: 2

А интересно, если один и тот же робот зайдет два-три раза в течении суток, он будет учитываться как один робот или каждый раз как новый?

Цитата:
// Правка Николая Захаренкова
// if (!$this->user['id'] && !isset($onlinedata[$sessid]) && empty($onlinedata[$sessid]['id']))
if (!$this->user['id'] && !$this->_IsSpider && !isset($onlinedata[$sessid]) && empty($onlinedata[$sessid]['id']))
$today['guests']++;

// Правка Николая Захаренкова
elseif ($this->_IsSpider) {
$today['members'][$this->_IP] = array(
'n' => $this->_IsSpider,
's' => 'ro',
'v' => $visible
);
}
//конец правки Николая Захаренкова


Гости получаются если на странице НЕ user['id'] и НЕ Spider и с сессиями порядок.
Если на странице Spider, то полезай в массив today как робот. (сказанное - выделил)
Т.е. идентификация по имени.
(Добавление)
nikk пишет:
у меня появился Googlebot, но при клике на него, перекидывает на страницу профиля юзера! Как это?
http://militaryforum.ru/profile....ber=66.249.66.75


Всё правильно - строка 709 в высланном мной файле:
CODE:
$output[] = '<a href="profile.php?action=show&member='.$info['id'].'" class="'.$class.'">'.$info['n'].'</a>';


В $info['id'] я подставляю IP робота - поэтому так и и получается.
Тут надо додумать - или сделать ссылку на статью какую-нибудь про поисковиков на своём сайте или ещё что...
10. nikk - 15 декабря 2010 — 14:06 - перейти к сообщению
Икар пишет:
Тут надо додумать - или сделать ссылку на статью какую-нибудь про поисковиков на своём сайте или ещё что...

а может вообще не надо ссылку делать? Ну был робот на форуме и хорошо.. Сам факт присутствует и ладно.. Улыбка
11. Икар - 15 декабря 2010 — 14:17 - перейти к сообщению
nikk пишет:
Икар пишет:
Тут надо додумать - или сделать ссылку на статью какую-нибудь про поисковиков на своём сайте или ещё что...

а может вообще не надо ссылку делать? Ну был робот на форуме и хорошо.. Сам факт присутствует и ладно.. Улыбка


Ну да - к тому же IPшник засветился.
Сделал себе так (в той самой строке 709):
CODE:
$output[] = '<a class="'.$class.'" title="'.$info['id'].'">'.$info['n'].'</a>';


Теперь по идее - новый засвеченный бот не будет иметь переходной ссылки, а при наведении на него - будет в всплывающей ссылке высвечивать IP, откуда приходил.
====================================================
====================================================
Теперь надо бы подумать про:

1)
Цитата:
Сегодня форум посетили: 20 (гостей: 12, зарегистрированных: 6, роботов: 2)

Куда сунуться что бы добавить эту незамысловатую надпись?

2) Показ присутствия бота и в какой теме он шурстит.

Какие предлжения? Предположения?
12. nikk - 15 декабря 2010 — 14:46 - перейти к сообщению
Икар пишет:
Куда сунуться что бы добавить эту незамысловатую надпись?

templates/InvisionExBB/modules/userstop/userstop.tpl
может сюда? Хм
13. Икар - 15 декабря 2010 — 16:36 - перейти к сообщению
Отделяем Ботов от пользователей, для этого:

1) Добавляем новый класс (и присваиваем этому классу заданный цвет, которым будут отображаться Боты - у меня желтый) в /templates/[ваш шаблон]/style.css
style.css (Отобразить)


2) language\ russian\ lang_front_all.php
В нем находим, расшифроки Пользователей форума и добавляем новую расшифровку Бот:
Цитата:
$this->LANG['Admin'] = 'Администратор';
$this->LANG['Moderator'] = 'Модератор';
$this->LANG['SuperModer'] = 'Супермодератор';
$this->LANG['User'] = 'Пользователь';
$this->LANG['Robot'] = 'Бот';


в этом же файле находим расшифровки:
CODE:
$this->LANG['OnlineDataVSHide'] = ...
$this->LANG['OnlineData'] = ...
$this->LANG['TodayVisit'] = ...

ремим их и вставляем за ними:
CODE:
$this->LANG['OnlineDataVSHide'] = 'За последние %d минут форум посетило: %d (ботов:%d, гостей: %d, зарегистрированных: %d, скрытых: %d)';
$this->LANG['OnlineData'] = 'За последние %d минут форум посетило: %d (зарегистрированных: %d, гостей: %d, ботов:%d)';
$this->LANG['TodayVisit'] = 'Сегодня форум посетили: %d (ботов: %d, гостей: %d, зарегистрированных: %d%s)%s';


3) В templates\[ваш шаблон]\board_body.tpl
находим перечисление категорий кользователей и вставляем выделенную расшифровку:
Цитата:
<span class="admin">{$fm->LANG['Admin']}</span>,
<span class="supmoder">{$fm->LANG['SuperModer']}</span>,
<span class="moder">{$fm->LANG['Moderator']}</span>,
<span class="robot">{$fm->LANG['Robot']}</span>,

Как искать?


Ищите предыдущую строчку в поиске
CODE:
<span class="moder">{$fm->LANG['Moderator']}</span>,
, если не найдено, то
CODE:
$fm->LANG['Moderator']
и после закрывающегося тега и запятой за ним (</span>,) вставляете выдененную строчку.

=========================================
=========================================

У сегодня найденных ботов не прописался класс поэтому им не добавился новый цвет, и они уже записаны в файле, где хранятся все посетившие форум. Завтра файл перезапишется... тогда посмотрим - будут ли ботики желтенькими? Если не пожелтеют - придется ещё немного копнуться в скриптах в поиске места присоединения класса.

=========================================
=========================================

Кстати, все отлавливаемые боты перечислены в fm.class.php в функции

function _IsSpider() (Отобразить)


Кому мало - можете дописать из этого списка
Список поисковиков (в нагрузку) (Отобразить)


=========================================
=========================================


Отметки делаю для себя, пока решение полностью не готово.
Продолжу поиск решения позже!!!
Текущий этап можно увидеть на форуме у меня в подписи
14. nikk - 15 декабря 2010 — 17:12 - перейти к сообщению
Икар пишет:
находим перечисление категорий кользователей и вставляем объявленную расшифровку:

подскажи, где конкретно находятся список категорий?
15. Икар - 15 декабря 2010 — 17:22 - перейти к сообщению
nikk пишет:
Икар пишет:
находим перечисление категорий кользователей и вставляем объявленную расшифровку:

подскажи, где конкретно находятся список категорий?


В \templates\[ваш шаблон]\board_body.tpl
Поищи
CODE:
$fm->LANG['Moderator']

дальше - копируешь эту надпись и все теги в которых она закреплена, и вставляешь рядом, только вместо LANG['Moderator'] пишешь LANG['Robot'] и меняешь класс css c moder на robot.

Вот вся строка полностью у меня (скопированное - подчеркнуто, вставленное и измененное - выделено):
Цитата:
<td class="row1">{$countonline}<br/><div>{$fm->_MembersOutput}</div><a href="tools.php?action=online" title="{$fm->LANG['ViewFullList']}"><b>{$fm->LANG['WhoOnline']}</b></a>&nbsp;[ <span class="admin">{$fm->LANG['Admin']}</span>, <span class="supmoder">{$fm->LANG['SuperModer']}</span>, <span class="moder">{$fm->LANG['Moderator']}</span>, <span class="robot">{$fm->LANG['Robot']}</span>, {$fm->LANG['User']} ]{$todayvisit}{$userstop}</td>

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0537]     [ ]