Bohužel, můj antispam začal propouštět zprávy od robotů, a tak bylo třeba změnit obranu.

Můj jednoduchý antispam, se kterým jsem byl donedávna spokojený začal propouštět reklamu. Byly to cca tři příspěvky denně. Vím jak vypadá taková stránka, když si jí najde robot - většinou hned pošle několik desítek zpráv. Z toho se dá usoudit, že robotům se nepodařilo můj antispam obejít přímo, ale že přes něj zprávy protlačili zkrátka metodou pokus - omyl. Toto řešení bohužel můj antispam, kde je třeba vybrat z menu správnou barvu, umožňuje.

Původně jsem chtěl zalogovat IP adresy botů, v iluzi, že se bude jednat o pořád ty samé stroje, které bych následně zabanoval. Bohužel, téměř každý spam příspěvek měl jinou IP adresu. Zde je list mnou zalogovaných adres. Nijak jsem je nezkoumal - je dost možné že to budou proxy servery.


69.244.101.176
127.0.0.1, 80.190.241.118
86.56.182.79
88.103.118.111
82.127.44.131
87.242.116.136, 69.88.144.163
85.135.26.197
58.65.237.161
200.160.251.246
24.232.192.13

Rozhodl jsem se tedy šáhnout po nějakém profesionálním řešení, a tak netrvalo dlouho a už na mě koukaly výsledky vyhledání Google na klíčové slovo Captcha. Bohužel, v tomto případě jsem nebyl moc úspěšný, a tak jsem toto slovo nechal vyhledat na známém open sourceovém sídle - http://sourceforge.net/. Zdejší lokální vyhledávač mi vrátil spusty relevantních výsledků, z nichž jsem si nakonec vybral b2evou captchu. Skript je napsaný objektově a dal se velice intuitivně identifikovat. Tomu vděčím především komentářům, kterých bylo jen pár (ale byly věcné) a onomu již zmíněnému objektovému programování.

Co je Captcha, asi nemá cenu internetově znalému člověku vysvětlovat. Navíc tento článek plní pouze jakousi funkci dokumentace změn na blogu. Přesto tedy - jedná se o kontrolní proti spamový obrázek. Zkrátka skript vygeneruje náhodné znaky jako obrázek, které člověk snadno rozpozná a opíše do formulářového pole. Naopak pro robota je rozbor obrázku a následná identifikace písma velice náročná činnost a při různých deformacích písma by se dalo říci až nemožná.

Nastavení b2evo captcha class

Přestože se jedná o histroii dokumentující článek, zmíním tu několik řádek z kódu, pomocí nichž se dá ovlivnit chování Captchi. To proto, aby měl článek alespoň nějakou informační hodnotu icon_lol.gif.

b2evo_captcha.config.php



$minchars = 7;
//Minimální počet vygenerovaných znaků.


$maxchars = 7;
//Maximální počet vygenerovaných znaků.


$minsize = 20;
//Minimální velikost fontu vygenerovaných znaků.


$maxsize = 25;
//Maximální velikost vygenerovaných znaků.


$maxrotation = 20;
//Maximální rotace písmen ve stupních.


$noise = TRUE;
//Při hodnotě TRUE, budou v pozadí generovány různé malé znaky. Vypnout lze hodnotou FALSE.


$websafecolors = TRUE;
/*Generované znaky budou pouze v tzv. bezpečných webových barvách. Tzn. že se budou na všech zařízeních podporujících alespoň 256 barev (bitová hloubka 8) zobrazovat správně a přesně).*/


$debug = FALSE;
//Nechte vypnuté, jinak se Vám bude vypisovat log - průběh skriptu.


$case_sensitive = FALSE;
/*Nastavte na hodnotu TRUE, pokud chcete, aby uživatel musel opisovat velké či malé znaky přesně tak, jak je to na obrázku. Považuji to za zbytečné a obtěžující.*/


b2evo_captcha.class.php

Tento soubor už přímo obsahuje vykonávací funkce. Důležitá je zde především proměnná $private_key, ve které je uložen řetězec znaků, které v Captche budou zobrazeny. Pokud tedy explicitně změním hodnotu tohoto řetězce, můžu si generovat vlastní text.


$private_key ="Antonin Danek";


captcha_antonin_danek.jpg

Nechť nás provází spamový mír icon_smile.gificon_razz.gif.

6 komentářů

Neváhejte napsat k článku komentář

Nevyplňujte:

  1. 1
    bs

    když má někdo gd knihovnu, není co řešit :)

    • Na komentář odpověděl(a) Antonín Daněk v komentáři #2
  2. 2
    Antonín Daněk

    danek<zavináč>antonindanektečkacz

    Toto je odpověď na příspěvek: 1#

    Ale jdi, řekni mi kde dneska neni GD knihovna, i na ic.cz je, dokonce verze 2.

    Jinak jsem ale přeci jen s tou GD knihovnou problém měl, na localhostu ne, ale tady jo. Autor dal do toho scriptu test verze GD přes fci get_gd_version() a když tahle fce vrátí nulu, pak se ukončí celý skript. Onebit asi nemá tuhle fci ošetřenou, protože vracela false, ale stačilo podmínku zakomentovat a bylo to v pořádku.

    • Tento komentář je reakcí na příspěvek #1, který napsal(a) bs
  3. 3
    Scotty

    Ty woe, spam bot ma IP adresu 127.0.0.1!!! Zabanuj ho :-D

    • Na komentář odpověděl(a) Antonín Daněk v komentáři #4
  4. 4
    Antonín Daněk

    danek<zavináč>antonindanektečkacz

    Toto je odpověď na příspěvek: 3#

    Jo, na to jsem taky koukal jak blázen. Tu řádku takhle přesně jak je obsahovala proměnná $SERVER[remote_addr] - teda byly v ní dvě adresy.

    • Tento komentář je reakcí na příspěvek #3, který napsal(a) Scotty
  5. 5
    BJ

    Prijde mi to az moc ucesane. Myslim ze kazdy prumerny stroj na cteni pisma pozna ktere ty znaky jsou ty prave. Jsou nejvetsi a nejkontrastnejsi. Takze tuto ficuru vidim jen jako obycejne vypsani textu do obrazku jen zajimavym zpusobem :)

    • Na komentář odpověděl(a) Antonín Daněk v komentáři #6
  6. 6
    Antonín Daněk

    danek<zavináč>antonindanektečkacz

    Na to může říct jen to, že já jí nevytvářel a to, že ty můžeš udělat lepší. icon_wink.gif

    Jak vidíš, tak jí tu už nepoužívám (také byla prolomena).

    Obecně platí, že jakýkoliv anti-spam který stojí za prolomení bude prolomen. Tzn. že neexistuje žádné plošné řešení pro každého. Nejlepší je udělat si vlastní jednoduchou obranu, kterou nikdo jiný nepoužívá a nikomu nestojí za to jí implementovat do bota.

    • Tento komentář je reakcí na příspěvek #5, který napsal(a) BJ