Na każdym blogu prędzej czy później pojawia się spam. Najczęściej są to śmieciowe komentarze, ale czasem również rejestrowane automatycznie konta (o ile nasza strona udostępnia taką możliwość). Im bardziej popularna strona, tym spamu pojawia się więcej.
Duża część użytkowników WordPressa do walki ze spamem wybiera dołączoną wtyczkę Akismet. Jednak (jak już kiedyś pisałem) nie jest ona darmowa, a poza tym nie spełnia należycie swojej funkcji. Wspominałem również o alternatywach, jednak od czasu powstania tekstu upłynęły ponad dwa lata i wiele się w temacie walki ze spamem zmieniło. Dlatego też chciałbym przedstawić najlepszą w tej chwili metodę na pozbycie się ze strony niechcianych komentarzy oraz zablokowanie rejestracji kont przez boty. Metodę na tyle skuteczną, że sam nie korzystam już z niczego innego.
Dlaczego nie Akismet?
Zacznę jednak od wyjaśnienia, dlaczego nie polecam Akismeta ani innych działających na podobnej zasadzie wtyczek.
Każdy przesyłany na naszą stronę komentarz trafia na serwery Akismet, gdzie (podobnie jak w przypadku filtrów poczty e-mail) jego treść jest analizowana. Na podstawie wyniku tej analizy Akismet decyduje, czy dany komentarz jest spamem czy nie. Komentarz trafia do bazy WordPressa i jeśli został odpowiednio zaklasyfikowany, to wpada do folderu Spam.
Problem polega na tym, że to nie rozwiązuje problemu spamu. Spam wciąż trafia do naszej bazy danych (nie jest tylko widoczny na stronie), a my wciąż musimy go usuwać. Osobiście jest mi wszystko jedno, skąd usuwam śmieciowe komentarze – wciąż muszę marnować czas na zajmowanie się spamem.
Drugim problemem Akismeta jest spora ilość błędów, szczególnie w przypadku komentarzy w języku polskim – tak więc cały czas trzeba go pilnować.
WP-SpamShield – inne podejście do walki ze spamem
Jak pisałem dwa lata temu, istnieją oczywiście alternatywy dla Akismeta. Problem w tym, że te dwie, które wtedy wymieniałem, działają na bardzo podobnej zasadzie. Poszukując innego, skuteczniejszego rozwiązania, wpadłem na darmową wtyczkę WP-SpamShield, która po długich testach i porównaniach stała się moim numerem jeden.
Przede wszystkim działa ona zupełnie inaczej niż Akismet. Nie wrzuca komentarzy do spamu ani nie przesyła ich do analizy na zewnętrzny serwer. Zamiast tego posługuje się zestawem reguł oraz skryptem JavaScript, za pomocą których po prostu blokuje dodawanie komentarzy przez automaty. Komentarzy tych nigdzie nie ma – nie trafiają one do bazy danych, nie musimy się nimi zajmować ani ich usuwać. Podobnie rzecz się ma z automatycznymi rejestracjami – WP-SpamShield skutecznie je blokuje. Jedyny ślad, jaki zostaje po zablokowanych komentarzach, to ich liczba, widoczna w Kokpicie oraz na stronie ustawień wtyczki.
Co ważne dla mniej zaawansowanych użytkowników, wtyczka działa od razu po aktywacji – nie jest wymagana żadna konfiguracja, nie trzeba niczego ustawiać ani nigdzie się rejestrować. Nie oznacza to jednak, że nie ma żadnych opcji konfiguracyjnych – ale o tym za chwilę. Posiada również wsparcie dla wielu popularnych wtyczek, w tym Contact Form 7, Gravity Forms, Ninja Forms, JetPack, BuddyPress, bbPress czy WooCommerce. Podobno (tego akurat nie miałem okazji sprawdzić) działa z praktycznie każdym formularzem.
A co najważniejsze, ten sposób ochrony przed spamem jest całkowicie niewidoczny dla osób odwiedzających naszą stronę. Żadnych CAPTCHA, żadnych działań matematycznych, żadnego przepisywania ledwo widocznych kodów czy układania puzzli. Jedyne wymaganie jest takie, że aby opublikować komentarz użytkownik musi mieć w przeglądarce włączoną obsługę JavaScript i ciasteczek (obie te rzeczy są domyślnie włączone) – jeśli przeglądarka nie spełnia tych wymagań, to pojawi się stosowny komunikat. I to jest w sumie największa (i chyba jedyna) wada WP-SpamShield – tyle że staje się ona praktycznie nieistotna w obliczu skuteczności działania tego rozwiązania, tym bardziej, że wyłączony JavaScript ma bardzo niewielka grupa osób (z danych dostępnych w Sieci wynika, że jest to zaledwie nieco ponad 1 procent użytkowników).
Konfiguracja
Ekran konfiguracji znajduje się w menu Ustawienia → WP-SpamShield i jak na wtyczkę, która nie wymaga konfiguracji, jest on dość rozbudowany. Na szczęście domyślne ustawienia sprawdzają się praktycznie zawsze.
Jest jednak kilka opcji, które mogą okazać się pomocne w przypadku problemów z działaniem wtyczki.
Opcja Blocked Comment Logging Mode włącza tryb logowania zablokowanych komentarzy, dzięki czemu możemy zobaczyć co tak naprawdę blokuje wtyczka i dlaczego. Informacje trafiają do specjalnego pliku, który w każdej chwili możemy pobrać klikając link Download Comment Log File.
Gdy domyślne filtry wtyczki zawodzą, przydatnymi mogą okazać się opcje Enhanced Comment Blacklist i Enable WP-SpamShield Whitelist. Pierwsza włącza możliwość wprowadzenia słów, adresów URL, e-mail i IP, które będą zawsze blokowane przez wtyczkę. Przydaje się to gdy na naszej stronie mamy do czynienia z ręcznie wprowadzanymi spamowymi komentarzami. Druga opcja działa odwrotnie – pozwala na wprowadzenie adresów e-mail, które zawsze będą traktowane jako „bezpieczne” i wprowadzone z ich użyciem komentarze nie będą blokowane.
Z doświadczenia wiem, że warto zostawić włączoną opcję Allow users behind proxy servers to comment, która wyłącza blokowanie komentarzy przesyłanych zza serwerów proxy. Może się jednak zdarzyć, że zwiększy to znacząco liczbę spamu omijającego filtry wtyczki.
Opcja Hide extra technical data in comment notifications usuwa z e-maili z powiadomieniami o nowych komentarzach dodatkowe (techniczne) informacje o działaniu filtrów. Większości użytkowników nie są one do niczego potrzebne, więc spkojnie można się ich pozbyć.
Skuteczność
To, że wtyczka działa i jest skuteczna, sprawdziłem osobiście na dwóch stronach.
Pierwsza z nich ma ruch na poziomie 500 unikalnych użytkowników dziennie. WP-SpamShield jest tam zainstalowany od roku, blokuje kilkadziesiąt spamowych komentarzy dziennie i przegapił tylko kilka ręcznie opublikowanych śmieci.
Druga strona ma znacznie większy ruch i oferuje użytkownikom możliwość rejestracji. WordPress został na niej wdrożony niespełna dwa miesiące temu – wcześniej serwis działał na innym CMSie. Pierwsze spamowe rejestracje kont pojawiły się dosłownie kilkanaście minut po uruchomieniu nowej (opartej na WordPressie) wersji strony, kilka minut później zaczęły wpadać spamowe komentarze. Wtyczka WP-SpamShield rozwiązała ten problem – w tej chwili blokuje średnio ponad 700 komentarzy i rejestracji dziennie.
Zdjęcie: freezelight