Krop Spam — permanently stop spam in your blog comments

I’ve been tired of com­ment spam at my blogs (I also use Word­Press as a CMS engi­ne so com­ment spam is even more pain in the ass) so I have cre­ated a method to stop it. My method pro­ved to be very effi­cient and doesn’t need any human inte­rac­tion (whi­le plu­gins such as Aki­smet requ­ire blog owner to perio­di­cal­ly look thro­ugh spam fol­der to check if the­re are­n’t any fal­se posi­ti­ves). I have deci­ded to wrap it up in a plugin.

How does it work?

Well, I’ve noti­ced that spam­bots usu­al­ly direc­tly attack the wp-comments-post.php script that is a Word­Press com­ment pro­ces­sing script. Some (but this is real­ly rare) spam­mers also try to par­se the WWW page and when they find a <form> the­re, they just blin­dly fill it in and submit.

If you look into any Word­Press tem­pla­te sour­ce code, you’ll find that the­re is a <texta­rea name=„comment”> some­whe­re insi­de. This is a text field for com­ment con­tent that user enters. Spam­mers just fill it in with garbage.

What my plu­gin does is chan­ge this <texta­rea> name to some­thing meanin­gless for spam­mers (by default its „komen­ta­rzyk” which means „a lit­tle com­ment” in Polish 😉 ). This way, whe­ne­ver a spam­mer attacks your wp-comments-post.php direc­tly, he doesn’t fill now requ­ired „komen­ta­rzyk” field and the com­ment is not added. More­over, my plu­gin leaves the <texta­rea name=„comment” in the sour­ce code, but makes it small (1 row and 1 column only) and tries to hide it thro­ugh CSS (display: none) so human user will pro­ba­bly not fill that field in. Spam­mers don’t bother to check texta­re­a’s size nor do they under­stand CSS, so even when they par­se your webpa­ge, they not only fill in requ­ired „komen­ta­rzyk” field, but also fill in the „com­ment” field (becau­se they fill in just eve­ry­thing they find). This way they let your blog now they are bad people — if „com­ment” field is fil­led in, pro­ba­bly machi­ne fil­led in your com­ment form inste­ad of human. So we refu­se the com­ment to be added.

So, how to install the plugin?

1. Down­lo­ad the Krop Spam plu­gin and unzip it into your Word­Press wp-con­ten­t/plu­gins directory.
2. Ena­ble the plu­gin in Word­Press admin.
3. Open up wp-comments-post.php in your favo­ri­te text edi­tor and find a line that says:

$comment_content = trim($_POST['comment']);  

4. Repla­ce this line with fol­lo­wing fragment:

if(trim($_POST['comment']) != '') wp_die( __('Sorry, small comments field should be left empty - it\'s a spam trap.'));
$comment_content = trim($_POST['komentarzyk']);

5. You’re done 🙂

I have tested the plu­gin with few Word­Press the­mes found on the inter­net and it works cor­rec­tly. The only plu­gi­n’s requ­ire­ment is that it needs to have access to any tem­po­ra­ry direc­to­ry (usu­al­ly /tmp) on the server. It’s almost always possi­ble. If not — talk to you provider.

How efficient is it?

I have been using this method at my Kar­ko­no­sze page sin­ce a few mon­ths ago and it decre­ased the num­ber of spam I rece­ive from 20 – 30 a week to 1 in 3 mon­ths. The­re­’s no guaran­tee it will work for you though 😉

Nie pytaj człowieka, zapytaj maszyny

  • Prze­pra­szam, któ­rę­dy doj­dę na Plac Hoł­du Pruskiego?
  • Skrę­ci Pan w lewo przy Net­to — tyl­ko teraz mie­lo­ne 3,99zł za kilo­gram — i pój­dzie pan pro­sto do świa­teł przy McDo­nal­dzie — che­ese­bur­ger jedy­nie 2zł — a dalej w pra­wo przez Ale­ję Kwia­to­wą — chry­zan­te­my jedy­nie 3zł sztu­ka — i już pan będzie na miej­scu. Niech pan koniecz­nie wstą­pi do Bra­ma Cafe, tam jest pro­mo­cja na kawę lat­te — jedy­nie 6,50zł za fili­żan­kę plus her­bat­nik gratis.

