Мои анти-спамные наработки

Список разделов phpBBex 1.x (поддерживается) Пожелания 1.x

Описание: В phpBBex 1.x чего-то не хватает? Напишите об этом здесь, и мы постараемся исправиться.
Правила раздела: Одна тема — один запрос новой возможности. Обязательно формируйте внятный заголовок, максимально отражающий суть вашей идеи. Также приведите примеры, где предлагаемая вами возможность будет актуальна.
Модератор: Поддержка

Сообщение #21 Никита Однороб » 04.11.2013, 15:13

Maze:Боты пока не умеют двигать картинки по смыслу
В KeyCaptcha вроде только две картинки нужно поставить на место. Тогда вероятность угадывания составит 50%. Вот если нужно поставить 3 кусочка, тогда вероятность 4,1%, уже можно пробовать

Добавлено спустя 8 минут 12 секунд:
Единственное, что отвлечёт спам-ботов - это генерация имён полей и лишние невидимые поля. Примерно так:
Код: Выделить всё
<input type = "text" name = "skdsjdsnmcjsijdj" />
и при каждой регистрации менять имя, id.
Идём дальше - допустим, боты просто считают кол-во полей (им точно известен номер поля на странице, куда надо ввести емайл, пароль и т.д.). Тогда делаем так:
Код: Выделить всё
<input type = "text" name = "skdsjdsnmcjsijdj" /> <!-- Это e-mail -->
<?php if (rand(1) == 0) echo "<input type = \"hidden\" name = \"sdsdwdjdj\" />"; ?>
<?php if (rand(1) == 1) echo "<div style = 'display: none'><input type = 'text' name = 'sdsdwdjdj' />"; ?>
<input type = "text" name = "skdsjqw1wcjsijdj" /> <!-- Это пароль -->
В чём суть такого способа? Бот не сможет правильно вставить данные (имя и id меняется). Если он будет вставлять по номеру поля (например, третье поле на странице это пароль и т.д.), то тогда он будет вставлять данные в поля-обманки (они не будут читаться), а в нужные поля не напишет, так как он будет считать, что уже всё написал
Никита Однороб
Репутация: 5
С нами: 10 лет 5 месяцев

Сообщение #22 Sumanai » 04.11.2013, 15:43

Никита Однороб:огда вероятность 4,1%, уже можно пробовать

Ни о чём. 1% хватит, чтобы заспамить форум. В соседней теме я показал скриншот с числом попыток разместить сообщение ботами за 10 минут. Если бы 1% из них был удачен, то среди спам сообщений нельзя было бы продохнуть.

Никита Однороб:а в нужные поля не напишет, так как он будет считать, что уже всё написал

Обычно боты заполняют все доступные поля.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #23 Maze » 04.11.2013, 16:39

Никита Однороб:В KeyCaptcha вроде только две картинки нужно поставить на место.
А вы это проверяли? Я пока нет...

Сам вариант с KeyCaptcha, повторюсь, не является идеальным, так как для составления очень простой картинки из 2 элементов особый интеллект и не требуется даже у китайцев, разгадывающих капчи за еду...
Лучше добавить какой-то хотя бы минимальный смысл, например расставить/отсортировать картинки по какому либо признаку.

И не стоит использовать единственный вариант, так как разгадав один, его уже могут использовать другие боты.
Лучше придумать несколько вариантов и сделать их ротацию.

Продвинутые боты ведь могут и анализировать поля и id, не так ли?
Но все равно, традиционная капча-обманка с полем, которое нельзя заполнять посетителям... как такая идея?

Добавлено спустя 21 минуту 8 секунд:
Интересно, насколько улучшится отсев, если к традиционной капчи добавить описание: вводить ответ наоборот (т.е. задом наперед), или в противоположной раскладке клавиатуры, жестко задавая регистр, лтбо вводить очень мелкие символы внизу самой капчи (но кроме нее самой)?
Maze
Репутация: -1
С нами: 10 лет 9 месяцев

Сообщение #24 Alexandr_ » 04.11.2013, 20:04

Maze:Продвинутые боты ведь могут и анализировать поля и id, не так ли?
Но все равно, традиционная капча-обманка с полем, которое нельзя заполнять посетителям... как такая идея?

Фейковое поле тоже можно обойти, но это частный случай. На самом деле, авто регистрация это не проблема, проблема в человеческом спаме.

Я эту проблему частично решил, усложнением регистрации.
К примеру, на странице /login.php есть 3 формы:
Авторизация, регистрация и восстановление пароля.

Для формы восстановление пароля а также для регистрации применяю данный код:
Код: Выделить всё
<?php if(date('H:i') >= '07:00' && date('H:i') < '07:30'){
   echo "<\форма\регистрации\>";
} elseif(date('H:i') >= '18:00' && date('H:i') < '18:30') {
   echo "<\форма\регистрации\>";
} else { echo "шаблон ошибки с пояснениями"; }
?>

Плюс отправка проверочного кода разбитой ссылкой (не активной)

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

Добавлено спустя 1 час 10 минут:
Или ещё рассматриваю такой вариант:

Условие
При отключенном js клиенту выдаст ошибку.
На форме стоит капча
на input sumbit стоит js с отсчетом времени. Пользователь вынужден будет свернуть окно и подождать определенное время.
Alexandr_
Репутация: 5
С нами: 10 лет 5 месяцев

Сообщение #25 Никита Однороб » 04.11.2013, 23:15

Задать для каждого форума и подфорума основной язык. Если в сообщении 50% символов другого языка - спам. Символы в теге code не учитывать.
Никита Однороб
Репутация: 5
С нами: 10 лет 5 месяцев

Сообщение #26 Sumanai » 04.11.2013, 23:24

Alexandr_:Пользователь вынужден будет свернуть окно и подождать определенное время.

Он закроет окно и забудет о вашем форуме. Я именно так и сделаю.
Вообще, идеальными будут неявные проверки поведения. Судя по логам, которые собирает лог регистраций, поведение ботов со спамерами разительно отличается отличается от поведения людей- боты просматривают меньше 5 страниц менее чем за минуту до прихода на страницу регистрации. Пользователи же обычно ходят по форуму, читают. Что на счёт живых спаммеров- им я думаю лень будет имитировать бурную деятельность до регистрации.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Пред.

Вернуться в Пожелания 1.x



cron