Halucynacje Antispam Bee

Uważni czytelnicy mogą pamiętać, że na blogu stosuję kilka metod zwalczania spamu w komentarzach. W kolejności od najbardziej ręcznych do najbardziej automatycznych będą to: ręczna moderacja, wtyczka Antispam Bee, hCaptcha oraz wycinanie IP znanych z nadużyć na poziomie iptables. Dziś będzie o wtyczce.

Wtyczka Antispam Bee radziła sobie nieźle. Wśród sporej ilości opcji, dotyczących tego jak rozpoznawać spam i co z nim dalej robić, posiada ona też możliwość generowania statystyk blokad spamu widocznych w dashboardzie WordPressa. Oczywiście korzystam, bo dzięki temu czytelnemu zestawieniu widzę, co w spamie piszczy bez konieczności wchodzenia w komentarze.

Do tej pory wyglądało to tak, że zerkałem na statystyki na wykresie, jeśli pojawiał się wzrost, to wchodziłem w komentarze i patrzyłem na IP z którego przyszedł spam i ogólnie zastanawiałem się, czy może trzeba coś ulepszyć. Oczywiście jeśli miałem wenę, bo blokady przez iptables, captchę czy wtyczkę Antispam Bee są totalnie bezobsługowe. Znaczy normalnie nie muszę w ogóle dotykać spamu, jedyne co robię, to zatwierdzam prawdziwe komentarze[1]. No i było tak, że jak wtyczka zgłosiła 2 zablokowane, to te 2 były w spamie w komentarzach. W każdym razie tak mi się wydawało – nie zauważyłem rozbieżności.

Problem

Po niedawnych zmianach w blokadach IP na poziomie iptables, ilość blokowanych spamów była stabilna i rekordowo niska – 1-2 próby dziennie. Jednak w pewnym momencie zobaczyłem coś takiego:

Statysytki Antispam Bee 22.03 – 06.05

Wzrost zaczął się 22 kwietnia i jest całkiem spory. Największa ilość widoczna na wykresie to 15 spamów. Postanowiłem poszukać, cóż to za IP i… spotkała mnie niespodzianka. Ostatni spam widoczny w komentarzach jest właśnie z 22 kwietnia. Po tej dacie nie mam żadnego komentarza uznanego za spam w bazie. A wtyczka Antispam Bee radośnie zgłasza.

Szukałem bezpośrednio w bazie, ale nie udało mi się znaleźć ani komentarzy uznanych za spam, ani miejsca przechowywania statystyk. Ostatecznie w ramach testu wyłączyłem wtyczkę na kilka dni i… przyszedł jeden spam do ręcznej moderacji. Przez kilka dni.

Rozwiązanie

Zastanawiałem się, co tu się stało i… chyba znalazłem rozwiązanie. Wszystko wskazuje na to, że wtyczka Antispam Bee jednak nie pozazdrościła AI i nie halucynuje. Ani nie próbuje pokazać, jaka jest przydatna uciekając się do przedstawiania fałszywych wartości. Chodzi o kolejność działania blokad. Antispam Bee działa przed czy też obok hCaptcha. Komenatrz, aby trafił do bazy WordPressa, musi mieć poprawnie rozwiązaną captchę. Jej brak nie przeszkadza jednak Antispam Bee w rozpoznaniu spamu i uwzględnieniu go w statystykach. Czyli ten wzrost to faktycznie próby wysyłki spamu z IP, które nie są na listach, ale nieudolne, nie uwzględniające tego, że na blogu jest captcha.

Wygląda, że trzeba się będzie przeprosić z wierszem poleceń przy wyszukiwaniu IP do blokowania, przynajmniej chwilowo. Stosowne polecenie:

egrep "POST.*wp-comments-post.php" access.log | grep " 400 " | awk '{print $1}' | sort | uniq -c | sort -n

Wtyczkę Antispam Bee polecam nadal. Jeśli ktoś jest ciekaw, czemu nie korzystam z Akismet, to odpowiedź znajdzie w tym wpisie.

