Я делаю веб-сайт, который требует от пользователя зарегистрироваться и войти в систему. Мой друг продолжает делать ботов с механизировать. Бот регистрируется на сайте несколько раз. Когда бот делает тонны пользователей, пользователи добавляются в таблицу базы данных.
Я создал программу для остановки записи, в которой есть пример, так как у бота есть переменная типа:
name = 0
и продолжает добавлять 1 к переменной имени.
Я думаю, что у него есть цикл while, подобный этому:
import mechanize
br = mechanize.Browser()
br.open("http://www.example.com/")
br.set_handle_robots(False) # Ignores the robots.txt file
name = 0
person = 'example',name
while True:
br.select_form( 'signup' )
br.form[ 'fullname' ] = person
br.submit()
name = name + 1
Таким образом, он в основном работает с этой программой без остановки, пока она не вылетит.
Я хочу быть в состоянии остановить это с помощью JavaScript или PHP.
Я искал ответ на это, но все методы, которые я попробовал, потерпели неудачу. Я попытался сделать таймер, чтобы увидеть, как долго человек был на странице, так как бот находится на веб-странице только около секунды. Я сделал таймер в php и javascript, и они оба потерпели неудачу.
Я рассмотрел капчу, но бот все еще может отправлять личные сообщения, и я не думаю, что пользователь останется на сайте, если ему придется заполнять капчу каждый раз, когда он хочет отправить сообщение другу. И я не хочу, чтобы в регистрационной форме была капча, потому что она не выглядит привлекательной.
У меня закончились идеи, чтобы остановить это. Это продолжалось в течение нескольких месяцев, и это действительно замедлило развитие сайта, так как я должен продолжать проверять любые записи, которые, возможно, пропустила моя программа.
Кто-нибудь знает какие-либо другие способы остановить бот.
Google выпустил свою новую технологию «reCAPTHA», которая с помощью простого флажка. Боты могут обойти это, но это очень сложно сделать. Используя это, вы можете уменьшить риск бота вашего друга. Насколько я знаю, Mechanize в настоящее время не может обойти это.
Добавьте подтверждение электронной почты при регистрации, а также ограничение уникального адреса электронной почты в вашем приложении или постоянном слое.
Объедините это с предложением adeneo об использовании скрытого поля, и вы уменьшите количество зарегистрированных ботов. Обратите внимание, что вы можете использовать уникальное имя поля + значение каждый раз, что затрудняет атаку.
Обратите внимание, что многие из предложенных предложений направлены на предотвращение общих атак. Совсем другое дело иметь дело с тем, кто специально нападает на ваш сайт, оценивая его недостатки.
Мне кажется, что самое простое решение — это войти в систему с помощью третьей стороны, такой как Facebook, и вообще не предлагать стандартную форму входа.
В качестве альтернативы, вы могли бы внедрить систему для хранения IP-адреса пользователя при создании учетной записи вместе со счетчиком, и, если с определенного IP-адреса в течение определенного периода времени создается более определенного количества учетных записей, затем выполнить корректирующее действие, такие как приостановка этих учетных записей.
У меня есть чувство, что также возможно создать пользовательский фильтр, используя fail2ban
это сделало бы эту работу — таким образом, если бы пользователь пытался зарегистрироваться слишком много раз за определенный период, он мог быть заблокирован на определенный промежуток времени.