hCaptcha na WordPress przeciwko spamowi

Jednym z powodów dla których umieściłem CAPTCHA[1] na blogu była chęć zmniejszenia ilości spamu w komentarzach. Dokładniej, ilości spamu do moderacji, bo i tak wszystkie komentarze przechodzą tu przez ręczną moderację, nim pojawią się na blogu.

Na początek drobne statystyki. WordPress pokazuje równe 230 komentarzy oznaczonych jako spam. Najstarszy z 24.10.2018. Do wczoraj[2] daje to 909 dni, czyli średnio ok. jednego spamu na cztery dni. Nie jest to dokładna statystyka, część mogłem kiedyś usunąć, zamiast oznaczyć jako spam. Zjawisko nie było też stałe w czasie. Mam wrażenie, że ostatnio się nasilało. Na pewno luty, marzec i kwiecień tego roku to większe ilości. Z kolei styczeń to tylko pięć spamów. Jeśli miałbym oceniać na oko, to stawiałbym bardziej średnio na spam co drugi dzień. Do przeżycia.

Rodzajów spamu też było kilka i pojawiał się falami. Były i polskie pseudokomentarze typu „ciekawy wpis” z typowym SEO linkiem, i komentarze pisane cyrylicą. Dominowały jednak anglojęzyczne reklamy środków viagropodobnych. Regularności we wpisach pod którymi zamieszczano komentarze praktycznie żadnej. Podobnie z IP wykorzystywanymi do wysyłki spamu. Na oko raczej stare wpisy, z różnych kategorii. 230 to nie jest duża próbka do analizy, ale może kiedyś zrobię statystyki.

W każdym razie w ostatnim czasie liczba spamów wzrosła. Dominował w zasadzie jeden IP: 92.204.174.134, we WHOIS mający powiązania z SEODEDIC. Zamieszczał nawet po trzy komentarze dziennie. Sprawdzenie logów serwera WWW pokazało, że po prostu wchodzi i wysyła komentarz. Żadnych wielokrotnych prób, ale niekoniecznie byłyby widoczne po stronie mojego serwera. Zatem ciężko stwierdzić czy któryś z serwisów do omijania CAPTCHA przy pomocy ludzi, czy sprytne metody typu machine learning do rozpoznawania obrazków[3] czy w końcu może sprytne wykorzystanie Google text to speech do obchodzenia CAPTCHA od Google.

Skoro spamerzy obchodzili reCAPTCHA, stwierdziłem, że to dobra okazja do wypróbowania alternatywy, o której ostatnio trochę było słychać. Chodzi o serwis hCaptcha. Rejestracja niezbyt gładka. A to mail na Onecie został uznany za nieprawdziwy adres email, a to były problemy z dostarczeniem maila z linkiem aktywacyjnym na inną skrzynkę. W końcu odnalazł się on w folderze spam.

Po aktywacji jest już z górki. Użyłem pluginu hCaptcha for WordPress, który pozwala na określenie, gdzie ma być serwowana CAPTCHA. Podajemy klucze API i… już. Przyznam, że kusiło mnie przez moment wypróbowanie używania obu pluginów jednocześnie. Szybko porzuciłem tę myśl. CAPTCHA jednak i jest nieco upierdliwym mechanizmem, i dokłada trochę objętości do wielkości strony.

No właśnie. W porównaniu z pierwotną wersją strona jest obecnie nieco cięższa. I główna, i strony poszczególnych wpisów. Dramatu nie ma, nad główną jeszcze popracuję, ale z kronikarskiego obowiązku odnotowuję.

Co dalej? Ano czekam na feedback od użytkowników jak się nowa CAPTCHA podoba. A jeśli spamer wróci z tego samego IP, to dostanie w łeb. Tarpitem. Jeśli i to nie pomoże, poszukam innych pluginów WordPress stworzonych, by zwalczać spam. No i przede wszystkim będę obserwował ilość spamu przychodzącego do moderacji.

[1] Dokładnie reCAPTCHA wraz z pluginem Advanced noCaptcha & invisible Captcha. Tutaj znajdziesz więcej o wykorzystywanych na tym blogu czy polecanych pluginach do WordPressa.
[2] Jeśli ktoś zada sobie trud policzenia, to wyjdzie nieścisłość matematyczna. I można policzyć ile dni wpis leżakował jako szkic.
[3] Tak, to akurat przeciwko hCaptcha, ale miałem pod ręką linka. Dla reCaptcha pewnie też coś analogicznego istnieje.

Spam przez telefon

Witamy w XXI w., witamy w roku 2020! Tematem będzie telefoniczny spam. Przygoda z dziś, świeżutka. Zadzwonił telefon, służbowy. Już po numerze wiedziałem, że reklama[1], ale – mimo, że akurat miałem spotkanie w firmie – odebrałem posłuchać, cóż to za garnki czy inna prezentacja tym razem. Zresztą szybciej odebrać niż ma mi brzęczeć, albo zadzwonić za chwilę drugi raz.

Powitał mnie wyluzowany, optymistyczny i lekko entuzjastyczny głos telemarketera, który zaczął coś o wypoczynku. Ten typ, co to słysząc go wiesz, że ciężko będzie przerwać i powiedzieć, że nie jesteś zainteresowany.

Oczywiście nie byłem zainteresowany, ale fart chciał, że coś nam jakby przerwało, nim zdążyłem wyrazić brak zainteresowania. W słuchawce zrobiło się na moment głucho. Wystarczająco, by rozmówca to zauważył, powiedział, że chyba coś przerwało i wrócił. Chyba znowu przerwało, powiedziałem „halo?” i… rozmówca zaczął jakby od początku ostatniego zdania. Ten sam ton, ta sama treść.

No cóż, monotonna praca, wystudiowany układ, czyta ze skryptu. Aż przykro słuchać jak się człowiek marnuje odczytując spam. Tylko, że powiedziałem „halo?” raz jeszcze i… sytuacja się dokładnie powtórzyła. Znowu identyczny tekst, identyczna intonacja. Nabrałem podejrzeń, zacząłem mówić „halo?” i… po paru próbach miałem pewność. To nie człowiek, tylko automat.

Taki nietrywialny, z podpiętym rozpoznawaniem mowy i rozbudowanym skryptem. Słowo kluczowe „halo?” powodowało powrót na początek akapitu. Po dojściu do odpowiedniego momentu chciał potwierdzić, że chodzi o województwo wielkopolskie i ewidentnie czekał na input od użytkownika.

W każdym razie wygląda, że kolejny zawód, w tym przypadku telemarketera, przejmują komputery i sztuczna inteligencja. Zresztą, czytanie przez automaty staje się coraz popularniejsze. Ostatnio prezentację Piotra Koniecznego (tak, tego z niebezpiecznik.pl) na Infoshare także czytał syntezator i nawet nieźle to wychodziło, poza lekko irytującym akcentem. Może będzie o tym wpis, jak się pobawię.

Niemniej co innego synteza mowy z tekstu czyli text to speech, a co innego rozpoznawanie mowy osoby do której się dzwoni czyli speech recognition. Być może nie tylko z prostym skryptem, ale sztuczną inteligencją. W każdym razie następnym razem gdy zadzwoni do was telemarketer, polecam poświecenie chwili na zabawę i przeprowadzenie testu Turinga.

[1] Polecam poczytać opisy, także sąsiednich numerów. Zresztą cała numeracja zaczynająca się od tych sześciu cyfr jest znana i „lubiana”.

UPDATE W rozmowie z czytelnikiem otrzymałem link do wykopu, gdzie jest dokładnie ta sama rozmowa, tylko „czytana” przez „kobietę”. Co zabawne, nabijają się ze słabej inteligencji „telemarketera”. Ach, gdyby wiedzieli, że to nie człowiek…
Zresztą czytam komentarze i nawet już ktoś o tym pisał w komentarzach osiem miesięcy temu. Niestety, użytkownicy Wykopu nie uwierzyli.

Zamknięcie serwisu jogger.pl

