Bądź: Wyszukaj na stronie z użyciem Google
reklama:

niedziela, 27 lipca 2008

Masowe pobieranie avatarów z cURL czyli hackingu część 3

Autor: , 09:00, niedziela, 27 lipca 2008


W trzeciej części kursu hackingu pod Ubuntu pobawimy się pętlami. Jak zawsze, aby było ciekawiej, przetestujemy nasze umiejętności na jednym z dużych serwisów. Przypominam jednak, że naszym celem nie jest wyrządzenie jakichkolwiek szkód, hacking to nie to samo co crackig.

Co to są pętle?

Najprościej mówiąc pętle to struktury, które pozwalają na wykonywanie tej samej funkcji kilkakrotnie z różnymi parametrami.

Najprostsza pętla w bashu wygląda tak:
for x in 1 2 3
do
echo "czesc poraz "$x
done
Polecenie echo zostało wykonane 3 razy, za każdym razem zmieniał się parametr $x przez co otrzymaliśmy rezultat w postaci:

Definiowanie ilości zapętleń w sposób "for x in 1 2 3 ..." nie jest zbyt wygodne, co gdybyśmy chcieli wyświetlić napis 100 lub więcej razy?
Z pomocą przychodzi polecenie seq dzięki któremu wystarczy podać początkową i końcową liczbę:
for x in `seq 1 100`
do
echo "czesc poraz "$x
done
Tym razem napis zostanie wyświetlony 100 razy. Mam nadzieję, że dostatecznie dobrze pokazałem jak działają pętle i nikt nie będzie miał z nimi problemu.

Pobieranie avatarów z Last.fm

Czas na moją ulubioną część, czyli wykorzystywanie zgromadzonej wiedzy w praktyce. Nasz skrypt pobierze avatary uczestników wybranej grupy w Last.fm. Do czego będą tu przydatne pętle? Otóż uczestnicy danej grypy zazwyczaj wyświetlani są na wielu stronach, gdyż zwyczajnie jest ich zbyt wiele by mogli się zmieścić na jednej. Za pomocą pętli będziemy się "przemieszczać" między stronami. Musicie wiedzieć, że aby stworzyć nawet tak prosty skrypt jak ten, należy dokładnie sprawdzić jak funkcjonuje. Dokładnie chodzi o to by dowiedzieć się jak zbudowane są linki do kont użytkowników, zdjęć czy tak jak w naszym przypadku do przeglądania użytkowników grup. W Last.fm przełączanie się między stronami podczas przeglądania można opisać wyrażeniem:
"http://www.lastfm.pl/group/"$GRUPA"/members?memberspage="$x

Zmienna $GRUPA to nazwa grupy, której avatary będziemy pobierać natomiast $x to strona w wynikach przeglądania. Z każdej strony wywołanej poprzednim poleceniem będziemy musieli "spisać" linki do avatarów. Zajmie się tylm linijka:
grep -o -e 'http://userserve-ak.last.fm/serve/.\{1,50\}\jpg' | uniq >> members
Polecenie grep wyodrębnia ze strony wszystkie linki znajdujące się na zdefiniowanym serwerze natomiast polecenie uniq dopisuje do pliku tekstowego o nazwie members odpowiednie linki.

Cała pętla będzie więc wyglądała tak:
for x in `seq 1 10`
do
curl "http://www.lastfm.pl/group/"$GRUPA"/members?memberspage="$x| grep -o -e 'http://userserve-ak.last.fm/serve/.\{1,50\}\jpg' | uniq >> members
done
Właściwie najważniejszy element skryptu mamy już gotowy, teraz wystarczy tylko dodać odpowiednią zmienną i polecenie które pobierze obrazki z linków zapisanych w pliku tekstowym. Tak więc ostatecznie cały skrypt przyjmuje postać:
#!/bin/bash
GRUPA="Metal+Polska"


for x in `seq 1 10`
do
curl "http://www.lastfm.pl/group/"$GRUPA"/members?memberspage="$x| grep -o -e 'http://userserve-ak.last.fm/serve/.\{1,50\}\jpg' | uniq >> members
done
wget `cat members`
Grupa "Metal Polska" została oczywiście użyta tylko jako przykład, zmienną GRUPA można modyfikować dowolnie. Jeśli uważnie zapoznaliście się z tym artykułem to myślę, że macie już kilka własnych pomysłów jak wykorzystać zdobyte umiejętności :)


Jeśli nie zrozumiałeś tego artykułu zapoznaj się z:
- Podstawy hackingu w Ubuntu, część 1
- Podstawy skryptów
- Pobieranie stron internetowych z Wget
Komentarze 2 comments
Anonimowy pisze...

jak zapisać np. tą najprostszą pętlę? php > .php python > .sy a to?

Anonimowy pisze...

nie musi mieć rozszerzenia. może być tylko nazwa pliku. Ewentualnie .sh ale to nic nie zmieni jak dasz .jpg też zadziała. Jedyne co musisz zrobić to nadać prawo wykonywania dla tego pliku. Np.(chmod +x nazwapliku)

Prześlij komentarz


Popularne posty

Etykiety