Definicje:
spam = śmieć masowo wysyłany przez bota
ham = jakieś bzdury indywidualnie wysłane przez człowieka
- Dzięki raportowaczce dostałem już
700023000 postów (do analizy słów przydało by sie z 10x tyle, szczególnie hamów) - 87% z nich to spam!
- Ponad połowa spamów może być złapana w banalny sposób — przez blokowanie nadmiarowej ilości linków i exploitów na mail()
- 40% spamów da się rozpoznać po kilkunastu charakterystycznych słowach (nazwy tabletek, gry hazardowe, itp.)
- Wszystkie spamy mają poprawny nagłówek Referer. Sporo z nich stara się też mieć pozostałe nagłówki wiarygodne, ale można się dopatrzeć bugów w implementacjach HTTP — m.in. choć raz Microsoft ze swoim zbugowanym .NET się przydał, bo boty w nim napisane od razu widać :)
- Proporcja spamów do hamów jest najwyższa o 6-7 rano. Czyżby zainfekowane komputerki pracowały zanim właściciel łyknie poranną kawkę?
Trudne przypadki
- Neostrada jest na wszystkich czarnych listach antyspamowych i najgorsze jest to, że zasłużenie. Masa spamu pochodzi z windzianoexplorerowych zombie, a przez zmienne IP nie sposób tego blokować inaczej, niż po całości.
Moje rozwiązanie to wewnętrzna czarna i biała lista isp/tld. Przymykam oko na raporty o *.pl, a ostro działam wobec *.mx, *.tw, itp.
- Spamy, które nie są ani troche spamowate — znalazłem kilka bardzo przebiegłych przypadków, kiedy spamer najpierw wysyła kilka kompletnie wiarygodnych postów (żadnych linków, sensowny tekst), a następnego dnia wysyła coś podobnego, tylko już okraszonego reklamą (wcześniejsze posty mają znieczulić uczące się filtry). Bez podróży w czasie trudno to blokować, a i nawet wtedy lepiej nie, bo tekst mógł być ukradziony z autentycznego postu.
Moje rozwiązanie to ignorowanie treści postu, gdy treść linków jest ponadprzeciętnie spamowata. Posty bez linków często i tak dają się złapać, bo pochodzą ze znanych spamerskich IP, wysyłane są przez kiepskie boty, zawierają anglojęzyczne frazy powtarzające się w innych spamach, no i oczywiście boty (jeszcze) nie kumają JS.
- Autentyczne posty zawierające spamowate słowa. Oczywiście niedobrze jest blokować użytkowników za byle słówko, ale z drugiej strony dopuszczenie choćby jednego spamowatego słowa już wystarczy spamerom do osiągnięcia celu.
Brak linków w poście, włączona obsługa JavaScript, nadawanie z kraju na białej liście pomagają przepchnąć “niecenzuralne” słówka.
- Jest potencjał dla polskiego spamu — bayesowski filtr szybko się uczy, że tekst po angielsku to spam, a po polsku nie-spam.
Nauczyłem filtr co podrasowuje komórki i jaka polska golizna się sprzedaje.
- LinkSleeve jest zbugowany. Na liście już mieli google.com, aol.com, blogspot.com. Owszem, linki z tych domen pojawiają się w spamach, ale generalnie te domeny są neutralne i trzeba by to uwzględnić.
Nie przekazuję do LinkSleeve domen, które może źle zaklasyfikować.
Więcej o spamie
Na stronie Sblam! jest lista używanych przez niego technik.