Бонус: этим вы заведете умников, которые отключают 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