Как стать автором
Обновить

Комментарии 73

Я добился такого же эффекта просто переименовав поле confirm_code во что-о другое, а confirm_code, для совместимости, остался как hidden поле.
Ну и ессно в самом ucp.php тоже нужно поменять имя переменной, на соответствующее.
Это, конечно, не спасет если боты целенаправленно пришли на сайт, там и проверить можно, что нужно передавать, а от 99,99% гуляющих по сети, такая схема вполне прокатывает.
Это в принципе первое, что приходит в голову, но не хотелось ковыряться в скриптах форума, и не забывать их править при обновлениях.
В последнее время перешел на поведенческие фильтр, их сложнее ботам вычислить, чем простое переименование полей.
Согласен, но в моем случае обновление на лету, все равно не вариант, т.к. форум значительно модифицирован и слишком далек от базовой версии.
Смена дислокации форума тоже помогает
Его закрытие и уход владельца в монастырь — тоже. :) Самый верный способ избавления от спама :))
зачем так уж?

есть другой экстремальный, но 100% надежный способ — премодерация.
Это просто ваш форум еще активно не спамили, задолбаетесь разгребать.
К примеру на форуме одного из клиентов, даже просмотр закрыт для гостей, тем не менее когда там оказалось на пару сотен нормальных сообщений 14 тысяч спамерских — премодерация им перестала нравиться, и чистил я их напрямую в базе, так как, так значительно проще, чем форумными инструментами.
Можно программно спам отличать от нормальных сообщений?
На ум приходит только шерстить сообщения с веб-ссылками…
Ссылки, бб-коды и html-теги, английский язык на русскоязычном форуме, плюс анкеты юзеров (боты любят подписи сразу заполнять, и сайт прописывать). В самом phpBB какие-то очень массовые действия сложнее делать (ну по крайней мере для меня). А так слил дамп форума на локалку, и уже HeidiSQL в руки + немного php — поудалял всё лишнее, а потом в форуме сделал пересчет статистики.
На самом деле, учитывая, что спам — это не вредоносы сами по себе (не эксплойты), а реклама либо ссылки на вредоносы, то не обязательно искоренять спам сам по себе, достаточно запретить ссылки, и смысл спама пропадает

Далее, можно даже обьединять похожие (используя расстояние левенштейна или другие алгоритмы) сообщения в один, считая правкой.
Либо составляя самообучающуюся систему…

Премодерация тоже годится, если не планируется много сообщений
А Вы думаете, кто-то планирует много спама? В упоминавшемся выше форуме, всего-то пару десятков юзеров было, тем более сайт не настолько раскручен, чтобы ожидать наплыва спама (те же PR и ТИЦ у него были нулевые, месяц-два как открылся). Но по сути автоматических ботов это мало волнует, они себе лазят по нету в поисках форумов и спамят их.
Также некоторые боты не оставляют сообщений, а просто регятся и ссылки вставляют в профиль пользователя.
Премодерация, естественно, не даст показать спам, но она добавляет кучу головной боли админам или модераторам, нужно же этот мусор чистить, причем чистить придется каждый день и много.
мне например удалось отбиться от ботов путем добавления еще одного обязательного поля в профиль пользователя.
Меня всегда убивало, то что все пытаются делать капчи и прочее говно, когда нужно убрать возможность боту находить поля.

Любой форум или регистрация, да все что угодно лечится так:
а ну понятно… мы так и думали))
рано нажал на энтр )
В форме
form name="megaForm"
input name="rand()"
input name="rand()" type="hidden" value="это поле для проверки" //Проверочное поле
/form

В скрипте регистрации просто работать с массивом формы, где все поля обезличены(имена полей рандомные, ботам ухватиться негде), а проверочное поле мы всегда видим 12 в массиве и просто проверяем его наличие с заданым текстом.

Как итог это отсекло ботов вообще, они не видят формы, а написание скриптов не проходит, т.к структура формы изменена и я не жду данных имени к примеру в первом элементе формы.

