Wedos

pondělí 21. listopadu 2011

Aukro stoplo (ehm!) soutěž

Aukro s několikadenním zpožděním stoplo soutěž, při které nezvládlo organizaci. Většina lidí totiž pro dosažení výher používala vyhledávací roboty.
Správně by mělo Aukro zrušit všechny takkto vyhrané aukce, ale to už je na nich, jak to udělají.

Aukro se pokoušelo (ne příliš úspěšně) bránit (několikrát jsem o tom psal na svém G+).

Vzhledem k fungování Aukra je takovýto skript celkem snadný. Postupů může být několik. Nejčastěji byla zvolena metoda vyhledávání uměle vytvořených účtů. Tenhle postup se ukázal jako jeden z mála zcela spolehlivý. Aukro se totiž se zabezpečením příliš nebabralo. Z jeho strany zazněla jen velkohubá prohlášení a dá se říci i lži.

Jak tedy takový skript mohl vypadat? (ukážeme si jeden koncept i když metod mohlo být více).
PS: Nijak tím nikoho nenabádám aby ho používal, ale jedná se o zajímavou výzvu.

<?PHP
include_once 'simple_html_dom.php'; //knihovna pro parsování HTML obsahu

function HledaniAukci($startid)
//hledá nového uživatele od zadaného ID a kontroluje jestli má Aukro plus, pokud ho najde otestuje jestli má nebo nemá akci, pokud ano vypíše jí na obrazovku. 
        {
               $return ="";
             
                $dokolika = $startid+20; //skript bude počítat po 20 uživatelích
                for ($index = $startid; $index < $dokolika; $index++)
                {
                $start = "http://aukro.cz/listing/user.php?us_id=".$index; //najde stránku s aukcemi uživatele
                $html = file_get_html($start); //načte její obsah
                foreach($html->find('img') as $element) //tady by to šlo řešit i přes RSS a title kanálu, kdy kanál pro neexistujícícho uživatele má označení jen "Aukro:" a existující má "Aukro: username"
                        {
               if (substr($element->title,-6,6) == "Aukro+"): //detekce jestli je plus
               {
                         
                         foreach($html->find('a') as $element)  //hledá odkaz na aukce
                          {
                          if (substr($element->href,-5,5) == ".html"):
                          {
                   $l=explode("-i",$element->href); // najde odkaz na aukci (id)
                  
                                            $text = "i".$l.","; //uloží do souboru a oddělí čárkou
                                            $soubor = fopen("aukro.txt", "a+");
                                            fwrite($soubor, $text);
                                             fclose($soubor);
                       
                     $return = "<a href=\"http://aukro.cz".$element->href."\">".$element->href."</a><br>";
                     //obsah pro návrat

                   }
                   endif;
               }
                endif;
                
                   }
                         
               }
                endif;
                }
                }
                return $return; // vrátí odkaz na aukci
        }
?>

Tenhle skript pochopitelně není vše. Lze ho doplnit o skript, který z textového souboru vytáhne data a provede nákup (je dobré tyto skripty od sebe rozdělit na různé servery aby se navzájem nezdržovali).

Pochopitelně je takový skript mnohem rychlejší než uživatelé.

Pro Aukro je to ostuda. Tohle šlo předvídat a například tenhle skript šel snadno eliminovat. Přesto jeho uživatelé nakoupili IPady 2, IRoboty a Sedací polštáře (ne přímo tohoto, ale obdobných skriptů, abych byl přesný).

Přidám-li k tomu příšernou komunikaci Aukra skrze Facebook (odpovědi a informace ztracené ve stovkách komentářů), jedná se o těžce nezvládnutou PR akci.