PROGRAMMING

Nasza klasa - prosty bot, część 3

#php

No to zaczynamy trzecią i ostatnią część opisującą możliwość tworzenia bota dla portalu nk.

Wszystkie znajdujące się tutaj informacje są podane tylko i wyłącznie w celach edukacyjnych. Nie odpowiadam za szkody wywołane przez złe ich wykorzystanie.

Powiedzmy, że wchodzimy na naszą klasę i znajdujemy koleżankę, która ma dużą listę znajomych. Tak wyszło, że znamy wszystkich ;-D Męczące by było zapraszanie samemu każdej osoby. Na początek pobierzemy sobie listę znajomych.

<?php
    $login = 'login';
    $password = 'password';
    $agent = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100408 Gentoo Firefox/3.6.3';
    $connect = exec('/usr/local/bin/curl -s --dump-header headers -A "'.$agent.'" -d "login='.$login.'&password='.$password.'&manual=0" http://nasza-klasa.pl/login > tmp1');
    $count = 611;
    $friend = 0;
    for($i = 1 ; $i <= $count ; $i++)
    {
        $save = exec('/usr/local/bin/curl -s -b headers -A "'.$agent.'" http://nasza-klasa.pl /friends/'.$friend.'?page='.$i.' >> friends');
        echo $i."\n";
    }
?>

Co tutaj robimy? Wpierw tak jak wcześniej logujemy się do serwisu. W zmiennej $count wpisujemy liczbę stron znajomych np. naszej koleżanki. Następnie za pomocą pętli for pobieramy źródło każdej strony i zapisujemy sobie wszystko do pliku friends. Tak na marginesie, dla 611 stron plik zajmuje 56M ;-) Następnie za pomocą listurls.sed wyciągamy wszystkie odnośniki i wybieramy tylko te, w których występuje fraza /profile/. Dla dużych plików może to trochę potrwać. Czyli tak na szybko http://sed.sourceforge.net/grabbag/scripts/list_urls.sed

./list_urls.sed friends | grep -i /profile/ > friends_ok

Jak widać wynik zapisujemy do pliku friends_ok. Jednak to jeszcze nie koniec. W pliku friends_ok mamy części linków do profili. Teraz trzeba wyciągnąć z tego unikalne numery profili. Znowu prosty skrypcik.

<?php
    $links = file('friends_ok');
    $prepared = array();
    foreach($links as $link)
    {
        $link = str_replace('/', '', $link);
        $link = str_replace('profile', '', $link);
        $link = str_replace('gallery', '', $link);
        array_push($prepared, $link);
    }
    $unique = array_unique($prepared);
    foreach($unique as $entry)
    {
        echo $entry;
    }
?>

Jak widać wrzucamy tutaj wszystko do tablicy $links. Następnie pobieramy z tablicy każdy element, wyrzucamy z niego niepotrzebne śmieci czyli /, profile i gallery, a następnie wrzucamy to do tablicy $prepared. W tej chwili mamy tablicę z numerami profili - jednak duża ich część się powtarza. Za pomocą array_unique wybieramy te unikalne, a następnie je wypisujemy. Najlepiej od razu stworzyć sobie plik z danymi. Powiedzmy, że powyższy skrypt zapisaliśmy jako prepare.php.

    php prepare.php > done

Dalszej części kodów nie będę już wklejał. Wystarczy napisać sobie skrypcik, który pobierze dane z pliku done i kolejno będzie zapraszał dane profile do znajomych. Jak można się domyśleć, wystarczy przerobić skrypt z drugiej części wpisu.

To by był koniec wpisów odnośnie pisania bota do serwisu nasza klasa. No chyba, że w przyszłości będę miał potrzebę napisania znowu czegoś takiego. Jak widać nie jest trudno stworzyć taki programik. Oczywiście można to napisać lepiej.. ale ja poszedłem drogą najszybszego pomysłu ;-) Na większości portali zabezpieczenia przed takim czymś są słabe.. o ile w ogóle da się jakoś zabezpieczyć przed takimi “szkodnikami” ;-)