[1] Tak się teraz zastanawiam, że działa to tak dobrze, że w zasadzie mógłbym wyłączyć moderację w ogóle. Z drugiej strony już przywykłem, a komentarzy nie ma zbyt wiele, więc żaden problem.

Ostatni odczyt

Byłby to ładny tytuł dla opowiadania powiedzmy science-fiction, ale tym razem chodzi o statystyki dotacji na Patronite dla Radio Nowy Świat oraz Radio 357. Blisko trzy i pół roku temu zacząłem zbierać statystyki dotacji. Tak zupełnie bez napinki i w prymitywny sposób – parsując HTML. Idea była prosta, parę dni później[1] wystartowało Radio 357 z regularnym nadawaniem, obie stacje zbierały dotacje na Patronite, chciałem zobaczyć jaką które radio ma dynamikę.

Zdechło

Dziś zajrzałem do wyników i okazało się, że zdechło. Podwójnie. Po pierwsze, skrypt przestał prawidłowo zbierać dane. I to dość dawno temu, ale ponieważ nie zaglądałem, to zorientowałem się dopiero teraz. Było do przewidzenia, żadnego powiadamiania na wyjątek przy parsowaniu nie miałem przecież. Tym bardziej na błędne dane. Ot, zabawka. Poprawka okazała się trywialna trywialna, wdrożyłem, ale… Niestety, drugi powód jest taki, że Radio 357 przestało publikować na Patronite dane o zbiórkach.

Dlaczego nie widzę już liczników na Waszym profilu Patronite?
Licznik ten pokazywał tylko Patronów z Patronite. W momencie, gdy można opłacić patronat na więcej sposobów, ten licznik przestał oddawać stan faktyczny. Jeśli chcesz dowiedzieć się ilu Patronów wspiera radio, to tę liczbę znajdziesz na naszej stronie internetowej.

Tak informują na stronie zbiórki na Patronite.

Jestem nieco zaskoczony, że to nie Patronite decyduje o tym, czy dane są widoczne, ale w sumie nie ma to znaczenia – danych nie ma i tyle.

Ostatni wiarygodny odczyt miał miejsce w grudniu:

2023-12-17 12:00:03, radio357, 50075, 933463
2023-12-17 12:00:03, rns, 35061, 756537

Podsumowanie statystyk

Dla RNŚ był jeszcze jeden poprawny odczyt w lutym 2024. Niewiele się różnił. No bo właśnie, RNŚ w zasadzie stoi w miejscu zarówno pod względem ilości patronów, jak i dochodu. Dla przypomnienia, zaczęło się od 31 tys. i 690 tys.

Co innego Radio 357, tu były zmiany. Wg strony mają obecnie łącznie 50 tys. wspierających. Czyli tyle, ile było widocznych na Patronite w ostatnim odczycie. W zasadzie również nie ma wielkich zmian od roku, choć pamiętam, że w trakcie jakieś istotne wzrosty były.

Teoretycznie, skoro jest taka roczna już stabilizacja, to można by przyjąć, że takie są ostateczne wyniki i zamknąć temat. Takie rozwiązanie jednak mi się nie podoba, chętnie bym obserwował dalej. No ale nie ma jak.

Co dalej?

Poprawiony skrypt zbiera dane dla RNŚ. Publikacji statystyk w dotychczasowej formie już nie przewiduję. Może najwyżej raz do roku, jak mi się przypomni. Pewnie wkrótce wystawię plik CSV z zebranymi danymi – waham się jeszcze, czy wystawić go jednorazowo, czy live. Pewnie uzupełnię ten wpis o wykres z dynamiką dla obu stacji.

Tak w ogóle, to nie pamiętam kiedy słuchałem którejkolwiek z tych stacji[2]. Okolice Sylwestra, jednorazowo? To znaczy dziś włączyłem testowo na jakieś dwie godziny. Ale wrażenia miałem podobne jak ponad rok temu, gdy przestały mi się podobać – coś mi zgrzyta, coś mi nie pasuje. Wolę samą muzykę ze streamingu, niż audycje, szczególnie, że nie wszystkie są stricte muzyczne. Może była to dla mnie tylko rozrywka w okresie pandemii? A może spróbuję wrócić, ale już tylko do wybranych audycji? Zobaczymy.

