Premagati spambota

Obrazci zaščiteni s sistemom CAPTCHA (to je sistem, ki zahteva da pretipkate čudno napisan niz znakov), so uporabnikom neprijazni, zato jih moramo uporabljati zmerno in samo kadar ne gre drugače. Večino spam botov (programov, ki samodejno izpolnjujejo obrazce po spletu) se da premagati že z bolj prefinjenimi metodami …

Opazil sem, da večina spambotov ne prestane niti osnovnega testa, to je test s piškotkom. Ta deluje tako, da obiskovalec prejme piškotek, ki ga ob oddaji obrazec zahteva. Ker večina spambotov deluje tako, da podatke v obliki post data posredujejo neposredno v datoteko, ki je navedena kot prejemnik podatkov (lastnost action) oznake <form>, poleg tega pa preprosti boti ne premorejo spomina, ki bi piškotek sprejel.

Toda za vse spambote to žal ne drži. Osnovne tehnike blokade ipjev in besed, ki jih spamerji najpogosteje uporabljajo večinoma ne delujejo. To je jasno razvidno iz spodnjega izpisa log datoteke:

 Sun, 27 Jul 2008 22:14:04 +0200 [gost] [212.99.89.6]  alias kIaniAYUlT je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:05 +0200 [gost] [203.158.221.227]  alias vYuNHDRDXeelEkDQYY je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:07 +0200 [gost] [203.158.221.227]  alias QCMKeEAu je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:13 +0200 [gost] [163.29.250.4]  alias trJoloEyrt je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:18 +0200 [gost] [203.158.221.227]  alias KiBZZBXkWSqCWl je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:29 +0200 [gost] [203.157.126.9]  alias sgsTlqHfJb je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:40 +0200 [gost] [202.64.157.36]  alias BqBMtjLitr je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:44 +0200 [gost] [203.157.235.3]  alias oohDPkPtG je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:47 +0200 [gost] [61.6.54.11]  alias jPdUkdHDwWqz je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:48 +0200 [gost] [194.106.106.146]  alias DPAemQbQd je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:51 +0200 [gost] [194.170.166.190]  alias hFtDUpHdkFF je napisal verz v neskončno. Sun, 27 Jul 2008 22:14:59 +0200 [gost] [202.64.157.36]  alias WKUGbjOewjKDCjxmnF je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:03 +0200 [gost] [91.89.86.14]  alias zghhSzEfgFTV je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:09 +0200 [gost] [194.170.166.190]  alias GseHtbhWj je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:15 +0200 [gost] [212.11.191.18]  alias jRaUBfmlMmG je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:15 +0200 [gost] [205.235.34.130]  alias dYflsLfV je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:28 +0200 [gost] [71.42.149.66]  alias yEudwOrHET je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:29 +0200 [gost] [202.64.157.36]  alias hxBHzchIG je napisal verz v neskončno. Sun, 27 Jul 2008 22:15:30 +0200 [gost] [71.42.149.66]  alias IwMWXsUMji je napisal verz v neskončno.

Zgornji log je z neke vrste klepetalnice oz. “shoutboxa”, zato bi jo z protipoplavno zaščito (flood protection) omejil v funkcionalnosti. Sporočila, ki so sicer očitno oddana s strani istega bota prihajajo z različnih ipjev. Ena od tehnik, ki bi pride tukaj v upoštev je test hitrosti. Če med obiskom strani z obrazcem in oddajo obrazca mine manj kot sekunda, potem obrazec gotovo oddaja robot. Toda nekateri boti so zviti in imajo vprogramiran časovni presledek. Iz zgornjega loga je razvidno, da je med posameznimi oddajami manj kot sekunda, a ker prihajajo iz različnih IP-jev in z različnimi piškotki, je vsak izmed njih spoznan kot vnos drugega uporabnika.

Ker gre očitno za sabotažnega bota, ki mu ni do tega, da bi delal reklamo si tudi z registrom najpogostejših spamerskih besed ne moremo prav veliko pomagati, saj v obrazec vpisuje naključne nize znakov. Zadnja stvar ki mi je ostala je to, da sem ugotovil, da so ti nizi narejeni iz naključno razporejenih majhnih in velikih črk v eni besedi, česar pa ljudje v običajni komunikaciji ne uporabljamo. Končni test torej izloči vse vnose, ki ustrezajo sledečemu regex izrazu:

[^A-Za-z]*([A-Z][a-z]+[A-Z][a-z]+([A-Z][a-z]+)*)[^A-Za-z]*

Tako, zdaj lahko spet mirno spim do naslednjega udarca prenovljenih spambotov.