Poražení formulářových spamových robotů

Bonus:Tímhle skoncujete s pitomci, kteří deaktivují Javascript.

Dobře, vezměte si moji kontaktní stránku. Každý den dostával asi 50 až 100 spamových příspěvků. Není to nejhorší, co jsem viděl, ale stále otravné. Více, když spam skutečně projde.

Co jsem dělal

Dělal jsem standardní prvek honeypot, víte, kde máte text, který je nějakým způsobem skrytý pomocí CSS, který, pokud je vyplněn, zahodíte příspěvek. Bylo to relativně účinné, pravděpodobně bych mu dal solidních 75% účinnost. Problém se 75% účinností, pokud jste dostávali 100 spamových zpráv denně, stále dostáváte 25 spamových zpráv denně. Sakra.

Pak jsem změnil název tohoto vstupu na jiný název v naději, že to podrazí spammerské skripty, které za sebou měly mírnou dávku chytrosti – nevím, možná ignorují pole s názvem „honeypot“ nebo něco super zřejmého. Také jsem přidal štítek árie aria-label="Don't fill this one out mate, it's the spam honeypot one" takže doufejme, že pokud by mi někdo se zrakovými potížemi mohl stále poslat zprávu. Tato změna názvu vstupu pomohla a řekl bych, že jsme dosáhli přibližně 90% úspěšnosti nebo 10 spamových zpráv denně v závislosti na tom, zda jste typ člověka plného nebo prázdného skla.

Co právě dělám

Totéž, výše uvedené jsem neodstranil, je to navíc. Budete potřebovat stránku, která osloví lidi, kteří deaktivují javascript, protože pokud to neuděláte, budou na to hlasitě nadávat a naříkat. Internetoví Amishové jsou mnohem hlučnější než skuteční Amish.

Ne, nemůžete ustoupit a přijmout vstupy na této adrese URL, protože to maří celý smysl tohoto. Je důležité, aby tato stránka nebyla přijmout jakékoli odeslání formuláře.

Dále tam odešlete svůj formulář. <form action='https://cohan.dev/that-needs-js/'> - Ano. Právě jsi úplně rozbil svou formu. Výborně.

Ne, chtěli jsme to udělat. Dále použijeme Javascript k opravě toho, co jsme právě rozbili. Spamovací roboti nakonec začnou používat javascript, pokud to lidé dostatečně udělají, ale prozatím jsem zjistil, že to nedělá téměř žádný z nich (pokud vůbec nějací).

<form id='myContactForm' action='https://cohan.dev/that-needs-js/' data-action='https://cohan.dev/your/actual/form/submit/url'>

Dále je to případ, kdy prohlížeč nahradí v této datové akci běžnou akci před odesláním formuláře. Napiš to někam na stránku.

<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>

Nyní se můžete vyhnout přijímání zpráv od robotů a pitomců s vypnutým javascriptem! :D

V současné době to má pro mě 100% úspěšnost. 0 spamových e-mailů přicházejících z mého formuláře denně.

Dávám tomu týden.

Možná byste se měli přihlásit k odběru mého e-mailového seznamu, až zveřejním svého dalšího robota! :D