Wyobra­ża­cie sobie kogoś tak odpo­wia­da­ją­ce­go na pro­ste pytanie?

Dla­te­go nie rozu­miem ludzi korzy­sta­ją­cych z tych śmiesz­nych auto­ma­tów, któ­re w mia­stach są sta­wia­ne, co to mają doty­ko­wy ekran i moż­na je zapy­tać gdzie jest Zamek albo Knaj­pa. Ja rozu­miem — korzy­stać ze zdo­by­czy infor­ma­ty­ki żeby zaosz­czę­dzić czas w urzę­dzie albo omi­nąć kolej­kę w ban­ku. To nie tyl­ko jest hi-tech, ale i oszczę­dza czas i/lub pie­nią­dze. Ale pyta­nie o dro­gę? Prze­cież taki auto­mat na ogół:

  • został „hack­nię­ty” przez jakie­goś mało­la­ta i poka­zu­je „możesz teraz bez­piecz­nie wyłą­czyć komputer”
  • jest bez­na­dziej­nie nie­in­tu­icyj­ny w obsłudze
  • zasła­nia 85% pla­nu mia­sta i infor­ma­cji reklamami
  • albo co gor­sza wyświe­tla infor­ma­cje tyl­ko o obiek­tach, któ­rych wła­ści­cie­le zapła­ci­li za reklamę
  • nie poka­zu­je „tu jesteś” na mapie
  • a w ogó­le ilu ludzi potra­fi szyb­ko odna­leźć dro­gę, czy­ta­jąc mapę? 

Zapy­ta­nie prze­chod­nia „prze­pra­szam, gdzie jest pocz­ta?” na ogół skoń­czy się szyb­ką odpo­wie­dzią co naj­wy­żej dru­giej-trze­ciej pyta­nej oso­by. Bez reklam. Bez prze­bi­ja­nia się przez menu. Bez roz­glą­da­nia się, gdzie ja wła­ści­wie teraz jestem. „Zapy­ta­nie” maszy­ny trwa na ogół wie­lo­krot­nie dłużej.

Jeśli więc nie jest tak, że nie zna­my ani sło­wa w języ­ku prze­chod­niów, po co mar­nu­je­my czas przy tych auto­ma­tach? Tech­ni­ka tak, ale nie za wszel­ką cenę 😉

Są jeszcze wrażliwi ludzie? (+efekt motyla)

Cie­ka­wy temat na osob­ny wpis: czy takie sys­te­my, jak Google mają świa­do­mość? Są hipo­te­zy, że świa­do­mość poja­wia się samo­ist­nie w odpo­wied­nio zło­żo­nych sys­te­mach. Może Inter­ne­to­wi dale­ko do zło­żo­no­ści ludz­kie­go mózgu, ale jakiś cień świa­do­mo­ści same­go sie­bie być może już uzy­skał. Zwłasz­cza, że o swej świa­do­mo­ści może być prze­ko­na­na jedy­nie sama isto­ta świa­do­ma — nie jeste­śmy w sta­nie tego spraw­dzić w jaki­kol­wiek spo­sób z zewnątrz.

Ale to temat na osob­ny wpis.

Wrażliwe GoogleW tym chcę poru­szyć temat: wyszu­ki­war­ka inter­ne­to­wa a ludz­ka wie­dza. Nie­któ­rzy zaczy­na­ją myśleć, że takie np. Google zna całą wie­dzę i wszyst­kie myśli, jakie kie­dy­kol­wiek powsta­ły w ludz­kich gło­wach. Jeśli ktoś coś kie­dyś pomy­ślał, to ślad tej myśli znaj­du­je się w Inter­ne­cie. Np. po co to wszyst­ko? pomy­śla­no aż 53 milio­ny razy 😉

Czy takie twier­dze­nie moż­na odwró­cić? Czy­li jeśli w Google cze­goś nie ma, to nikt nigdy tego nie pomy­ślał? Wpi­sa­łem w Google fra­zę nie ma już wraż­li­wych ludzi i nicze­go nie zna­la­złem. Czy to zna­czy, że ze świa­tem nie jest jesz­cze tak źle? Że nikt nigdy nie pomy­ślał o tym, że wraż­li­wo­ści na świe­cie już brak? Strasz­nie to optymistyczne 🙂

Nie­ste­ty, zna­lazł się taki jeden Węgorz co opi­sał spra­wę jak wyżej. Mój golb prę­dzej czy póź­niej zosta­nie zin­dek­so­wa­ny i poja­wi się pierw­szy wynik na Google­’u na pyta­nie o kres ludzi wraż­li­wych. Tak oto Węgorz zdo­ło­wał świat.

PS Oczy­wi­ście, w Inter­ne­cie nie ma każ­dej myśli, a jedy­nie te opu­bli­ko­wa­ne. Cała nadzie­ja więc w kra­jach Trze­cie­go Świa­ta — bez dostę­pu do inter­ne­tu — oraz w tyra­niach, gdzie publi­ko­wać nie wol­no. To dzię­ki myślom ich oby­wa­te­li Inter­net nigdy nie zyska ogól­noludz­kiej świadomości.

SCSP: kolejny sposób na spam w komentarzach

Od razu zazna­czam, że na pomysł sam nie wpa­dłem, tyl­ko wyko­rzy­sta­łem pomysł Macie­ja.

Pomysł na plu­gin Smart Com­ment Spam Pre­ven­ter jest taki, by do for­mu­la­rza komen­ta­rzy dodać zwy­kłe pole tek­sto­we, dać mu ID chwy­tli­we dla bota (ja dałem ema­il­con­firm), pustą war­tość domyśl­ną i… ukryć przy pomo­cy CSSa (uży­łem visi­bi­li­ty: hid­den). Użyt­kow­nik pola nie zoba­czy i nie wypeł­ni, zaś bot praw­do­po­dob­nie wypeł­ni wszyst­kie pola — tak­że to ukry­te — głu­po­ta­mi, co auto­ma­tycz­nie go zdradzi.

Smart Com­ment Spam Pre­ven­ter — pobierz plugin.

W linii

$scspFormFieldName = 'emailconfirm';

moż­na usta­wić nazwę dodat­ko­we­go pola. Nale­ży dodat­ko­wo dopi­sać do arku­sza sty­lów swo­je­go sza­blo­nu nastę­pu­ją­cą regułkę:

#emailconfirm, #emailconfirmlbl {
    visibility: hidden;
}

Polskie daty w WordPressie

Dener­wu­ją mnie daty, któ­re stan­dar­do­wo PHP daje, gdy uży­je się „F” w strin­gu for­ma­to­wa­nia (np. l, j F Y daje „czwar­tek, 10 sier­pień 2006”). Wg pol­skiej orto­gra­fii powin­no być „10 sierp­nia”, a nie „10 sierpień”.

Word­Press 2.0 (nie wiem czy poprzed­nie wer­sje też) ma odpo­wied­nie hooki i moż­na się pod­piąć z fil­trem pod wywo­ła­nia the_time() i the_date().

Oto mój plu­gin, któ­ry zamie­ni w datach „sier­pień” na „sierp­nia”, „paź­dzier­nik” na „paź­dzier­ni­ka”, itp. Wystar­czy zain­sta­lo­wać, włą­czyć, użyć „F” w strin­gu for­ma­to­wa­nia daty, i voila 🙂

Pobierz plu­gin — wer­sja 1.0