Ruslanas.com
War on comment spam
2007-02-06 by Ruslanas Balčiūnas.
Šiandien pagaliau pasiraitojau rankoves ir nusprendžiau pamėžti mėšlą komentarų arklidėse.
Pirma, užblokuojam (pašalinam) PHP bylą, kuri įtraukdavo komentarus į duomenų bazę. Vartotojai mato šlykštų pranešimą, kad ieškomas dokumentas nerąstas. Tokia žioplumo kaina, nes reaguoti reikia nedelsiant.
Tada prisijungiam prie duomenų bazės ir pamatom, kad ten šimtai tūkstančių komentarų. Pirma mintis, kuri šauna į galvą, trinti viską, nesukant galvos. Tačiau kodėlgi nepasimokius iš savo žioplumo.
Pradžiai atsiverčiam keletą įrašų ir bandom nustatyti bendrus visų šiukšlių bruožus.
Pira, kas krenta i akis, jie naudojasi BBCode'u, Taigi:
DELETE FROM table_name WHERE message_body_field LIKE '%[URL=%'
Toliau nustatome, kas jie:
DELETE FROM table_name WHERE message_body_field LIKE '%pharmacy%' DELETE FROM table_name WHERE message_body_field LIKE '%replica%' DELETE FROM table_name WHERE message_body_field LIKE '%celebrity%' DELETE FROM table_name WHERE message_body_field LIKE '%WEIGHT LOSS%'
Same for: Tramadol, Vicodin, Viagra, Hydrocodone, etc.
Ir galiausiai suprantam, kad pačios negudriausios žinutės, tai iš eilės einančios nuorodos, ne mažiau 3, taigi:
DELETE FROM table_name WHERE message_body_field LIKE '%http://%http://%http://%'
Tai paprasčiausias būdas išvalyti duomenų bazę nuo, jau joje esančių, šiukšlių.
Paskui "informuojam" paieškos sistemas, kad bazėje likusios nuorodos neturėtų būti traktuojamos per rimtai.
UPDATE table_name SET message_body_field = REPLACE(message_body_field, '<a href=', '<a rel="nofollow" href=') WHERE message_body_field LIKE '%<a href=%'
© ruslanas.com 2004-2008
El. paštas: ruslanas.com@gmail.com
This work is licensed under a Creative Commons Attribution 3.0 Unported License.