Вот как-то так. Мой способ не панацея, но про ботов я не слышал вообще, равно как и не мучаю пользователей капчей. Нельзя насиловать пользователей капчей.
каптча введена неправильно, спасибо, Вы не бот
Рандомные имена полей, конечно, хороший вариант от неспециализированных ботов.
Одно плохо: автокомплит перестаёт работать.
От специализированных ботов ничего не спасет, если пишут бота специально под рессурс, анализируют сперва обычные запросы и тупо их копируют один в один.
Ну так можно все к пессимизму свести — мол, и каптчи ломают индусочасами
Я к тому что не стоит обращать внимание на спец. по, имеется ввиду защита от стандартных «ломалох» которые типа универсальны.
> «ломалох»
удачная описка = )
Блин, >.< я не так прочитал Ваш коментарий, извеняюсь =)
а мой «бот» ваш метод пробьет?:
примеру, можно распознать тип форума и заполнять поля не по их именам, а по их расположению в верстке шаблона.
Интересно! В первый раз слышу про такой способ.
1. А у Вас нет статьи на эту тему, где можно почитать? А $_POST Вы после представляете в виде массива $_POST[0], $_POST[1],… (не ассоциативного, но скалаярного) ???
2. Как в таком случае делать проверку правильной заполненности полей используя JavaScript? Ведь нам имя поля неизвестно. Обрабатывать входные данный сервером, не клиентом?
Можете мне тоже в ПМ скинуть инфу про этот способ, достаточно интересный подход. А то уже не знаю как в блоге отбиваться от ботов, на последок снёс встроенные комментарии и прикрутил facebook комменты, пока работает.
интриига…
не понимают кириллицы
очепятка, букву потеряли
Написали бы в личные сообщения.
Если не ошибаюсь в phpBB3 есть возможность сделать текстовой подтверждение, где указать свой уникальный вопрос или вопросы, а также набор ответов на них. Достаточно придумать что-то свое, что относится к теме форума и боты заглядывают все реже. =)
Вроде бы это для ботов даже легче?
Если кто-то составит конкретно для твоего форума набор ответов на вопросы. На маленьком форуме текстовое подтверждение неплохо решает проблемы с ботами.
Составить автору и проблема — надо же чтобы посетители знали ответ… В общем, ориентация на конкретную аудиторию получается.
Ну например сходу «Как называется наша планета?». И набор ответов «Земля», «Earth» и какие-то дополнительные ответы для особо одаренных. Если не смогут на такой вопрос ответить, нужны ли такие посетители? =)
А, ну такой антиспам проверен асечкой…
Это был пример легкого вопроса. На своих форумах я решал проблему вопросами из серии, «какого цвета неба» или «чему посвящен форум» или «сколько будет 22 прибавить 35». Главное составить правильный набор ответов.
Мне нравится набор с загадками, типа «С яйцами и луком, но не пирожок» — но это надо и смекалку иметь, и некоторые знания (уже, наверное, забытые) и для иностранцев не подходит…
Можно составлять вопросы для каждого языка. Если сделать вопросы хоть немножко нестандартными, это сразу отрежет всех неспециализированных ботов.
Всё, я бы не зарегистрировался к своему стыду :)
Робин Гуд, в Вашу копилку знаний.
Позор на мои седины! :) Спасибо!
Легче, но точить бота под конкретный форум нецелесообразно.
потому у хабра нет форума — нецелесообразно)
>>>Ну и напоследок submit на русском языке, при выбранном русском языке.

