Mimo zapowiedzi w dzisiejszym wydaniu KK będzie o pozyskiwaniu ze stron internetowych informacji, które potencjalnie mogą się nam przydać. Będzie więcej metodyki niż programowania.
Co robimy?
Autor wziął sobie za cel wydobycie adresów e-mail wszystkich mieszkańców Księstwa Sarmacji celem stworzenia prywatnej bazy. Powodem była zwykła ciekawość i niezdrowa chęć podglądania.
Jak robimy?
Każdy z mieszkańców ma swój profil w systemie Złota Wolność (przykładowy
profil). Jak łatwo zauważyć treść odnośnika nie zawiera identyfikatora KS, ale zwykłą liczbę. Zmieniając jej wartość możemy obejrzeć profile mieszkańców, grup lub dość skromną stronę w przypadku pudła.
Tym samym uzyskaliśmy punkt zaczepienia - możemy wykorzystać prostą pętlę, by odczytać wszystkie profile. W każdym kroku należy sprawdzić czy strona dotyczy mieszkańca. Wykorzystajmy do tego wyrażenia regularne przedstawione w poprzednich odcinkach KK. Jeżeli na stronie znajdziemy adres e-mail, to znajdziemy też identyfikator mieszkańca.
Brzmi prosto, ale jest jeden haczyk (jak nie potrafimy programować to nawet dwa). Profil mieszkańca zawiera adres e-mail tylko wtedy, gdy jesteśmy zalogowani w systemie. Złota Wolność informacje o stanie zalogowania przechowuje w tzw. ciastku. Musimy uwzględnić jego treść w żądaniu HTTP. Autor pozostawia zadanie odczytu i analizy ciastka jako pracę domową.
Czym robimy?
Tym razem Wasz ukochany pseudospecjalista porzucił PHP na rzecz C#, w którym popełnił prostą aplikację konsolową wykorzystując .NET Framework 2.0. Klasa WebClient ściągnie za nas treść kolejnych stron, a klasa Regex pomoże oddzielić ziarno od plew. W tym konkretnym przypadku program dał radę pobrać i obrobić ponad 750 profili w 80 sekund przy łączu 8 Mb/s bez optymalizacji kodu. Uzyskano ponad 450 adresów e-mail do dalszych, niecnych poczynań (śmiech Gargamela).
Wnioski
Jeżeli zależy nam na prywatności ważniejszych danych naszych użytkowników to nie pokazujmy ich automatycznie tylko np. wykorzystując
CAPTCHA. Zastąpienie zwykłej numeracji w odnośnikach czymś bardziej wyszukanym z pewnością uprzykrzy życie podglądaczom.
Kolejnym wnioskiem wynikającym z czwartego wydania KK jest brak słowności autora - miało być o PDF a tu jakieś pierdoły. Następnym razem ;). Dziurawego kodu!
Konkurs
Tematem pierwszego konkursu Kąciku Kodera jest aplikacja pobierająca adresy e-mail mieszkańców Księstwa Sarmacji przez strony WWW i zapisująca je do pliku. Język programowania dowolny, spakowane archiwum z działającym kodem źródłowym należy przesłać na adres e-mail autora. Termin nadsyłania programów mija o północy 5 lutego br. (lub wcześniej w przypadku wprowadzenia stosownych zabezpieczeń w ZW) Przy ocenie będzie brana pod uwagę dokładność węszenia, czas nadesłania zgłoszenia, szybkość działania oraz elegancja programu.
Nagrody:
[ul][li]I miejsce - 3000 lt[/li]
[li]II miejsce - 2000 lt[/li]
[li]III miejsce - 1000 lt[/li][/ul]
W przypadku mniejszej liczby nagrodzonych do wygrania pula 6000 lt. Gorąco zachęcam! :)
EDIT:
W związku z interwencją JKW Piotra Mikołaja i znaczącym podniesieniem poziomu trudności dorzucam od siebie 5000 lt dla zwycięzcy.
Nikt jeszcze nie zasponsorował tego artykułu.
Nikt jeszcze nie lubi tego artykułu.
A Kącik Kodera uwielbiam. ❤