Jednocześnie jest to prawdopodobnie koniec mikrobloga na Diasporze. Nie likwiduję, ale skoro znika jedyny temat, który się tam jako tako regularnie pojawiał to będzie on w zasadzie martwy. Można powiedzieć, że wytrzymał 9 lat.

[1] Wikipedia podaje, że stała ramówka od 5 stycznia 2021. I wierzę jej, ale wiem, że słuchałem już pierwszego stycznia, a przecież nie była to pierwsza audycja.
[2] Taka ciekawostka, mam krótki szkic notki z października 2020 dotyczący RNŚ, którego nie opublikuję. Radio 357 doczekało się wpisu.

Cele pozorne

Czasami jest tak, że to, co wydaje się celem, wcale celem nie jest. Łatwo to przeoczyć, szczególnie, jeśli mamy do czynienia z punktacją czy ogólnie gamifikacją.

Ale jak to? O co chodzi? Może łatwiej będzie na przykładzie. Weźmy konkurs, kto zbierze najwięcej śmieci podczas oczyszczania lasu. Czy zwycięstwo w tym konkursie jest najważniejsze? Czy bardziej liczy się sam fakt sprzątania, a miejsce w konkursie jest tylko motywującym dodatkiem?

Inny przykład: zawody powiedzmy straży pożarnej. Czy tak naprawdę ważne jest uzyskane miejsce w zawodach, czy ważniejszy jest fakt przygotowywania się do nich drużyny, poprawy jej sprawności, przez co będzie skuteczniejsza w codziennych zadaniach? Tak, to trochę zagadnienie, czy ważniejsza jest droga, czy cel.

Punktacja czy też wynik może odzwierciedlać aktualne przygotowanie drużyny, szczególnie, jeśli organizator zawodów zadba, by były spójne w kolejnych latach. Wtedy walka o możliwie najlepszy wynik jest jednocześnie miarą rzeczywistego przygotowania na przestrzeni lat.

Jasne, skoro jest punktacja/miejsce, to łatwo zgubić szerszą perspektywę. Można się skupić na wyniku/miejscu. To nawet nie jest jakiś wielki błąd. Przynajmniej nie powinien być. Dobrze wyznaczony cel/punktacja powinny przecież motywować uczestników i wspomagać realizację faktycznych założeń. W powyższych przykładach: zebranie większej ilości śmieci czy zwiększenie sprawności drużyny.

Podobnie jest przy CTFach. Jasne, łatwo skupić się na uzyskaniu jak największej ilości punktów. Ale zasadniczym celem może być budowa drużyny AKA wspólne spędzanie czasu, nauka, zabawa czy po prostu gimnastyka umysłowa. Albo uzyskanie jak najlepszego wyniku, ale w określonej kategorii zadań. Bo trzeba pamiętać, że różni ludzie mają różną motywację do uczestnictwa w zawodach/konkursach. Dla niektórych miejsce w zawodach, medal, czy nagroda pieniężna są ważne. Albo nawet najważniejsze. Trochę jest tak, że każdy gra w swoją grę.

Jednak w momencie, gdy miejsce w zawodach zaczyna przysłaniać wszystko inne, warto sobie zapytać, czy naprawdę celem jest miejsce. Przykładem wypaczenia spowodowanego parciem na miejsce może być doping w sporcie. Jeśli mamy dwóch zawodników, jeden skorzysta z dopingu i zdobędzie złoty medal, drugi będzie czysty i zdobędzie srebro, to który lepiej realizował cel? Nie mówię nawet o przypadku, gdy doping zostanie wykryty. Tak zwyczajnie.

Jeśli ktoś spadnie w zawodach na trzecie miejsce na skutek powiedzmy błędu sędziego, choć powinien był wygrać, to – jeśli mówimy o zawodach straży pożarnej – czy jest to tak naprawdę wielki problem, czy lepiej odpuścić, bo tak naprawdę miejsce było tylko celem pozornym? Oczywiście, najlepiej, jeśli cele pozorne i rzeczywiste idą ze sobą w parze. Jednak nie zawsze tak jest. Czasem po prostu bunkrów nie ma