Javascript ile formları botlara karşı koruma

Javascript ile formları botlara karşı koruma
Time4VPS - VPS hosting in Europe

Formları botlardan korumanın en etkili yöntemleri reCAPTCHA'dır. Ancak bazı geliştiriciler bu methodu ziyaretçi kaybetmemek için doğru bulmaz. Çünkü bir form aracılığı ile iletişime geçmek istediğimizde "içinde araba geçen resimleri seçin" gibi bir sınava tabi tutulmayı çoğumuz sevmeyiz. Bu şekilde sınavlarla ziyaretçileri caydırmamak için bu tarz yöntemleri kullanmadığımız zaman zalim botların hedefi haline geliyoruz. Bir projede ihtiyaç duyduğum için yazdığım bu kod bloğu en basit haliyle botların formu doldurduktan sonra otomatik post etmesini engeller.

Bu kod, temelde submit butonu'nun onclick işlevi çağırılmadan (ve onclick işlevinde mouse yada tap koordinatları olmadan) submit işlevinin çalışmasını engeller.

window.submitChecked = false;
document.querySelectorAll("form").forEach(el => {
    el.querySelector("button[type=submit]").onclick = (e) => {
        if (e.clientX === 0 || e.clientY === 0) {
            e.preventDefault();
            e.stopPropagation();
        } else {
            window.submitChecked = true;
        }
    }
    el.submit = () => {
        if (window.submitChecked) {
            el.submit();
            el.querySelector("button[type=submit]").innerText = "...";
        }
    }
})
Tarih: