.: Rychlé menu: navigace .:. odkazy .:. kategorie .:. vyhledávání .:. archivy .:. autoři :.  

09.10.2005



Jak filtruji spam v komentářích?

Proti spamu v komentářích lze bojovat různě — pokud tedy dojdeme k názoru, že s ním je třeba bojovat.

Lze bojovat pasivně — „zneplatňováním” odkazů, atributem nofollow a podobnými technikami, které vložení spamu nezabrání, ale zruší efekt, který od něho spammeři očekávají.

Lze bojovat i aktivně, tedy technikami, které by měly zabránit samotnému vložení spamového komentáře.

Blacklist IP adres či spamových domén je řešení srovnatelné s prvními antiviry, které kontrolovaly „typické vzorky kódu”. Jeho obrovská nevýhoda je nutnost neustále aktualizovat, protože spammeři mění domény a IP adresy rychleji než ponožky.

Blokování určitých typických slov a frází je řešení o něco lepší, protože spousta spammerů se neobtěžuje s tím, aby měnili text, takže vloží třebas deset, dvacet komentářů s naprosto stejným textem a mění jen svoji IP. Na druhou stranu je třeba mít možnost neustále analyzovat nové spamy a hledat charakteristické fráze. Sem spadá i velmi prostý „spamfiltr” založený na blokování značky „A” — ten zase počítá s tím, že každý čtenář je natolik inteligentní, že si přečte, že takové značky vkládat nemá. Navíc s tímhle „filtrem” už někteří spammeři počítají.

Analýza charakteristických znaků je zatím asi nejdokonalejší metodou aktivní eliminace komentářového spamu. Tato technika vychází z rozpoznávání charakteristických znaků spamového komentáře a jejich „ohodnocení”, podobně jako ohodnocuje bayes filtr maily.

Metody „ověření lidskosti”, založené např. na nutnosti opsat nějaké znaky z obrázku, jsou stoprocentně účinné proti robotům. Mají však dvě zásadní nevýhody: Otravují a jsou bezmocné proti spamu vkládanému živými lidmi. (Že takový není? Bude zítra!)


Pro Neškodný jsem použil kombinaci analýzy textu a blokování typických frází. Jednoduchý skript má asi 200 řádků a jeho výsledky jsou pro mne velmi uspokojivé: Od 29.9. do této chvíle bylo vloženo 257 komentářů. Z toho bylo 57 spamových, tedy 22%. Spamfiltr zachytil 54 spamkomentářů, tři propustil. Úspěšnost je tedy cca 95% Jeden nespamový komentář (z dvou set) byl vyhodnocen jako spam — tedy 0.5% planých poplachů.

Jsem spokojen a mám pocit dobře odvedené práce... {smile}

Podstatně větší problém je s trackback spamem. Od půlky května přišlo 71 trackback pingů, z toho bylo 70 spamů. Jevilo se mi proto mnohem rozumnější vypnout celý trackback systém než psát filtr — i když už mám připraven i ten, opět založený na kombinaci analýzy obsahu a filtrování profláknutých frází. Uvidíme, jak obstojí v testování.


Zadal Arthur Dent, 09.10.2005 15:43:07, 17 komentářů...,
TrackBack URL tohoto příspěvku je http://blog.maly.cz/tb.php/1501

Zpět na článek

HotLinks

onecZobrazit komentáře v chronologickém pořadí

 - Alex (web)
(09.10.2005 14:10:26)

Arthure ten filtr jsi psal sám nebo existuje link?

Sám jsem si asi před týdnem napsal jednoduché ověřování založené jen na tom, jestli odesíláš komentář ze standardního formuláře na stránce, takže nemusíš opisovat písmena z CAPTCHA obrázku (což odporuje Přístupnosti pro postižené uživatele).

Naštěstí všichni roboti přistupují ve známých CMS rovnou k PHP souboru pro vložení komentáře a na formuláře kašlou - zatím funguje. Nicméně bayes by stejně byl nejlepší...
    

Re: - Arthur Dent (web)
(09.10.2005 14:21:10)

Omlouvám se, nebylo to dostatečně zřejmé: Napsal jsem si ho sám, link neexistuje.

Jak ověřuješ to, že jde uživatel přes formulář? Všechny "jednoduché" či "únosné" možnosti se ukázaly jako neúčinné a ověřování ticketem je náročné na server (např. na Bloguje by to byly desetitisíce nevyužitých ticketů denně). Poslání z formuláře by šlo ověřit např. pokaždé různým pojmenováním formulářových polí, ale je jen otázka času, kdy se tohle rozšíří a roboti si ten formulář nejdřív stáhnou... Navíc na staticky generovaném Bloguje by to nebylo až tak snadné.

Ale díky za inspiraci, zkusím něco takového doplnit...
    

Re: - DFly (web)
(09.10.2005 19:32:00)

ahoj Arture, ja uz jsem take resil neco podobneho, a zahazuji komentare bez session, kterou ma bezny strankou prochazejici uzivatel, a zatoven kazda stranka ktera ma formular, definuje take svou specifickou session promennou, a bez ni se komentar neulozi
    

Re: - Arthur Dent (web)
(09.10.2005 19:42:09)

Což počítá s povolenými cookies. Je čím dál tím víc lidí, kteří si myslí, že cookies jsou něco jako vir...

Navíc session může jistě získat i robot.
    

Re: - DFly (web)
(10.10.2005 04:08:34)

ja mam na serverech --enable_transid, takze na cookies to neni - pokud nejsou, prenasi se to pres URL

<i>> Navíc session může jistě získat i robot.</i>
to jistě může, ale větsina spamu se pak uz posila primo na dane scripty - a je pravdepodobne ze pokud nekdo neco vklada aniz by prosel strankou kde je formular...
kupodivu to odstrani dost spamu (statistiku uz jsem dlouho nedelal), ale uz jsme na toto tema spolu diskutovali, a vime ze nikdy to nebude 100%ni
    

Re: - Arthur Dent (web)
(10.10.2005 09:07:30)

Jojo, jak píšu: To že to
    


zabudol si - Markoff (web)
(09.10.2005 16:52:02)

zabudol si spomenut:
- moderovanie - kazdy komentar musi byt najprv schvaleny adminom sajty pred publikovanim, asi najdokonalejsia ochrana pred hlupostami v komentaroch obtazujucich druhych citatelov

- overovanie ludskosti - k tomu bych dodal, ze klasicke opisovanie znakov povazujem za hlupost a viac sa mi pozdava kontrolna otazka, ktora spolahlivo odblokuje zahranicnych citatelov (co vo vacsine pripadov v CZ/SK odblokuje beztak len spamerov), clovek nema problem odpovedat na otazku "siesty den v tydni?", anglicky robot sa moze strcit, anglicky ludsky spamer sa moze strcit...
    

Re: zabudol si - Arthur Dent (web)
(09.10.2005 17:03:47)

Moderování je ochrana "ex post" a spojuje v sobě všechny nepříjemnosti z "kontroly lidskosti" a z pasivní kontroly. Taková ochrana je třeba pro Bloguje naprosto nepoužitelná. Navíc - jakmile někdo začne moderovat komentáře, vyslouží si urážky a řev lůzy.

"Kontrolní otázka" je zatím použitelná, ale nebude dlouho trvat a bude na pytel. Uvedu názorný příklad: Chodí takové ČESKÉ maily, které vybízejí ke vložení odkazů na nějaké stránky, nebudu jmenovat, známe je... A je nápadně vysoký počet případů, kdy po ostrém odmítnutí této "nabídky" následuje spamovací útok na stránky dotyčného osloveného. Myslím, že je zcela oprávněné předpokládat, že část z těchto útoků mají na svědomí lidé češtinou nebo slovenštinou vládnoucí. A pro takové je "šestý den v týdnu" naprosto směšná obrana.
    

Re: zabudol si - Markoff (web)
(09.10.2005 17:18:49)

mne sa moderovanie celkom pozdava aj ked je to samozrejme pouzitelne len lokalne vzdy na 1 konkretnu sajtu a aj ta moze mat len urcity traffic, prosto nie prilis vela komentarov, myslim ze kopec ludi by si cez nu nemal problem ukocirovat svoje komentare, aj ked jasne ze to nie je systemova ochrana

