Kontakt formangizga har kuni o'nlab spam xabar tushyaptimi? Reklama linklari, tushunarsiz xabarlar, "ish taklif qilaman" deb yozadigan botlar — bularning hammasi avtomatik dasturlar tomonidan yuboriladi. CAPTCHA qo'yish bitta yo'l, lekin foydalanuvchi uchun noqulay. Honeypot — ko'rinmas, ammo botlar uchun tuzoq.
Honeypot qanday ishlaydi
Formaga oddiy maydon qo'shasiz, masalan "website" yoki "phone_number" deb nomlangan. Bu maydonni CSS yordamida foydalanuvchidan yashirasiz — display:none yoki ekrandan tashqariga chiqarib qo'yasiz. Haqiqiy foydalanuvchi bu maydonni ko'rmaydi, demak hech nima yozmaydi. Bot esa formaga kirib hamma maydonlarni to'ldiradi — chunki bot ko'r, u HTML kod ichidagi maydon bor-yo'qligini tekshiradi, ko'rinish-ko'rinmasligini emas. Server tomonida tekshiruv qilasiz: agar yashirin maydon bo'sh bo'lmasa, bu bot, xabarni rad qilasiz.
Texnik amalga oshirish
HTMLda input qo'shing: name="website" type="text" tabindex="-1" autocomplete="off". CSSda bu maydonni position:absolute, left:-9999px qilib qo'ying yoki display:none ishlatib yashiring. PHP tomonida POST so'rovni qabul qilganda birinchi navbatda shu maydonni tekshiring. Agar to'ldirilgan bo'lsa, hech nima qaytarmasdan dasturni to'xtating yoki "rahmat, xabaringiz qabul qilindi" deb yozing va aslida hech nima qilmang. Bot o'zini muvaffaqiyatli yuborgan deb o'ylab ketadi.
Qaysi nomni tanlash kerak
Honeypot maydonining nomi muhim. Botlar ko'pincha umumiy nomlarni qidiradi: email, name, phone, website, url, address. Shulardan birini tanlang — botlar uni ko'rib darrov to'ldiradi. "honeypot" yoki "trap" deb nomlamang — zamonaviy botlar bunday nomlarni tanib o'tib ketadi. Eng yaxshisi "website" yoki "homepage" — chunki bu maydonlar haqiqiy formada ham uchraydi, bot ehtiyotsizlik qiladi.
Qo'shimcha himoya qatlamlari
Honeypot yolg'iz emas, boshqa usullar bilan birga ishlaganda kuchli bo'ladi. Vaqt tekshiruvi qo'shing: agar foydalanuvchi formani 2 soniyadan kam vaqt ichida to'ldirgan bo'lsa, bu odam emas, bot. JavaScript token ishlating: sahifa yuklanganda JS bilan yashirin token qo'ying, server uni tekshirsin — bot odatda JS bajarmaydi. IP rate-limit qo'ying: bir IPdan daqiqada 3tadan ko'p yuborish bo'lsa, bloklang.
CAPTCHA bilan solishtirish
reCAPTCHA va hCaptcha samarali, lekin foydalanuvchini bezovta qiladi. "Men robot emasman" tugmasini bosish, rasm ichidan svetafor topish — bularning hammasi konversiyani 10-30% kamaytiradi. Honeypot ko'rinmaydi, hech kim sezmaydi, lekin spamning 95% ini to'xtatadi. Eng nozik formalar uchun ikkalasini birlashtirish mumkin: honeypot birinchi qatlam, CAPTCHA shubhali holatlar uchun.
Sayt.uz amaliyot
Sayt.uz konstruktorida yaratilgan har bir saytda kontakt formaga avtomatik honeypot qo'yamiz. Spam 90-95% kamayadi, foydalanuvchi hech narsa sezmaydi. Vaqt tekshiruvi va IP rate-limit qo'shimcha qatlam sifatida ishlaydi. Konstruktor 49 000 so'mdan boshlanadi, honeypot va boshqa himoya qatlamlari narxga kiritilgan.