[HOW-TO] Skrypty logowania do portali web...

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
rryk
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 206
Rejestracja: 04 mar 2008, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

[HOW-TO] Skrypty logowania do portali web...

Post autor: rryk »

Tytułem wstępu:
Wpis pochodzi z forum linux360.pl, gdzie mój poprzedni wątek o "podobnym" temacie zniknął, niektórzy się pewnie domyślają dlaczego, inni niekoniecznie. Tak czy siak moje intencje były dobre i miały szlachetne pobudki. Zaś po krótkiej rozmowie z moderatorem postanowiłem, że napiszę to tak jak powinno być napisane, a że może okazać się to niezwykle przydatne udostępniam to także na innych forach. ;p

Treść właściwa:
Wielu z was chciało by za pomocą skryptu sprawdzać nowe wiadomości na nk czy na innych tego typu serwisach. Mając taki skrypt można było by go dodać do conky'ego i być zawsze na bieżąco... Postaram się wam nieco pomóc w napisaniu takiego skryptu...

Co należy wiedzieć:
Zacznijmy od tego, że większość serwisów opiera się na wymianie informacji metodami GET i POST. My skoncentrujemy się na tej drugiej metodzie, a mianowicie POST, gdyż to ona wysyła informacje do serwera.

Co, jak i gdzie?
Ok wiemy jaka metoda odpowiada za wysyłkę ale co wysyła, gdzie wysyła i jak wysyłać z poziomu konsoli... No to po kolei co tak właściwie wysyłamy do tego serwera, żeby to sprawdzić szybko, łatwo i przyjemnie, bez babrania się w kodzie, potrzebować będziemy wtyczki do Firefoxa o nazwie Live HTTP Headers. Jego instalacja nie jest jakaś specjalnie trudna więc nikt nie powinien mieć żadnych problemów. Po jej instalacji w zakładce Narzędzia mamy nową pozycję (Live HTTP Headers), "odpalmy" ją, i zobaczmy "z czym to się je".
Po włączeniu ukazuje się nam proste i przejrzyste okienko z czterema zakładkami, my skorzystamy z dobrodziejstw Generator'a i Headers. Generator rejestruje praktycznie wszystko, od GET, poprzez POST aż po redirects. Zaś Headers nagłówki. Zobaczmy jak to działa na przykładzie nk.pl. Pamiętajmy, że aby sprawdzić okienko Live HTTP Headers musi być ciągle otwarte. Wchodząc na nk.pl w Generatorze widzimy masę GET'ów, ale to nas nieinteresuje, my potrzebujemy POST'ów więc przechodzimy do logowania, odznaczamy "zaloguj bezpiecznie po SSL" (UWAGA z tego co się orientuje wget nie obsługuje szyfrowania SSL), wpisujemy login, hasło i klikamy zaloguj. Tym razem w generatorze powinno nam śmignąć na początku POST potem same GET. Więc odszukajmy nasze logowanie, które powinno wyglądać mniej więcej tak:

Kod: Zaznacz cały

POST /login login=login&password=haslo
Jak widzimy metodą post została wysłana wiadomość o treści "login=login&password=haslo". Ale gdzie ta wiadomośc została wysłana?? Jak wskazują nam logi wysłano ją na adres /login. Z tym, że to nie jest pełna nazwa, a tylko końcówka, którą dodajemy do adresu. W naszym przypadku pełną nazwą będzie http://nk.pl/login . Dzięki temu wiemy już jak i gdzie, ale zaraz, zaraz to po co nam Header?? Otóż Header zawiera informacje takie jak np. User-agent, który identyfikuje przeglądarkę, czy Referer, który wskazuje skąd nastąpiło przekierowanie. Te informacje są czasem swego rodzaju zabezpieczeniem, więc ich stosowanie jest niezwykle ważne. Aby się dowiedzieć jaki mieliśmy Referer i jaki User-agent jest ustawiony wchodzimy w zakładkę Headers i szukamy http://nk.pl/login tam wszystko będzie ładnie napisane. W ten sposób mamy już wszystko co potrzebne, aby się zalogować. Do logowania użyjemy znanego wszystkim wget'a. Można też co prawda użyć cURL'a czy Lynx, ale o tym parę postów niżej.
Oto magiczna komenda:

Kod: Zaznacz cały

wget -q --user-agent="Tutaj podajemy naszego User-agenta" --keep-session-cookies --save-cookies=zapisaneciastka.txt --referer=http://nk.pl/ --post-data="wiadomość POST którą wyłuskaliśmy z logów" -O zalogowany.html http://nk.pl/login
Oczywiście trzeba uzupełnić tą komendę odpowiednimi parametrami, tak aby końcowy efekt był np. taki:

Kod: Zaznacz cały

userAgent="Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3"
wget -q --user-agent="$userAgent" --keep-session-cookies --save-cookies=zapisaneciastka.txt --referer=http://nk.pl/ --post-data="login=login&password=haslo" -O zalogowany.html http://nk.pl/login
Następnie, za pomocą dowolnej przeglądarki, otwieramy plik zalogowany.html i sprawdzamy czy rzeczywiście działa, jeśli tak to kolejne kroki, jak wysyłanie wiadomości, możecie zrobić sami pamiętając tylko, że tym razem otwieramy ciasteczka, a nie zapisujemy. Czyli przyszłe komendy powinny wyglądać mniej więcej tak:

Kod: Zaznacz cały

wget -q --user-agent="$userAgent" --keep-session-cookies --load-cookies=zapisaneciastka.txt --referer=http://naszreferer.pl/ --post-data="msg=nasza+wiadomosc" -O wiadomosc.html http://nk.pl/login
Oczywiście można też przypisać cały kod html do zmiennej np.

