rss

Proti spamu společně? Ne tak docela

15. 10. 2005

BlueBoard.cz.. řekl jsem si, když mě napadlo, jak sbírat IP adresy pro blacklist (seznam zakázaných IP adres) a alespoň trochu utnout tipec komentářovému spamu, který v posledních dnech útočí na všechny knihy v systému BlueBoard.cz.

Napadlo mě totiž jedno řešení. Do formuláře, jakým se mažou příspěvky z knihy umístím zaškrtávátko, že příspěvek, který právě mažete je spam. V tu chvíli mi pak přijde mail, kde uvidím text příspěvku a IP. Pokud uvidím, že se jedná o spam, přidám IP do blacklistu.

Myšlenka vlastně byla taková, že zájem zbavit se spamu v knihách je jak na mé, tak na straně majitelů knih, takže vzájemnou spoluprácí se ho zbavíme. Pravda je že několik IP adres se podařilo nasbírat, takže svou funkci to dá se říci splnilo, ale začalo to mít ještě trochu vedlejší účinky. Jako spam začali lidé označovat i normální příspěvky, které z knihy mazali. Nechápu proč, protože se evidentně o spam nejednalo, kolikrát příspěvek vypadal spíše jako od majitele knihy samotného.

Nevědí přesně, co je spam, řekl jsem si, a napsal jsem do formuláře k zaškrtávátku "Tento příspěvek je nevyžádáné obchodní sdělení". Bohužel to moc nepomohlo, pořád je někdo schopen označit za obchodní sdělení třeba toto:

"Tyhle stránky mají nějak rozhozený layout"

Vychytal jsem si jednoho majitele knihy, který právě jako obchodní sdělení označil úplně jiný příspěvek a zeptal jsem se ho , proč to udělal. "Chtěl jsem se toho člověka zbavit", pověděl mi. Myslel nějakého záškodníka, jenž mu do knihy píše něco ošklivého.

Hmm, takže s uživateli asi moc spolupráce nebude. Oni na to nenahlíží jako na možnost zbavit se nepříjemného spamu, ale chtějí to hned využít i pro své vlastní potřeby.

Napsal mi taky Jirka Macich, že banovat IP není moc dobrý nápad, protože spameři užívají dynamických IP a kdyby takovou IP potom dostal někdo normální, tak by byl o přidání příspěvku do knihy ochuzen. Musím uznat, že má pravdu, takže jsem vlastně zase tam kde jsem byl. Jdu vymýšlet jiný způsob.


Komentáře

tark

Já mám v Pixine (můj systém pro fotoblog) implementován blacklist na slova (bohužel bez Bayes. filtru) :D Zkus si mi tam třeba zadat "casino" a … nevezme ti to. Pro standardní anglickej spam je to zatím IMHO nejlepší volba, CAPTCHA třeba nesnáším…

Stejně jako nesnáším schvalování komentářů.. ;)

Alex

CAPTCHA také nesnáším - a navíc je to proti Přístupnosti webu.Když budeš bannovat slova, může se stát, že uživateli nepůjde odeslat příspěvek a nebude vědět proč.

Co takhle logické otázky? Zkus využít to, že většina spamu přichází tak, že robotovi nastavíš jen jak se jmenují INPUTy formuláře a on pak nepřistupuje do formuláře ale rovnou do souboru co formulář odesílá.

Pokud tedy provedeš kontrolu, zda-li uživatel odeslal příspěvek přes formulář, minimálně část spamu to odstraní - může to být třeba zahashovaná IP adresa odesílatele porovnávaná s jeho IP adresou při ukládání do databáze. Pokud nebude hash z odesílacího formuláře stejný (nebo nebude žádný) - smůla! :)

Nebo zkus CAPTCHA nahradit logickou otázkou, např. "Co je opak kočky?". "Pes". Něco podobného jsem si napsal pro svůj blog běžící na B2Evolution a zatím to funguje 100%ně (po dvou týdnech testování). Ze sta anglických komentářů denně neprojde ani jeden. A je to přístupné. :) Nicméně - kdo ví jak to bude v budoucnu?

Hodně štěstí. :)

Medhi

Alex (#2): S tou hashovanou IP to není špatný nápad, ale občas jí prostě někdo nemá a ten by pak nemohl přidat příspěvek. Pravda, možná to je povolená ztráta. Asi to zkusím.

Co se týče otázky, bojím se jí stejně jako CAPTCHA, nechci s tím obtěžovat tuny lidí, kteří do knih přispívají. Tuším, že by to nedělalo dobrotu.

dgx

Tohle téma se nedávno řešilo na conBlogu. S tím výsledkem, že IP adresa se může změnit i mezi načtením stránky s formulářem a jeho odesláním. Například při použití Google Acceleratoru :-(

Medhi

dgx (#4): Aha, díky, takže jsem opět ve slepé uličce.

tark

Dávej tam náhodný hash, kterej uložíš do db … ale taky to není dobrý řešení, protože si robot může úplně v pohodě stránku načíst (filegetcontents()) a potom si pomocí regexpů vytáhneš ten hash..

function NovyHash() {
return sha1(rand().rand().rand());
}

Jirka Pavlik

tark (#1): jenze na mem blogu porad pisi nice blog, beatiful blog, a proste takhle pochvalne o blogu - anglicky, treba i 1000x za den, a casino tam bylo tak 3x.

Fiwne

Já používám prostý input s popiskem "1+1=" a do inputu musí uživatel dopsat výsledek. Žádný robot mi to zatím nepřekonal, není to proti přístupnosti, matematika je univerzální jazyk a když to budu ukládat do cookie, tak to ani nebude zdržovat.

Horší je ovšem referrer spam:(

Alex

Fiwne (#8): Tak ho zruš nebo alespoň znepřístupni veřejnosti a zaveď tag parametr NOFOLLOW…

Finwe

Pardon za překlep v přezdívce, moje smůla;)

Alex (#9): Asi jsem Tě úplně nepochopil, ale IMHO se tím referrer spamu nezbavím. A taky přemýšlím, zda nezabíhám do OT…

ambiente

Zatím jsem to vyešil tak, že v databázi musí být každej příspěvek active a ten buď Y nebo N, přičemž implicitně je N. No a teď už jde jen o to povolovat jako active jenom chtěné příspěvky, to znamená, takové, které neobsahují zakázáná slova apod. Na druhou strany o žádné příspěvky nepřijdete, proteže stačí jednou za čas projet příspěvky s atributem active N, spam smazat a případně chtěné povolit;)

Vojtěch Vrbka

Řešení je Captcha > když opoví správně uložit do cookie že není spamer (např nějaký hash) a nějakou dobu bude normal přidávat a o captcha ani neuslyší.

rainbof

nebo zrušit komentáře :) já se přikláním k řešením typu 1+1= odpoved na jedno misto, pri trech spatnych ban 5 minut.


Archiv