Мод phpbb3: предотвращение регистраций спам-ботов на форуме

Клиентское и серверное программное обеспечение

Мод phpbb3: предотвращение регистраций спам-ботов на форуме

Сообщение Serg » Вт янв 08, 2013 12:14

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Предлагаемый мод позволяет проверить e-mail и ip регистрирующегося пользователя по базе данных stopforumspam.com.

Установка:
  1. Переписать все из root
  2. В ./includes/ucp/ucp_register.php найти
    Код: Выделить всё
             if (!sizeof($error))
             {
                $server_url = generate_board_url();

                // Which group by default?
                $group_name = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED';
    добавить BEFORE
    Код: Выделить всё
             // stopforumspam : begin

             include_once($phpbb_root_path . 'includes/http_get.' . $phpEx);

             if (!sizeof($error))
             {
                if ( $data['email'] != '' )
                {
                   $test_bot_server = "www.stopforumspam.com";
                   $test_bot_result = http_get ($test_bot_server,"api.php",array ("email"=>$data['email']));
                   if ( !(strpos($test_bot_result,'<appears>yes</appears>') === false) )
                   {
                      $error[] = $user->lang['EMAIL_BLACKLISTED_BOT'];
                      // automatic ban via email
                      $ban_reason = 'SPAM-Bot Registration Attempt';
                      $ban_give_reason = 'E-mail found at stopforumspam.com database';
                      if ( !user_ban('email', $data['email'], 0, '', 0, $ban_reason, $ban_give_reason) )
                      {
                         add_log('admin', 'LOG_USER_REGISTER_DENY_EMAIL', $data['email']);
                      }
                   }
                }
             }
             //
             // Temporary disabled !!!
             /*
             if (!sizeof($error))
             {
                if ( $user->ip != '' )
                {
                   $test_bot_server = "www.stopforumspam.com";
                   $test_bot_result = http_get ($test_bot_server,"api.php",array ("ip"=>$user->ip));
                   if ( !(strpos($test_bot_result,'<appears>yes</appears>') === false) )
                   {
                      $error[] = $user->lang['IP_BLACKLISTED_BOT'];
                      // automatic ban via ip
                      $ban_reason = 'SPAM-Bot Registration Attempt';
                      $ban_give_reason = 'IP found at stopforumspam.com database';
                      if ( !user_ban('ip', $user->ip, 0, '', 0, $ban_reason, $ban_give_reason) )
                      {
                         add_log('admin', 'LOG_USER_REGISTER_DENY_IP', $user->ip);
                      }
                   }
                }
             }
             */
             // stopforumspam : end
  3. В ./language/en/common.php найти
    Код: Выделить всё
       'EMAIL_SMTP_ERROR_RESPONSE'         => 'Ran into problems sending e-mail at <strong>Line %1$s</strong>. Response: %2$s.',
    добавить AFTER
    Код: Выделить всё
       // stopforumspam : begin
       'EMAIL_BLACKLISTED_BOT'            => 'Are you BOT ? Are you SPAMMER ? Your e-mail has been blocked because it is found at <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a> database.',
       'IP_BLACKLISTED_BOT'            => 'Are you BOT ? Are you SPAMMER ? Your IP has been blocked because it is found at <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a> database.',
       // stopforumspam : end
  4. В ./language/ru/common.php найти
    Код: Выделить всё
       'EMAIL_SMTP_ERROR_RESPONSE'         => 'Ran into problems sending e-mail at <strong>Line %1$s</strong>. Response: %2$s.',
    добавить AFTER
    Код: Выделить всё
       // stopforumspam : begin
       'EMAIL_BLACKLISTED_BOT'            => 'Регистрация запрещена, поскольку Ваш адрес e-mail был обнаружен в базе данных <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a>. Если Вы считаете, что это ошибка, свяжитесь с Администратором форума',
       'IP_BLACKLISTED_BOT'            => 'Регистрация запрещена, поскольку Ваш IP-адрес был обнаружен в базе данных <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a>. Если Вы считаете, что это ошибка, свяжитесь с Администратором форума',
       // stopforumspam : end
  5. В ./language/en/acp/common.php найти
    Код: Выделить всё
       'LOG_USER_GROUP_RESIGN'            => '<strong>Пользователь отказался от членства в группе</strong><br />> %s',
    добавить AFTER
    Код: Выделить всё
       // stopforumspam : begin
       'LOG_USER_REGISTER_DENY_EMAIL'         => '<strong>E-mail found at <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a> database</strong><br />> %s',
       'LOG_USER_REGISTER_DENY_IP'         => '<strong>IP found at <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a> database</strong><br />> %s',
       // stopforumspam : end
  6. В ./language/ru/acp/common.php найти
    Код: Выделить всё
       'LOG_USER_GROUP_RESIGN'            => '<strong>Пользователь отказался от членства в группе</strong><br />> %s',
    добавить AFTER
    Код: Выделить всё
       // stopforumspam : begin
       'LOG_USER_REGISTER_DENY_EMAIL'         => '<strong>Регистрация запрещена, поскольку e-mail адрес обнаружен в базе данных <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a></strong><br />> %s',
       'LOG_USER_REGISTER_DENY_IP'         => '<strong>Регистрация запрещена, поскольку IP-адрес обнаружен в базе данных <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a></strong><br />> %s',
       // stopforumspam : end
Прмечания:
  1. При регистрации польователя не стоит проверять ip, поскольку в базе данных stopforumspam.com полным-полно динамических ip и высока вероятность отказать в регистрации человеку, который вовсе не бот, и просто "попал на ip"...
  2. Ситуация, когда в e-mail используется "+" (например, Яндекс допускает использование одного ящика с суффиксами имени: mymail+123@yandex.ru, mymail+regforum@yandex.ru и т.п.), в скрипте не анализируется. Оставим это разработчикам stopforumspam.com.
  3. Тайм-аут ожидания ответа на запрос к stopfurumspam.com задан 10 секунд (бывает, сервис не отвечает из-за атак на него).
  4. Прилагаемые скрипты могут быть легко интегрированы в софт форума для анализа ip присутствующих на конференции (например, в viewonline.php).
Скачать:
stopforumspam_1_0_1.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Serg
Администратор
 
Сообщения: 88
Зарегистрирован: Ср янв 14, 2009 13:50
Имя: Сергей Юрьевич

Re: Мод phpbb3: предотвращение регистраций спам-ботов на фор

Сообщение Serg » Пт янв 11, 2013 18:52

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Бывает, хостинг становится "гнездом спамеров" и попадает под блокировку stopforumspan.com. Так, hostinger в настоящее время блокирован. В этом случае вместо ответа xml получаем 403 forbidden. Что делать ?

Возможно, например, такое решение:
  • разместить на неблокированном хостинге прилагаемый скрипт
  • заменить в модах запрос к stopforumspam.com/api на запрос к этому скрипту
Скачать:
sfst_v_1_0_0.zip
Скачать с Яндекс Диска: sfst_v_1_0_0.zip.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Serg
Администратор
 
Сообщения: 88
Зарегистрирован: Ср янв 14, 2009 13:50
Имя: Сергей Юрьевич

Re: Мод phpbb3: предотвращение регистраций спам-ботов на фор

Сообщение Serg » Пн фев 04, 2013 17:49

Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Недостаточно закрыть возможность регистрации, надо ещё и запретить спамерам размещать сообщения. Поэтому:

stoploginspamer v.1.0.0 : Предотвращение входа ранее зарегистрированных спам-ботов на форум phpBB3

Предлагаемый мод позволяет проверить e-mail пользователя, размещающего сообщение, по базе данных stopforumspam.com.
Если e-mail в базе данных, он заносится в черный список и вход спамера на форум запрещается.

Установка:
  1. Переписать http_get.php в /includes (прилагается)
  2. В /includes/session.php найти:
    Код: Выделить всё
          if ($this->data['user_type'] != USER_FOUNDER)
          {
             if (!$config['forwarded_for_check'])
             {
                $this->check_ban($this->data['user_id'], $this->ip);
             }
             else
             {
                $ips = explode(' ', $this->forwarded_for);
                $ips[] = $this->ip;
                $this->check_ban($this->data['user_id'], $ips);
             }
    и добавить после найденного:
    Код: Выделить всё
             // stoploginspamer : begin

             include_once($phpbb_root_path . 'includes/http_get.' . $phpEx);

             $test_bot_server = "www.stopforumspam.com";
             $test_bot_result = http_get ($test_bot_server,"api.php",array ("email"=>$this->data['user_email']));

             if ( !(strpos($test_bot_result,'<appears>yes</appears>') === false) )
             {
                $message = $this->lang['EMAIL_BLACKLIST_STOPFORUMSPAM'];
                $ban_reason = 'SPAM-Bot Login Attempt';
                $ban_give_reason = 'E-mail found at stopforumspam.com database';
                //if ( !user_ban('email', $this->data['user_email'], 0, '', 0, $ban_reason, $ban_give_reason) )
                user_ban('email', $this->data['user_email'], 0, '', 0, $ban_reason, $ban_give_reason);
                {
                   add_log('admin', 'LOG_USER_LOGIN_DENY_EMAIL', $this->data['user_email']);
                }

                $this->session_kill(false);

                if (defined('IN_CRON'))
                {
                   garbage_collection();
                   exit_handler();
                   exit;
                }

                trigger_error($message);
             }
             // stoploginspamer : end
  3. В /language/en/common.php найти:
    Код: Выделить всё
       'EMAIL_SMTP_ERROR_RESPONSE'         => 'Ran into problems sending e-mail at <strong>Line %1$s</strong>. Response: %2$s.',
    и добавить после найденного:
    Код: Выделить всё
       // stoploginspamer : begin
       'EMAIL_BLACKLIST_STOPFORUMSPAM'      => 'You are banned, because of your e-mail has been found at <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a> database. Please contact a board administrator.',
       // stoploginspamer : end
  4. В /language/ru/common.php найти:
    Код: Выделить всё
       'EMAIL_SMTP_ERROR_RESPONSE'         => 'Ошибка при отправке email в <strong>строке %1$s</strong>. Ответ сервера: %2$s.',
    и добавить после найденного:
    Код: Выделить всё
       // stoploginspamer : begin
       'EMAIL_BLACKLIST_STOPFORUMSPAM'      => 'Вы забанены, поскольку Ваш адрес e-mail обнаружен в базе данных <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a>. Если Вы считаете, что это ошибка, свяжитесь с Администратором форума',
       // stoploginspamer : end
  5. В /language/en/acp/common.php найти:
    Код: Выделить всё
       'LOG_USER_GROUP_RESIGN'         => '<strong>User resigned membership from group</strong><br />» %s',
    и добавить после найденного:
    Код: Выделить всё
       // stoploginspamer : begin
       'LOG_USER_LOGIN_DENY_EMAIL'         => '<strong>User banned, because e-mail found at <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a> database</strong><br />> %s',
       // stoploginspamer : end
  6. В /language/ru/acp/common.php найти:
    Код: Выделить всё
       'LOG_USER_GROUP_RESIGN'            => '<strong>Пользователь отказался от членства в группе</strong><br />> %s',
    и добавить после найденного:
    Код: Выделить всё
       // stoploginspamer : begin
       'LOG_USER_LOGIN_DENY_EMAIL'         => '<strong>Пользователь забанен, поскольку e-mail адрес обнаружен в базе данных <a href="http://www.stopforumspam.com" target="_blank">stopforumspam.com</a></strong><br />> %s',
       // stoploginspamer : end
  7. Очистить кэш.
Примечания:
  1. Ситуация, когда в e-mail используется "+" (например, Яндекс допускает использование одного ящика с суффиксами имени: mymail+123@yandex.ru, mymail+regforum@yandex.ru и т.п.), в скрипте не анализируется. Оставим это разработчикам stopforumspam.com.
  2. Если stopforumspam.com заблокирован из-за спамного хостинга, используем примочку из прерыдущего поста
  3. Используется скрипт http_get, а не file_get_contents из-за требующегося тайм-аута ожидания ответа на запрос к stopfurumspam.com, заданного 10 секунд (бывает, сервис не отвечает).
  4. Поскольку xml мне было разбирать лень, использовал просто strpos. Желающие могут переписать по вкусу)
  5. В логe администратора и модераторов (запись дублируется) будет нечто такое: Заблокирован email-адрес по причине "SPAM-Bot Login Attempt". Последние слова не стал переводить исключительно из-за лени))
  6. В логе администратора также будет такое: Пользователь забанен, поскольку e-mail адрес обнаружен в базе данных stopforumspam.com. Излишняя информация по п.п.5,6 связана с тем, что в user_ban в лог всегда выдается запись о блокировке e-mail (это, на мой взгляд, фича от разработчиков phpBB), правильная строчка "if(!user_ban....)" закомментирована.
  7. E-mail попадает в черный список (бессрочная блокировка).

Комплект (readme.txt + http_get.php) прилагается:
stoploginspamer_1_0_0.zip

Это черновой, но рабочий вариант, проверяет любого пользователя в момент открытия сессии.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Serg
Администратор
 
Сообщения: 88
Зарегистрирован: Ср янв 14, 2009 13:50
Имя: Сергей Юрьевич


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1