Kod: Zaznacz cały

logowanie=`wget -q --user-agent="$userAgent" --keep-session-cookies --save-cookies=zapisaneciastka.txt --referer=http://nk.pl/ --post-data="login=login&password=haslo" -O - http://nk.pl/login`
Na zakończenie
Mam nadzieje, że tutek się podobał i nie przynudzałem. Więcej o opcjach użytych przy wget macie w man. Informacje tutaj zawarte powinny wam pomóc w sprawdzaniu poczty nk czy nawet wysyłaniu wiadomości nk przez konsole. Przypominam, że na podobnej zasadzie działa większość portali web... ;p

Pozdrawiam Eryk Rutkowski.

PS. Zakaz kopiowania tekstu bez zgody autora.

[EDIT]
PRZYPOMINAM, ŻE SPAM JEST OKREŚLONY W KODEKSIE KARNYM ORAZ W USTAWIE O ŚWIADCZENIU USŁUG DROGĄ ELEKTRONICZNĄ:

Kod: Zaznacz cały

Art. 269a kk  Kto, nie będąc do tego uprawnionym, przez transmisję, zniszczenie, usunięcie, uszkodzenie lub zmianę danych informatycznych, w istotnym stopniu zakłóca pracę systemu komputerowego lub sieci teleinformatycznej, podlega karze pozbawienia wolności od 3 miesięcy do lat 5.
Art. 24 ustawy o świadczeniu usług drogą elektroniczną
1. Kto przesyła za pomocą środków komunikacji elektronicznej niezamówione informacje handlowe, podlega karze grzywny.
2. Ściganie wykroczenia, o którym mowa w ust. 1, następuje na wniosek pokrzywdzonego.
WIĘC PROSZĘ NIECH NIKT NIE WYKORZYSTUJE ZDOBYTEJ TU WIEDZY DO SPAMOWANIA JAKIEGOKOLWIEK SERWISU

[EDIT 2]
Jak pisałem wcześniej w cURL też się da więc jakby ktoś był zainteresowany:

Do zapisywania ciastek, czyli taka komenda jakby do logowania:

Kod: Zaznacz cały

userAgent="Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3"
curl --user-agent "$userAgent" --cookie-jar zapisaneciastka.txt --referer "http://nk.pl" --data "login=login&password=haslo" http://nk.pl/login
I do wczytywania ciasteczek czyli ew. dalszych działań jak np. wysyłanie wiadomości.

Kod: Zaznacz cały

userAgent="Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3"
curl --user-agent "$userAgent" --cookie zapisaneciastka.txt --referer "http://nk.pl" --data "msg=nasza+wiadomosc" http://nk.pl/wiadomosc_add
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: [HOW-TO] Skrypty logowania do portali web...

Post autor: DDAroo »

rryk pisze:PS. Zakaz kopiowania tekstu bez zgody autora.
A nie lepiej uwolnić tekst na zasadach wolnej licencji np. creative commons zamiast obwarowywać go zakazami? Mnóstwo (co bardziej światłych) bloggerów udostępnia swoje teksty, niejednokrotnie cenne i unikatowe, na zasadach wolnych licencji.
Awatar użytkownika
rryk
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 206
Rejestracja: 04 mar 2008, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: [HOW-TO] Skrypty logowania do portali web...

Post autor: rryk »

Można z tym, że publikując go na wolnej licencji jak np. CC, nie wiemy gdzie nasz tekst został opublikowany (a na tym mi zależy) oraz nie wiemy w jakiej oprawie tzn. nie chce aby ktoś wyrwał moje słowa z kontekstu tak że wyjdzie coś w rodzaju: "[HOW-TO] Skrypty do (...) SPAMOWANIA (...) portali web..."
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: [HOW-TO] Skrypty logowania do portali web...

Post autor: DDAroo »

I co zrobisz jeżeli ktoś przerobi Twój tekst w poradnik spammera i opublikuje gdzieś w sieci? Jeżeli uda Ci się jakimś cudem na ten tekst natrafić (chyba nie codziennie poszukujesz w wyszukiwarce fraz w stylu "skrypt spamowanie" albo "bash spambot") to zaspamujesz skrzynkę mailową delikwenta informacją o łamaniu prawa autorskiego? :) A może będzie Ci się chciało atakować właściciela serwera? Uwalniając tekst dajesz więcej swobody tym, którzy będą chcieli legalnie napisać tekst bazujący na informacjach zawartych w Twoim poście.
Awatar użytkownika
rryk
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 206
Rejestracja: 04 mar 2008, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: [HOW-TO] Skrypty logowania do portali web...

Post autor: rryk »

Widać nie rozumiesz tego co napisałem. Kopiowanie to nic innego jak zerżnięcie i podpisanie się własnym nazwiskiem, a nie pisanie tekstu bazującego na informacjach tutaj zawartych. Rozumiesz?? A chce wiedzieć gdzie mój tekst będzie kopiowany i udostępniany aby wiedzieć o ew. błędach i pytaniach skierowanych do mnie. Na tym mi głównie zależy... dlatego na razie wątpliwa jest zmiana licencji na CC.
Ps. Generalnie zgodzę się na wszystko nawet na jakieś zmiany byle by było gdzieś małym druczkiem moje nazwisko i abym wiedział na jakiej stronie zostało to opublikowane.
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: [HOW-TO] Skrypty logowania do portali web...

Post autor: DDAroo »

ok, rozumiem, pełna kontrola.
Awatar użytkownika
rryk
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 206
Rejestracja: 04 mar 2008, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: [HOW-TO] Skrypty logowania do portali web...

Post autor: rryk »

W pewnym sensie...
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości