Страница 1 из 27

[ABD] Stop Advertisement bots v.2

Добавлено: 07.08.2006 9:43
Xpert
Тема закрыта в связи с выходом третьей версии данного мода, которая единственная на сегодняшний момент из всех версий обеспечивает достаточную защиту от спам-роботов. Подробнее смотрите Stop Advertisement Bots v.3

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

FAQ
Q: Я поставил мод, попробовал зарегистрироваться и меня приняли за бота. Где я мог ошибиться?
A: Ошиблись вы в том, что посчитали некоторые части инструкции недостойными своего внимания. Внимательно прочтите раздел Author Notes.

Добавлено: 07.08.2006 11:01
Shestak
С первой версией будет конфликтовать? Нужно ли будет удалять первую версию?

Добавлено: 07.08.2006 11:25
Xpert
Не изучал вопрос. Лучше удалить.

Добавлено: 07.08.2006 12:26
Shestak
Окей, как прорвется через прошлую версию мода бот, сразу попробую поставить эту версию. Кстати парочку проходило ботов через прошлую версию. Они просто не указывали поле сайта, и кстати вводили дату ДРа(у меня обязательна она).
П.С.: Спасибо за новую версию мода.

Добавлено: 07.08.2006 12:27
VovikV
По моему, нужно брать не дату запуска форума, а символы генерируемые случайным образом.
И к имени не просто добавлять символы, а как то перемешивать, или совсем заменять другими иначе допишут в скрипт спамбота регулярное выражение которое например просто отсекает от оригинальных значений все лишнее спереди и сзади.
Кроме того, по моему, зря сделали, что поле сайт сразу видно при регистрации.
Лучше бы оставили как в предыдущей версии. Ведь спамбот, даже умеющий загрузить страничку регистрации, отсечь имя от мусора и отправить запрос, это одно, а вот умеющий после всего этого, опять же повторно зайти на форум и дозаполнить поля это уже посложнее и вероятность, что будут заморачиваться с этим, меньше.

З.ы. Хорошо, что после ухода не забрасываете форум.

Добавлено: 07.08.2006 23:05
Xpert
Можно и случайным, главное - идея... Порядка 3000 ботов уже посчитали ее неперевариваемой. Поля вернул т.к. мод имхо не должен создавать никаких неудобств для пользователя.

Дата запуска форума хотя и не совсем случайная величина, но она нигде не светится извне. Поскольку она всегда присуствует в стандартном дистрибутиве, она и была взята. Если величина будет случайной, то ее надо передавать через форму. Это не есть гуд. Другие варианты - например SID.

Добавлено: 08.08.2006 5:47
VovikV
Xpert писал(а):Можно и случайным, главное - идея... Порядка 3000 ботов уже посчитали ее неперевариваемой. Поля вернул т.к. мод имхо не должен создавать никаких неудобств для пользователя.

Дата запуска форума хотя и не совсем случайная величина, но она нигде не светится извне. Поскольку она всегда присуствует в стандартном дистрибутиве, она и была взята. Если величина будет случайной, то ее надо передавать через форму. Это не есть гуд. Другие варианты - например SID.
Спасибо за разъяснения
Как будет время поставлю эту версию и попробую сохранить старую. Как аддон бы тогда выложили скрытия поля сайт, думаю многие им воспользуются. Я так просто запал на эту вашу идею, буду и дальше использовать ее.

Добавлено: 10.08.2006 15:37
ZPT
У меня боты адреса сайтов пишут в Интересах и Роде занятий. Может быть стоит отсекать при регистрации "http://"?

Добавлено: 17.08.2006 2:03
Xpert
Поставьте мод и все... какая разница что пишут, надо вообще не давать им регистрироваться.

Немного моей статистики
Было зафиксировано 3049 попыток регистрации рекламных ботов
Добавлено спустя 5 часов 44 минуты 39 секунд:

Добавочка - ставится на основной мод, принципы те же что и при регистрации, только на сей раз не даем размещать сообщения.

Добавлено: 17.08.2006 10:37
automan
Xpert писал(а):Добавочка - ставится на основной мод, принципы те же что и при регистрации, только на сей раз не даем размещать сообщения.
не понял, так если бот не сможет зарегистрироваться, так как он сможет разместить сообщение??
или это для тех у кого форум для гостей открыт ?

Добавлено: 17.08.2006 10:53
Xpert
automan писал(а):или это для тех у кого форум для гостей открыт ?
Именно.

Добавлено: 18.08.2006 13:39
Rusic

Код: Выделить всё

#
#-----[ FIND ]------------------------------------------
#
	$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
Версия форума 2.0.21 в includes/usercp_register.php нет такой строчки. Что подскажите ? Предудущего мода небыло.

Добавлено: 23.08.2006 1:20
Extremator
Какая-то фигня, всех принимает за ботов.
Старая версия пашет, а эта никак.

Добавлено: 23.08.2006 8:31
Xpert
Rusic
Значит не 2.0.21. В 2.0.21 она есть. Или некорректрое обновление.

Добавлено: 23.08.2006 18:15
Rusic
Xpert
Хм... может я чего то недопонял, но в изменених касающиеся 2.0.20 на 2.0.21 написано:

Код: Выделить всё

# 
#-----[ OPEN ]--------------------------------------------- 
# 
includes/usercp_register.php

#
#-----[ FIND ]---------------------------------------------
# Line 989
		$code = strtoupper(str_replace('0', 'o', substr($code, 6)));

#
#-----[ REPLACE WITH ]---------------------------------------------
#
		$code = substr(str_replace('0', 'Z', strtoupper(base_convert($code, 16, 35))), 2, 6);

#
#-----[ FIND ]---------------------------------------------
# Line 1002
		$confirm_image = (@extension_loaded('zlib')) ? '<img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id") . '" alt="" title="" />' : '<img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=1") . '" alt="" title="" /><img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=2") . '" alt="" title="" /><img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=3") . '" alt="" title="" /><img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=4") . '" alt="" title="" /><img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=5") . '" alt="" title="" /><img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=6") . '" alt="" title="" />';

#
#-----[ REPLACE WITH ]---------------------------------------------
#
		$confirm_image = '<img src="' . append_sid("profile.$phpEx?mode=confirm&id=$confirm_id") . '" alt="" title="" />';

# 
#-----[ OPEN ]--------------------------------------------- 
# 
login.php

#
#-----[ FIND ]---------------------------------------------
# Line 116
					
					$redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : '';
					$redirect = str_replace('?', '&', $redirect);

					if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
					{
						message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
					}

					$template->assign_vars(array(
						'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
					);

					$message = $lang['Error_login'] . '<br /><br />' . sprintf($lang['Click_return_login'], "<a href=\"login.$phpEx?redirect=$redirect\">", '</a>') . '<br /><br />' .  sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

					message_die(GENERAL_MESSAGE, $message);
				}

#
#-----[ REPLACE WITH ]---------------------------------------------
#
				}

				$redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : '';
				$redirect = str_replace('?', '&', $redirect);

				if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
				{
					message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
				}

				$template->assign_vars(array(
					'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
				);

				$message = $lang['Error_login'] . '<br /><br />' . sprintf($lang['Click_return_login'], "<a href=\"login.$phpEx?redirect=$redirect\">", '</a>') . '<br /><br />' .  sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

				message_die(GENERAL_MESSAGE, $message);
И ничего более. Такой строки нет. Правлю код только руками.

ps. Если я что то недопонял прошу прощения, но мнебы мод пригадился.