Вроде бот выбирал английский язык?
Да, пасиб, поправил.
в моем случае в phpbb3, когда ломали капчи, я поменял на текстовую с супер тупыми вопросами — настала удивительная тишина от сверх умных ботов.
В части «isset($_POST['password_confirm'] &&» ошибка — функция не закрыта.
КО: код писался для статьи как пример, и не тестировался.

Что Вы хотели сказать этим комментарием? Подколоть автора?
Спасибо, поправил.
года 3 назад делал для своего форума на punBB, ботов остановило на полтора года. Правда, я не подавал вида, что рега не прошла. Проверка была ровно перед INSERT в базу. Так что, и письмо с регистрацией, и все данные и отображение уходили как должны. Это, вероятно, немного затрудняло перенастройку бота.
обманщик! :D
HINT для SMF:
Большинство ботов в обязательном порядке указывают Skype login хотя он и необязателен. Но указывают его в виде 4 символьного набора [0-9a-zA-Z]{4} (зарегистрировать 4 символьный логин в скайпе нельзя).
Лично я решал проблему еще топорнее: поле [input type=«hidden» name=«js_test»], заполняется на страницу с помощью JS. Когда возник вопрос о людях с отключенным JS, мой руководитель сказал а-а-атличную фразу: «Я готов пожертвовать этими пятью долбоебами»
в моем случае это остановило только на пару месяцев. Дальше снова посыпались.
Пока хватает статичного $_POST['js_test'] == 'passed', но если опять нахлынут паразиты, можно сделать какой-то простенький CSRFToken, базирующийся, ну скажем, на sid
Первый человек в космосе:
1) Симпсон
2) Фарнсворт
3) Гагарин

И все в таком же духе. Для phpbb2 есть плагин, кажется, Antibot question. Наверное и для 3-его тоже должен быть. Помогает феноменально.
Помогает конечно, но это лишние вопросы юзерам, а в предлагаемом способе, вообще ничего лишнего вводить не нужно.
Я еще вместо 404 возвращаю левую страницу с подтверждением регистрации. Это ставит в тупик многих ботов.
Судя по логам, боты вообще редко реагируют на страницу которая выдается после регистрации. Они делают POST-запрос на регистрацию, а потом сразу же идут логиниться. Т.е. даже 404 ошибка после регистрации их не смущает.
1) 'creation_time' => '1320421149'
2) 'creation_time' => '1320421154'
разница 5мс?
разве можно за такое время заполнить все поля? или я что то неправильно понял?
Это секунды
5 секунд все равно мало, но уже по крайней мере реально, спасибо за разъяснение :)
А я отключил стандартную регистрацию и прикрутил Логинзу
«Во втором POST запросе, обращаем внимание на то, что бот выбрал английский язык, при том в предыдущем запросе он язык не менял, и типа спокойно прочитал правила форума на русском, а потом выбрал английский.»

Меня ни чуть не смутят правила/лицензионные соглашения etc. даже на вирите, и не помешает попробовать зарегистрироваться.

Но ваш подход шикарен. Бороться надо, как раз, не усложняя жизнь пользователям капчами, премодерациями и прочим анальным джихадом.
Дело в том, что в phpBB 3 на странице с правилами есть переключение языка, более того, если сменить язык на второй странице (где вводится логин, пароль и т.п.), то phpBB сразу же возвращает на страницу с теми же правилами, но уже на английском. Плюс ставится пометка, что язык был изменен с дефолтного.

Т.е. если приходит, что язык английский, то кнопка никак не может быть на русском.
А зачем отдавать 404? У бота в логах тогда будет видно что появилась защита, которую начнут изучать и обходить. Может лучше эмулировать что сообщение добавлено?
Ну по желанию можно отдавать что угодно, это уже по желанию. В статье основная задача — показать, как распознать бота.
Ага, только поменяйте в примере $_POST['change_lang'] на request_var('change_lang', '') и так далее.
А то неакуратненько.
Зачем эти костыли? Тем более, что request_var не работают в config.php, специально же делается отсев на ранней стадии, чтобы не запускать кучу кода.
У меня на форуме была текстовая каптча с несколькими вопросами вроде «Сколько будет дважды два?». Ни один спамбот её сломать не смог, а пользователям это было куда проще чем разглядывать кривые циферки и буковки.
В данном случае пользователю вообще ни капчи вводить, ни на дополнительные вопросы отвечать не нужно.
Где разместить приведенный код, чтобы он вызывался при регистрации пользователя phpbb?
Первое правило защиты от спама на phpbb3: никому не рассказывать, как ты это делаешь.
Спамеры же бдят! Так ведь? :)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории