Бонус: этим вы заведете умников, которые отключают Javascript.

Итак, давайте возьмем мою страницу контакты. Каждый день он получал от 50 до 100 спам-рассылок. Не самое худшее, что я видел, но все равно раздражает. Тем более, когда спам действительно проходит.

Что я делал

Я делал стандартный элемент приманки, вы знаете, где у вас есть текст «input», который каким-то образом скрыт с помощью CSS, и если он заполнен, вы отбрасываете отправку. Это было относительно эффективно, я бы, вероятно, дал ему твердую эффективность в 75%. Проблема с эффективностью 75%, если вы получаете 100 спам-рассылок в день, вы все равно получаете 25 спам-сообщений в день. Черт.

Затем я изменил имя этого ввода на другое имя в надежде, что это сбьет с толку спамерские скрипты, за которыми стоит небольшая хитрость — я не знаю, может быть, они игнорируют поля с именем «honeypot» или что-то супер очевидное. Я также добавил арию-метку aria-label="Don't fill this one out mate, it's the spam honeypot one", чтобы, надеюсь, любой, у кого проблемы со зрением, мог отправить мне сообщение. Это изменение входного имени помогло, и я бы сказал, что мы достигли примерно 90% успеха или 10 спам-сообщений в день, в зависимости от того, являетесь ли вы человеком со стаканом полным или стаканом пустым.

Что я делаю сейчас

То же самое, выше я не убрал, это в дополнение. Вам понадобится страница, адресованная людям, которые отключают javascript, потому что они будут громко ныть и ныть об этом в Интернете, если вы этого не сделаете. Интернет-амиши намного шумнее, чем настоящие амиши.

Нет, вы не можете отступить и принять входные данные по этому URL-адресу, потому что это противоречит всему смыслу этого. Важно, чтобы эта страница не принимала никакие формы.

Затем отправьте туда форму. <form action='https://cohan.dev/that-needs-js/'> - Ага. Ты только что полностью сломал свою форму. Отличная работа.

Нет, мы хотели сделать это. Далее мы будем использовать Javascript, чтобы исправить то, что мы только что сломали. Спам-боты в конечном итоге начнут использовать javascript, если люди будут делать это достаточно, но на данный момент я обнаружил, что почти никто из них (если вообще) делает это.

<form id='myContactForm' action='/that-needs-js/' data-action='/your/actual/form/submit/url'>

Далее, это случай, когда браузер заменяет в этом действии данных обычное действие перед отправкой формы. Забейте это где-нибудь на странице.

<script>
    function updateContactFormDestination() {
        var contactForm = document.getElementById("myContactForm");
        var realSubmitUrl = contactForm.getAttribute('data-action');
contactForm.setAttribute('action', realSubmitUrl);
    }
document.addEventListener("DOMContentLoaded", function(event) { 
        updateContactFormDestination();
    });
</script>

Теперь вы можете не получать сообщения от роботов и ботаников с отключенным javascript! :D

В настоящее время для меня это имеет 100% -ный успех. 0 спам-писем из моей формы в день.

Даю неделю.

Может быть, вам стоит подписаться на мою рассылку, когда я опубликую свой следующий бот-преступник! :D