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” ;-)