К сожалению, на многих сайтах без особой необходимости используют капчи. Хотя можно побороть спам и незаметными для пользователя способами. Особенно, капчу больно видеть на небольших коммерческих сайтах в форме обратной связи, поскольку, капча заметно снижает конверсию таких сайтов. Для больших сайтов, которые могут специально спамить, такие методы не применимы. Однако, в большинстве случаев, без капчи можно обойтись
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e4c/276/12d/e4c27612d4ef69773db88b733e21cd11.png)
Основные причины обилия капч — это то, что разработчики не думая берут пример с популярных сервисов при разработке маленьких сайтов и не понимают почему спамят формы.
В большинстве случаев, формы спамят не для того чтобы отправить владельцу рекламное сообщение. Рекламу намного проще отправить по базе емейлов. Формы спамят, чтобы получить ссылки на сайт и этот сайт выше ранжировался в поисковых системах. Обычно ссылки таким образом получают на дорвеи — автоматически сгенерированные сайты. Спамилка не может отличить форму обратной связи от формы комментариев или сообщения в гостевой книге — поэтому спамит все подряд. Спамят формы не обычные спамеры, а дорвейщики и с другой целью.
Если в форме есть поле телефон и оно обязательное, то простая проверка: «число цифр в телефоне больше 4» сократит спам на несколько порядков. Даже если имя поля phone. Необходимости у дорвейщиков спамить формы обратной связи нет, поэтому, их спамилки редко различают это поле, а просто его заполняют всякой чепухой. Сама по себе эта проверка сократит число спама до 2-3 сообщений в месяц. Изменение имени поля еще больше сократит спам, однако, оно отключит функцию автодополнения у браузера.
В большинстве случаев для формы обратной связи достаточно этого метода.
Если мы добавим обычное поле ввода и скроем его через CSS, то пользователи его не будут заполнять (поскольку его не видят), а вот спамилка обязательно заполнит это поле.
Многие спамерские роботы не поддерживают кукиес и можно просто сохранять при загрузке какой-то кук и проверить наличие куков, после отправки формы. Однако, у части пользователей могут быть отключены куки. При их отсутствии нужно запрашивать пароль отдельно после отправки формы.
С другой стороны, часть спамилок поддерживают куки. Но не обязательно передавать куки на странице с формой, можно загрузить невидимый для пользователя IFrame и в нем передать куку. Еще меньше спамилок загружают фреймы. Такой метод реализован на wordstat.yandex.ru — если вы отключите куки он будет у вас спрашивать капчу.
Можно попробовать загружать куки через картинку, даже если спамерка использует браузер как движок, то картинки она в большинстве случаев не загружает. Однако, меня смущает то, что Яндекс это дело организовал через IFrame. Правда, дело может быть в том, что когда писался Wordstat многие пользователи из-за медленного канала отключали картинки.
Большинство спамилок не исполняют JS, особенно из внешних файлов. Можно сделать невидимое поле и в него добавлять какой-то код через JS из внешнего файла. Если у пользователя JS отключен — ему придется вводить капчу.
![](https://habrastorage.org/getpro/habr/post_images/e4c/276/12d/e4c27612d4ef69773db88b733e21cd11.png)
Основные причины обилия капч — это то, что разработчики не думая берут пример с популярных сервисов при разработке маленьких сайтов и не понимают почему спамят формы.
Почему спамят?
В большинстве случаев, формы спамят не для того чтобы отправить владельцу рекламное сообщение. Рекламу намного проще отправить по базе емейлов. Формы спамят, чтобы получить ссылки на сайт и этот сайт выше ранжировался в поисковых системах. Обычно ссылки таким образом получают на дорвеи — автоматически сгенерированные сайты. Спамилка не может отличить форму обратной связи от формы комментариев или сообщения в гостевой книге — поэтому спамит все подряд. Спамят формы не обычные спамеры, а дорвейщики и с другой целью.
Телефон содержит больше 3 цифр
Если в форме есть поле телефон и оно обязательное, то простая проверка: «число цифр в телефоне больше 4» сократит спам на несколько порядков. Даже если имя поля phone. Необходимости у дорвейщиков спамить формы обратной связи нет, поэтому, их спамилки редко различают это поле, а просто его заполняют всякой чепухой. Сама по себе эта проверка сократит число спама до 2-3 сообщений в месяц. Изменение имени поля еще больше сократит спам, однако, оно отключит функцию автодополнения у браузера.
В большинстве случаев для формы обратной связи достаточно этого метода.
Невидимое поле
Если мы добавим обычное поле ввода и скроем его через CSS, то пользователи его не будут заполнять (поскольку его не видят), а вот спамилка обязательно заполнит это поле.
Проверка кукиес
Многие спамерские роботы не поддерживают кукиес и можно просто сохранять при загрузке какой-то кук и проверить наличие куков, после отправки формы. Однако, у части пользователей могут быть отключены куки. При их отсутствии нужно запрашивать пароль отдельно после отправки формы.
С другой стороны, часть спамилок поддерживают куки. Но не обязательно передавать куки на странице с формой, можно загрузить невидимый для пользователя IFrame и в нем передать куку. Еще меньше спамилок загружают фреймы. Такой метод реализован на wordstat.yandex.ru — если вы отключите куки он будет у вас спрашивать капчу.
Можно попробовать загружать куки через картинку, даже если спамерка использует браузер как движок, то картинки она в большинстве случаев не загружает. Однако, меня смущает то, что Яндекс это дело организовал через IFrame. Правда, дело может быть в том, что когда писался Wordstat многие пользователи из-за медленного канала отключали картинки.
Проверка JS
Большинство спамилок не исполняют JS, особенно из внешних файлов. Можно сделать невидимое поле и в него добавлять какой-то код через JS из внешнего файла. Если у пользователя JS отключен — ему придется вводить капчу.