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

Как массово удалить спам ботов?


gass2005

Вопрос

Здравствуйте, на форуме порядка 77 000 пользователей, но сидит там максимум 100-300 человек. Как узнать, кто бот, а кто реальный человек? Есть ли какая нибудь тактика в таких случаях? Хотелось бы почтистить ботов, при этом не удалив реальных людей и постов.

 

Был бы очень благодарен, если бы вы помогли решить мне эту проблему.

Версия IP.Board 2.2.2

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

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

  • 0

Для 1.х делал что-то подобное давным-давно.

В функции prune_confirm() с давних пор у меня есть такой код:

		if($IN['bot_activity'])
	{
		$ADMIN->page_title = "Удаление пользователей";

		$ADMIN->page_detail = "Подтвердите действие удаления.";

		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'doprune' ),
												  2 => array( 'act'   , 'mem'     ),
												  3 => array( 'query' , $pass_query ),
									     )      );

		$SKIN->td_header[] = array( " "  , "20%" );
		$SKIN->td_header[] = array( " "  , "80%" );

		$ADMIN->html .= $SKIN->start_table( "Подтверждение удаления" );

		if($IN['mgroup'] > 0)$add_query = "AND mgroup='".$IN['mgroup']."' ";
		else $add_query = "";

		$DB->query("SELECT id, name, signature, website, posts FROM ibf_members WHERE (signature LIKE '%http://%' OR length(website) >7) $add_query ORDER BY posts DESC");
		while ($row = $DB->fetch_row())
		{
			$mem = '<input type="checkbox" name="del_id[]" value="'.$row['id'].'"';
			if(!$row['posts'])$mem .= ' checked';
			$mem .= '>';
			$mem .= $std->make_profile_link($row['name'], $row['id']);
			if($row['posts'])$mem .= ' ('.$row['posts'].')';

			$habar = '<table width="100%" border="1" cellspacing="0" cellpadding="2"><tr><td>'.$row['website'].'</td><td> </td><td>'.$row['signature'].'</td></tr></table>';

			$ADMIN->html .= $SKIN->add_td_row( array( $mem ,
													  $habar
										     )      );
		}

		$ADMIN->html .= $SKIN->end_form("Удалить пользователей");

		$ADMIN->html .= $SKIN->end_table();

		$ADMIN->output();
	}

Думаю, что-то подобное и под двушки не сложно будет переписать.

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

  • 0

както так

               if($IN['bot_activity'])
               {
                       $this->ipsclass->admin->page_title = "Удаление пользователей";

                       $this->ipsclass->admin->page_detail = "Подтвердите действие удаления.";

                       //-------------------
                       // $pass_query - ?
                       //--------------------

                       $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 
                       							1 => array( 'code'  , 'doprune' ),
												2 => array( 'act'   , 'mem'     ),
												3 => array( 'query' , $pass_query ),
												                                       ) );

                       $this->ipsclass->adskin->td_header[] = array( " "  , "20%" );
                       $this->ipsclass->adskin->td_header[] = array( " "  , "80%" );

                       $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Подтверждение удаления" );

                       // $IN['mgroup'] - ??

                       if($IN['mgroup'] > 0) $add_query = "AND mgroup='".$IN['mgroup']."' ";
                       else $add_query = "";

                       $this->ipsclass->DB->query("SELECT m.id, m.name, m.posts, me.signature, me.website, me.id as m_id FROM ibf_members m, ibf_member_extra me WHERE m.id = me.id and (signature LIKE '%http://%' OR length(website) >7) $add_query ORDER BY posts DESC")

                       while ($row = $this->ipsclass->fetch_row())
                       {
                               $mem = '<input type="checkbox" name="del_id[]" value="'.$row['id'].'"';
                               if(!$row['posts'])$mem .= ' checked';
                               $mem .= '>';
                               $mem .= $std->make_profile_link($row['name'], $row['id']);
                               if($row['posts']) $mem .= ' ('.$row['posts'].')';

                               $habar = '<table width="100%" border="1" cellspacing="0" cellpadding="2"><tr><td>'.$row['website'].'</td><td> </td><td>'.$row['signature'].'</td></tr></table>';

                               $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $mem ,
                                                                                                                 $habar
                                                                                            )      );
                       }

                       $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Удалить пользователей");

                       $this->ipsclass->html .= $this->ipsclass->adskin->end_table();

                       $this->ipsclass->admin->output();
               }

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

  • 0

siv1987, вы не всё изменили.

 

В 2.x есть замечательный инструмент для удаления в АЦ, при поиске пользователей. так что просто фильтруем там регистрации по дате и по количеству постов и массово удаляем, незачем велосипеды писать.

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

  • 0

Sannis, это кнопка в Manage Members что ли? А где там есть функция эта? ну типо кто не писал, того удаляем? Так тоже можно...

 

P.S. Если я что-то не так понял, не могли бы вы поподробней объяснить?

Заранее большое спасибо!

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

  • 0

незачем велосипеды писать.

У меня форум + mJournal и довольно много зарегистрированных с нулем сообщений активно ведут свои блоги.

Если по нулю постов плюс дате последней активности - уже лучше.

Но мой велосипед лучше: ноль постов и созданная подпись уже вызывают сомнения в здравом рассудке посетителя, а если до кучи еще и линк в подписи - такой бред только ботописателям может в голову прийти. ;)

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

  • 0

А чо, мне нравится))

http://i073.radikal.ru/1008/a1/f4ed86e84818.jpg

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

  • 0

Установите мод _MA23__Move_Inactive_Members_v1.4.2

Он сам отберет всех кто давно не заходил на форум, к примеру 365 дней или у кого 0 сообщений

Создайте новую группу

Мод перенесет всех в эту группу

Если захотите, то мод отправит всем этим пользователям сообщения

Какое вы напишите

Типа, если не зайдете, то будите удалены

 

А потом можете удалять всех

Я правда в ручную всех удалял, так как у меня мало народу было, но думаю и для автоматического удаления есть мод

 

Мод можно скачать здесь http://www.invisionmodding.com/files/

Там же и посмотреть, для автоматического удаления

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

  • 0

Sannis, это кнопка в Manage Members что ли? А где там есть функция эта? ну типо кто не писал, того удаляем? Так тоже можно...

 

P.S. Если я что-то не так понял, не могли бы вы поподробней объяснить?

Заранее большое спасибо!

Прочитайте документацию целиком, прежде чем задавать такие вопросы :-)

Если вы предпочитаете сохранять славянский менталитет и также как большинство читаете лицензионные сообщения за 1 секунду, то хоть http://wiki.iblink.ru/documentation/acp/management/users_and_groups прочитайте.

Правда во втором случае какой же из вас админ?

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

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

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

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