Wczoraj przeczytałem ogłoszenie o planowanym zamknięciu serwisu jogger.pl. Mimo wszystko smutno. Było to miejsce, gdzie znalazłem wiele ciekawych blogów (czyt.: ludzi), a przede wszystkim miejsce, gdzie zacząłem przygodę z blogowaniem. Więc trochę wspomnień jest. Nawet myślałem o tym niedawno, bo nie dalej jak parę dni temu wpisałem w CV w zdolnościach komunikacyjnych ponad dziesięć lat pisania blogów… No i cała otoczka sieciowa, od składni HTML przez Markdown i jakiekolwiek pojęcie o standardach dotyczących stron WWW, zawdzięczam Joggerowi.

Tak czy inaczej, wiadomo było, że zamknięcie jogger.pl nastąpi. Żaden serwis nie może stać w miejscu – albo się rozwija, albo – prędzej czy później – umiera. Widać było, że czasu i chęci na rozwój i utrzymanie brakuje coraz bardziej, a autorzy mają opory przed opublikowaniem kodu as is. Była co prawda propozycja przepisania Joggera, czyli wersji 3.0, ale jak pisałem, i za późno, i nie tędy droga.

Dawno temu porównywałem Joggera i Blox, nawet dwa razy. Pod wieloma względami Jogger miał bardzo ciekawe rozwiązania. Integracja z jabberem, poziomy wpisów, możliwość dynamicznych feedów RSS, ciekawy, dający bardzo dużą kontrolę nad blogiem, system szablonów. Udało się też przyciągnąć ciekawie piszących ludzi. TBH nadal regularnie czytam parę osób z Joggera. W pewnym momencie coś nie wypaliło/coś się posypało. Tak pobieżnie patrząc, to stała pięta achillesowa Joggera, czyli kontrola nad komentarzami i spamem… IMHO ciekawy temat do analizy, swoją drogą.

Pisałem już o tym w komentarzu (podkreślam, nie negując w żaden sposób praw właścicieli do kodu i domeny), ale powtórzę, bo to nie jest IMO dobre zamknięcie. A komentarz stamtąd zaraz zniknie:

  1. Mało czasu na wyniesienie się. Pięć tygodni przy braku narzędzi i planu, to niewiele. Nie widać powodu, czemu akurat teraz i tak nagle. Oczywiście może być coś, o czym autorzy nie chcą/nie mogą pisać. Ale chyba można by ten czas wydłużyć.
  2. Można było rozważyć przejście do wersji archiwalnej – read only, bez możliwości komentowania. Przypuszczam, że całość obecnie dostępnej treści to raptem małe kilkaset GB. Zatem koszt utrzymania i nakład pracy są minimalne, podejrzewam, że aktualnie używający chętnie się zrzucą.
  3. Można w końcu uwolnić kod źródłowy – jest tam parę osób technicznych, może ktoś się skusi na kontynuację, może pohostuje innym…
  4. Można sprzedać serwis bez danych osobistych. Wystarczy nie eksportować/usunąć wpisy na poziomie 3 i wyższych.
  5. Nieszczęśnikom, którzy nie korzystali z własnych domen można udostępnić subdomeny na prawach domeny.
  6. No i w końcu: można było zapytać ludzi, jakie widzą rozwiązania.

Tak czy inaczej, kolejny serwis z którego korzystałem umiera (wcześniej zniknął blip.pl), i trochę żal. Szeroko rozumianej ekipie z Joggera dziękuję za wszystko.

UPDATE Administratorzy Joggera jednak nie planują po prostu trzasnąć drzwiami. Kwiecień nie jest datą ostateczną, po prostu kod jest stary, utrzymanie pracochłonne stąd pomysł wyłączenia serwisu w dotychczasowej formie. Prawdopodobnie zostanie zachowana jakaś forma statyczna strony, archiwum i zbiór linków do miejsc, w których autorzy będą utrzymywać swoje blogi. Niemniej zamknięcie jogger.pl jest faktem.

UPDATE2 Statyczny mirror bloga na Joggerze można zrobić przy pomocy opisywanego kiedyś sposobu na backup bloga przy pomocy wget. Efekt działania wersji statycznej można zobaczyć tutaj.