kontrolna otazka je vyborna na zahranicny spam, samozrejme domovsky nijako neriesi, to uz ozaj jedine ze by chcel clovek filtrovat naozaj citatelov podla inteligencie a pod. s naozaj tazkymi otazkami ci tykajucimi sa predoslych clankov, takze pravidelny citatel by vedel odpoved

dalsim riesenim, asi najhorsim pre pouzitie na weblogoch su whitelisty prip. registracia, whitelisty su este ta lepsia vec, kedy clovek jednorazovo schvali urcity nick (prip. v kombinacii s IP) a moderovacia funkcia na schvalenie prispievatela je pouzita len pri prvom komentari, registracia pre moznost komentovania je uz tvrdsi variant celkom vhodny pre zive.sk/sme.sk ale nevhodny pre male blogy kde tym obtazovat tych par citatelov nema zmysel lebo to odpudi este aj posl. par vernych
    

Re: zabudol si - Arthur Dent (web)
(09.10.2005 17:24:43)

Jojo... Přesně jak píšeš - to je použitelné pro jednotlivé weby, kde si to ten člověk uhlídá. Ale na Bloguje je to naprosto nepoužitelné - tedy pokud to má být univerzální řešení.
    


A co ochrana JavaScriptem? - Aleš Janda (web)
(09.10.2005 18:46:30)

Co např. udělat ochranu založenou na JavaScriptu? V PHP vygeneruji "náhodný" JavaScript, který při odeslání formuláře dá do hidden políčka nějakou vypočítanou hodnotu. A tu pak zkontroluji {wink}

Nutností je zapnutý JavaScript, ale když už někdo chce někam psát, tak si ho snad zapnou i ti největší paranoici.

A drtivá většina robotů JavaScript prostě neumí... {wink}
    

Re: A co ochrana JavaScriptem? - Arthur Dent (web)
(09.10.2005 18:53:26)

To je velmi hezký řešení a na solitárním webu ho lze jistě použít. Má ovšem několik nevýhod: První budou řvát lidi s Lynxem. Druzí lidé s nějakými podivnými prohlížeči. Třetí budou řvát paranoici, kteří se bojí JS jako čert kříže. A čtvrtí zareagují - zcela potichu - autoři spambotů, kteří k informacím o tom, jak se jmenují na tom kterém webu políčka a skripty, přidají ještě informaci o algoritmu. {smile}
    

Re: A co ochrana JavaScriptem? - Roj (web)
(10.10.2005 02:11:06)

Ale myslenka menit NAZVY neviditelnych imputu mi pripada zajimava. Nechalo by se to vyexpirovat po, treba 1 hodine. Jak by se na tohle chytali spamboti?
    

Re: A co ochrana JavaScriptem? - Arthur Dent (web)
(10.10.2005 09:06:50)

To jsem už zkoušel. Jenže pak řvali lidi, co si třeba otevřeli článek a začali smolit komentář, pak to nechali a třeba za dvě hodiny to odeslali...
    

Re: A co ochrana JavaScriptem? - Roj (web)
(10.10.2005 09:55:32)

Dve reseni:
1.Dat k formulari upozorneni, at pred psanim stranku reloudnou, coz je zadouci i z hlediska toho, z mezitim mohly pribyt komentare, ktere zcela zmeni smysl toho, co dotycny chce napsat.
2.Po expiraci vratit HTML, kde bude napsano, at si nasledujici text uzivatel zkopiruje, vysmahnout mu ten post a dat link na "Znovu odeslat".

To, myslim, zachrani vetsinu otalecu, kteri pouzivaji mozek.
    

Re: A co ochrana JavaScriptem? - Arthur Dent (web)
(10.10.2005 10:00:44)

{big grin} "Ale my nechcem nic nikam kopírovat! Chceme jen napsat komentář a jít!"

Tento komentář vydal Sasun - Komentengou!
    


Re: A co ochrana JavaScriptem? - Roj (web)
(10.10.2005 09:59:24)

Eventualne klidne ten komentar zapsat do db s priznakem "nepublikovat" a otalece nejak donutit, aby ho musel mozkovou cinnosti zverejnit, treba GAPTCHA nebo kontrolnim dotazem.
    
HotLinks
Zpět na článek