Какъв проблем имате?
Три случая изглеждат еднакво, но имат различни причини:
- Пристига спам. Входящата ви поща се пълни с реклами, връзки или безсмислен текст. Формата пропуска ботове.
- Формата съобщава за грешка. Посетителите виждат „There was an error trying to send your message. Please try again later.“ (на сайтове на други езици – в превод). Причината може да е защитата от спам или проблем с изпращането на имейли.
- Липсват истински запитвания. Никой не се оплаква, но и нищо не пристига. Тогава защитата може би отхвърля хора или имейлите не достигат до пощата ви.
Първо установете кой е случаят и едва след това добавяйте защита. Как става това, е описано в раздела „Доставка на имейли или защита от ботове?“.
Какво предлага самият Contact Form 7
Contact Form 7 има вградени няколко мерки срещу спам (проверено на версия 6.1.7):
- Списък със забранени думи. CF7 сравнява всяко изпращане със списъка в „Settings → Discussion“ („Disallowed Comment Keys“). Съвпадение се отчита като спам. Това помага срещу повтарящи се думи и домейни, но не и срещу нови текстове.
- Поле с въпрос. С тага
[quiz]формата задава въпрос, който определяте сами. Ботовете, които попълват всяка форма, се провалят; ботовете, насочени специално към вашия сайт, го преминават. - Akismet. С плъгина Akismet и ключ за Akismet CF7 проверява името, имейл адреса и текста чрез услугата Akismet.
- reCAPTCHA v3. CF7 зарежда скрипта от Google и отхвърля изпращания под определен праг на оценката.
- Cloudflare Turnstile. CF7 интегрира Turnstile; скриптът идва от Cloudflare.
Списъкът със забранени думи и въпросът работят без външна услуга. Akismet, reCAPTCHA и Turnstile изпращат данните на посетителите ви на съответния доставчик и това трябва да е отразено в политиката ви за поверителност.
Кога допълнителната защита от ботове има смисъл
Специализираната защита от ботове си струва, ако
- спамът продължава да пристига въпреки списъка със забранени думи и въпроса,
- не искате да зареждате скриптове от Google или Cloudflare,
- искате за всяко отхвърлено изпращане да виждате защо е отхвърлено.
Ако въпросът е достатъчен за вашата форма, не ви трябва нищо повече. Защита, от която никой не се нуждае, е просто още един източник на грешки.
Настройване на SilentShield за Contact Form 7
Официалният плъгин „SilentShield – Captcha & Anti-Spam“ защитава Contact Form 7 без собствен код. Тествахме го с Contact Form 7 6.1.7 и WordPress 7.0.
- Инсталирайте и активирайте плъгина от директорията на WordPress.
- В „SilentShield → API / SilentShield“ въведете ключа си, щракнете върху „Validate“, включете „Activate API“ и запазете.
- В „SilentShield → Forms“ включете Contact Form 7.
Сайтът трябва да работи през https, иначе формата не може да бъде изпратена. Всички стъпки и тестваните плъгини за форми ще намерите в ръководството за WordPress. Всяко изпращане се отчита в квотата, вижте цени и квоти.
Тестване на истински изпращания и отхвърлени опити
Истинско изпращане: Отворете страницата в частен прозорец, попълнете формата ръчно и я изпратете. Трябва да видите потвърждението на CF7 със зелена рамка.
Отхвърлен опит: Изпратете същата форма без браузър към интерфейса на CF7. ID на формата и стойността за _wpcf7_unit_tag ще намерите в изходния код на страницата, в скритите полета на формата.
curl -X POST "https://example.com/?rest_route=/contact-form-7/v1/contact-forms/123/feedback" \
-F "_wpcf7=123" -F "_wpcf7_unit_tag=wpcf7-f123-p45-o1" -F "_wpcf7_container_post=45" \
-F "your-name=Test" -F "[email protected]" -F "your-message=Test"
Трябва да получите отговор с "status":"spam". При SilentShield съобщението гласи „Behavior check“.
Доставка на имейли или защита от ботове?
mail_sentspammail_failedvalidation_failedВ Contact Form 7 „спам“ и „имейлът не можа да бъде изпратен“ имат един и същ текст по подразбиране. Можете да ги различите на две места:
- Цвят на рамката на съобщението: оранжево означава спам, червено означава, че изпращането на имейла е неуспешно – стига темата ви да не презаписва цветовете на CF7.
- Отговор в браузъра: В инструментите за разработчици (раздел Мрежа) отговорът на
feedbackсъдържаstatus– илиspam, илиmail_failed.
Ако е mail_failed, защитата от ботове е пропуснала изпращането; проблемът е в изпращането на имейли от WordPress. Тогава проверете настройките за имейл, например с плъгин за SMTP. Ако е spam, го е отхвърлила защитна мярка. При SilentShield съобщението посочва причината, например „Behavior check“.
Ограничения
- Никоя защита не спира спам, който човек пише на ръка.
- Без JavaScript в браузъра изпращането към защитена форма се отхвърля.
- SilentShield защитава формите от ботове. Той не замества защитна стена за уеб приложения или защита от DDoS.