Эффективная борьба с ботами

В одном их проектов на н скрипт повадились боты регистрироваться. Иногда в день более 100. После того, как перепробовал несколько методов борьбы с ними, пришел к единому правильному и очень простому решению.
Сначала я поставил рекапчу от google второй версии и думал, что вопрос как бы решен. Но не тут то было. Я поставил проверку рекапчи на уровне js.
Сама кнопка регистрации у меня была не кликабельная, и при нажатии происходила проверка прохождения рекапчи, если да, то форма отправлялась.
Боты спокойно обходили все это, причем все эти действия мешали простым людям, заставляя выполнять дополнительные действия, а для ботов это не было преградой.
И тут мне пришлось внимательно и детально разобраться как работают боты.
Код HTML:
(
    [REGA] => 1
    [uLogin] => GOLD игры STEAM всегo зa 2ОО pyб: http://gmziaklz.simpleliquor.com/8b39e
    [uMail] => bekmuratov.rustembek@mail.ru
    [uPass] => n&2w1ayu5BS
    [uPass2] => n&2w1ayu5BS
    [rules] => on
    [non1] => #file_links["C:\Frazes.txt",1,N]: #file_links["C:\Links.txt",1,N]
    [non4] => n&2w1ayu5BS
    [non5] => 0
)
Это лог журнал пост post запроса обычного бота.
Как все это работает: бот считывает html код и в автомате заполняет все поля, если есть type password, то все эти поля заполняются одинаково, причем боту без разницы скрыты эти поля на форме или нет, если есть чекбоксы checkbox, то все они отмечаются тоже.

РЕШЕНИЕ
goggle рекапчу можно отключить и можно оставить.
Она на самом деле может отсечь ботов тоже, но надо ставить дополнительную проверку и дополнительный запрос в google, что при наплыве пользователей не очень хорошо.

Чтобы решить этот вопрос достаточно поставить скрытый дополнительный input в форму
Код HTML:
<div style='display: none'><input style='display: none' type='password' name='non4' value=''></div>
Я сделал это таким образом, затем в php ставим проверку на заполнение этого поля input
PHP код:
 if ($_POST['non4']) return 'this is bot';
unset (
$_POST['non4']); 
Вот и все решение: боту сообщаем, что он бот, в противном случае удаляем (через unset) это значение, для того, чтобы не мешало дальнейшей регистрации.

PS почему в качестве этой проверки выбран именно type='password': - отвечаю что у ботов прописано обязательное заполнение этих полей, если, например, стоит type='text', то бот может проигнорировать этот инпут.

Кстати данный метод подходит для всех сайтов на php html.