Jak zrobić kuku spamerowi?

Jak wielu innych ludzi, darzę spamerów czystym i płomiennym uczuciem. Jakiś czas temu popełniłem automat do wykrywania spamu na Blox. W zasadzie, to tych skryptów jest kilka i raczej dane zbierają się „na kiedyś”, niż działa to produkcyjnie, ale czasem coś tam podeślę do blokowania. Niemniej, nie jest to pełny automat.

Jeśli chodzi o pocztę, to nie jest u mnie ze spamem źle. Łącznie na wszystkie konta dostaję jakieś małe pojedyncze sztuki dziennie. Część odsiewają dostawcy poczty, przytłaczającą większość tych nielicznych, które przejdą oznacza Thunderbird.

Dodatkowo, jeśli już coś do mnie dotrze, to zwykle trafia na Spamcopa (polecam zarejestrowanie się). Roboty z tym tyle, co kliknięcie Forward i linka w mailu, więc niewiele, a powiadamiane są wszystkie powiązane abuse. Polecam rejestrację. Czasem nawet odpiszą, że zablokowali (i to niekoniecznie nadawcę, bo potrafią reagować także właściciele domen/hostingów na których znajduje się „reklamowana” strona. Tak czy inaczej, o ile nie zadziała to pewnie na spam o niebieskich pastylkach wysyłanych z botnetów (ale liczę, że to odpada na etapie dostawcy poczty, zresztą mało tego typu dociera do mnie), to działa[1] na byznesmenów wysyłających zapytania o możliwość wysłania oferty handlowej do adresatów z baz pozyskanych z ogólnodostępnych źródeł. Znaczy, tłumacząc na polski: na spamerów wysyłających spam, bo (polskie) prawo prawem, ale o tym, czy wiadomość była zamówiona decyduje jednak odbiorca.

Niedawno, podczas szukania rozwiązań antyspamowych trafiłem na ciekawą stronę Email Labirynth, która generuje losowe adresy email w celu zaśmiecenia baz danych harvesterom, a w konsekwencji spamerom. Czyli po pierwsze stracą czas zbierając te adresy, po drugie stracą czas wysyłając maile na nieistniejące adresy, a po trzecie jest spora szansa, że dzięki takim wysyłkom trafią na RBLe. Nie jestem przekonany o skuteczności, ale spróbować IMO nie zaszkodzi. Sceptykom twierdzącym, że spamerzy nie mogą być aż tak głupi od razu mówię, że nie tylko mogą, ale są. Może nie wszyscy, ale większość. No i zwykle mają słabe automaty, a nadzór ludzki kosztuje.

W każdym razie powyższe rozwiązanie ma IMO kilka wad:

  • Brak spamtrapa na każdej stronie. IMHO na każdej(?) stronie wśród generowanych maili powinien być także spamtrap w celu automatycznego zgłaszania IP korzystających z harvestowanych adresów email do abuse/RBLi.
  • Stały adres strony. Wystarczy szczątkowa inteligencja, by nie harvestować tam adresów email.
  • W pełni losowe loginy. Trochę wada, trochę zaleta. W każdym razie wyglądają mało naturalnie i przy odrobinie wysiłku można je odsiać.
  • Brak lokalizacji. Wiadomo, że spamerzy celują z niektórymi produktami raczej w określone grupy klientów, np. klientów z Polski. Dane z ww. strony zdecydowanie nie wyglądają na bazę polskich klientów email.

Koniec końców postanowiłem zrobić swoje rozwiązanie realizujące podobny cel (oczywiście Perl). Na razie mam opracowane częściowe rozwiązanie[2] dla dwóch ostatnich punktów. Punkt drugi też będzie rozwiązany, bo zamierzam opublikować gotowca, którego każdy będzie mógł podpiąć na swojej stronie.

Ponieważ pewnie trochę czasu będę miał dopiero w przyszły weekend, liczę do tego czasu na uwagi dot. sensowności i ew. innych funkcjonalności.

[1] Działa, znam trochę środowisko hostingowe. Przyzwoite hostingi nie przepadają za wysyłającymi spam do zaśmieconych baz adresów email, a z tego co wiem w polskich firmach hostingowych abuse raczej działa.

[2] Jak dam sobie na luz z perfekcjonizmem, to pewnie uznam je za docelowe, przynajmniej w pierwszej wersji.

UPDATE: No i uruchomiłem. Póki co wersja testowa karmnika z adresami email wisi tu.

Smssender 0.8.

Nowa wersja skryptu do wysyłki SMSów z poziomu konsoli dla Linuksa. Dodana obsługa długich SMSów dla Mobitex (nie testowałem, ale wg forka z GitHub i dokumentacji wystarczyło zmienić typ, by dzieliło na kilka części) i – przede wszystkim – podstawowa obsługa kolejnego providera, czyli REDLINK. Okazuje się, że choć niezbyt się tym chwalą, to wspierają wysyłkę w podobny sposób jak Mobitex, czyli wywołanie URLa z parametrami.

Trochę obsługa na zasadzie if-ujmy co wymagane i niezbyt mi się to podoba, ale dla tak podstawowej obsługi wystarczy, a w sumie dość zbieżnie jest. Nie ma pełnej obsługi błędów, tak naprawdę w przypadku REDLINK ludzki komunikat zwracany jest tylko dla statusu OK, w pozostałych przypadkach na żywca leci odpowiedź od providera (też czytelna, na szczęście).

REDLINK ma parę fajnych funkcji, których na razie nie obsługuję – planowanie czasu wysyłki SMSa, email na który przychodzi finalny status dostarczenia. Bo to, co otrzymujemy przy wysyłce to tylko potwierdzenie poprawnego skolejkowania do wysyłki, nie oznacza wcale, że SMSa faktycznie udało się dostarczyć do odbiorcy (tak, zdarzyło mi się tak raz dla dość ważnego SMSa).

Zapraszam do testów i jak zwykle feedback mile widziany.

Nextbike monitorowany

Rowery miejskie w Poznaniu, mimo swoich niedoskonałości, stały się na tyle popularne, że ich liczba na poszczególnych stacjach czasami spada w okolice zera. Jak tylko dowiedziałem się, że Nextbike udostępnia aktualizowane na żywo informacje dotyczące rowerów na poszczególnych stacjach (duże, naprawdę duże brawa i szacun), wpadłem na pomysł, że fajnie byłoby mieć dostęp do danych przez komórkę (stara Nokia 3110c, Opera mini) w lekkiej i wygodnej formie. Po prostu od razu łatwo sprawdzić, ile jest rowerów na której stacji Nextbike, czy jest sens iść na daną stację, czy lepiej na tramwaj, albo pieszo, bo roweru raczej nie znajdziemy.

Ponieważ oryginalny XML jest dość ciężki (~250 kB, szczegółowe dane o wszystkich krajach, miastach i stacjach), postanowiłem wyciągać z niego tylko najważniejsze dane i tylko dla Poznania, a następnie wrzucać do lekkiego HTML.

Aktualnie powstało coś takiego: dostępność rowerów Nextbike w Poznaniu.

Działa prosto: wget i mały skrypt perlowy z użyciem modułu XML::Simple (przyznaję, przez ułamek sekundy chciałem to opędzić grep + awk), wywołanie z crona co 5 minut (mógłbym częściej, ale póki co nie widzę sensu, szczególnie, że na razie tylko ja korzystam) i wyplucie wyniku do statycznego HTML. Jest data aktualizacji, są kolory. Nie jest piękne, pewnie się nie waliduje, ale jest b. lekkie (całość aktualnie waży ok. 500 bajtów, docelowo – pewnie dodam trochę tekstu – mniej, niż 1kB) i działa. Liczę na komentarze dot. funkcjonalności i wyglądu.

PS. Coś dawno nie wypożyczałem roweru…

UPDATE: Za sprawą Sternika nie zaciągam już 250 kB, tylko od razu dane dla danego miasta – częstotliwość zmieniona co minutę. I nieco inny URL wykorzystuję. I w ogóle polecam wpis Sternika o Nextbike (dead link, wersja live, wersja IVR i za moment być może wersja z Google maps).