Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
[HOW-TO] Skrypty logowania do portali web...
Autor Wiadomość
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #1
[HOW-TO] Skrypty logowania do portali web...
Tytułem wstępu:
Jak niektórzy zauważyli 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. ;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:
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:
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:
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:
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:
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:
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
(Ten post był ostatnio modyfikowany: 14.08.2010 10:41:51 przez rryk.)
13.08.2010 14:30:30
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
mariom Offline
zbanowany
*******

Liczba postów: 1 021
Dołączył: 16-01-2009
Reputacja: 20
Post: #2
RE: [HOW-TO] Skrypty logowania do portali web...
No i tak zdecydowanie lepiej Wink

Bardzo dobrze opisane. cURLem pewnie się też to da zrobić.

Temat rozwiązany? Dodaj [solved]!
Tekst z konsoli, kod jakiś? Użyj [code]!
blog
13.08.2010 17:34:35
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Barthalion Offline
NIE MA MENU
******

Liczba postów: 1 029
Dołączył: 25-01-2009
Reputacja: 20
Post: #3
RE: [HOW-TO] Skrypty logowania do portali web...
W zasadzie wydaje mi się, że właśnie większość powinna być napisana za pomocą curl, ale w sumie póki działa i do tego działa dobrze, nie widzę powodu do zmiany.

Google nigdy nie powie Ci: nie mam czasu, było, użyj szukajki, Google, RTFM, STFU
13.08.2010 19:54:38
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Enlik Offline
„techniczny”
*******

Liczba postów: 1 043
Dołączył: 12-12-2008
Reputacja: 26
Post: #4
RE: [HOW-TO] Skrypty logowania do portali web...
A wg mnie lepiej w Perlu. Ale jest to skrypt powłoki i używa wgeta - no, też fajnie.

[Obrazek: zeDGS.png]
Please don't steal my focus!
| git
13.08.2010 20:09:41
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #5
RE: [HOW-TO] Skrypty logowania do portali web...
Pewnie, że sie da w curl z tego co pamiętam to w Lynx też się da ;p

Na wszelki wypadek podam komendy:
Do zapisywania ciastek, czyli taka komenda jakby do logowania:
Kod:
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:
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

W Lynx nie podaję, bo nikt by i tak z tego nie skorzystał, a i tak on chyba nie posiada zapisywania ciasteczek...

Tylko co kto woli ja np. wolę wget ;p
(Ten post był ostatnio modyfikowany: 14.08.2010 22:35:25 przez rryk.)
14.08.2010 08:28:10
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Skrypty i konfiguracje mariom 2 933 31.05.2010 15:12:14
Ostatni post: EROSMRW

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Linux360.pl - forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS