Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [java] Downloader
230005
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


Piszę program do ściągania plików z m.in rapidshare i zawiesiłem się na najważniejszej rzeczy - samym ściąganiu (IMG:style_emoticons/default/winksmiley.jpg) . Interfejs RS jest dwuetapowy - najpierw trzeba kliknąć czy jest się premium, czy free user, potem przechodzi się do ściągania. Firebug mówi, że tylko jedna zmienna jest (na pierwszym etapie) przesyłana - dl.start=Free (odpowiednio inna dla premium, ale na tym mi nie zależy), no i ją wysyłam:

  1.  
  2. url = new URL("tutaj adres");
  3. urlConn = url.openConnection();
  4. urlConn.setDoOutput(true);
  5.  
  6. String data = URLEncoder.encode("dl.start", "UTF-8") + "=" + URLEncoder.encode("Free", "UTF-8");
  7. PrintWriter wr = new PrintWriter(urlConn.getOutputStream());
  8. wr.print(data);
  9. wr.close();
  10.  
  11. //dalej odczytuję
  12.  


Zawsze w odpowiedzi dostaję pierwszą stronę, zamiast tej, która powinna pokazać się po kliknięciu. Nawet wysyłałem te same nagłówki, co FX - wciąż nic. Jak zrobić tak, żeby działało (IMG:style_emoticons/default/biggrin.gif) ?

Edit:

A dokumentacja api rapidshare na ten temat milczy...

Ten post edytował 230005 26.05.2010, 17:33:09
Go to the top of the page
+Quote Post
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Na moją logikę to musisz udać czekanie, tj odczekać ileś tam sekund i dopiero bo na pewno to sprawdzają po stronie serwera.
Go to the top of the page
+Quote Post
230005
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


To akurat wiem, ale do tego etapu jeszcze nie doszedłem. Mi chodzi o miejsce gdzie klikasz "free user" i przenosi cię na kolejną stronę - czyli zatwierdzasz formularz, i dostajesz odpowiedź. Ja w odpowiedzi dostaję tą samą stronę, tak jakby formularz nie został wysłany. Myślałem, że może jakieś pole tego właśnie formularza mi umyka, ale w źródle strony jest tylko jedno pole które trzeba przesłać. W firebugu też jest napisane, że tylko ono zostało wysłane...
Go to the top of the page
+Quote Post
bim2
post
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Hmm, może sprawdzają ciasteczkami czy byłeś na wcześniejszej stronie (bot checker). Użyj curla i zapisz ciastko. No i odwiedz ta strone z wyborem w takim razie.
Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(230005 @ 26.05.2010, 22:57:58 ) *
To akurat wiem, ale do tego etapu jeszcze nie doszedłem. Mi chodzi o miejsce gdzie klikasz "free user" i przenosi cię na kolejną stronę - czyli zatwierdzasz formularz, i dostajesz odpowiedź. Ja w odpowiedzi dostaję tą samą stronę, tak jakby formularz nie został wysłany. Myślałem, że może jakieś pole tego właśnie formularza mi umyka, ale w źródle strony jest tylko jedno pole które trzeba przesłać. W firebugu też jest napisane, że tylko ono zostało wysłane...

co do formularzy i niektórych adresów to strony na które jest się skierowanym nie zawsze są docelowymi, często zdarzają się przekierowania... co do firebug'a to on nie do tego służy ;] (przydatny jest ale...)... jeśli chcesz wcześniej przeanalizować co gdzie się dzieje, co dokładnie jest wysyłane, jakie nagłówki [w tym ciasteczka, post i np. referer...], czy nastąpiło przekierowanie i inne to pod mozille polecam inne narzędzie jakim jest:
Live HTTP Headers

jeśli w odbieraniu i symulowaniu przeglądarki za wiele z surowymi nagłówkami nie chcesz się bawić to polecam jak kolega wyżej cURL'a który na pewno ma interfejs także dla javy...
Go to the top of the page
+Quote Post
230005
post
Post #6





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


Kurde, no ten Live HTTP headers pokazuje raczej to co już wiem:

#request# POST http://rs30.rapidshare.com/files/140895646...ndows.part1.rar
POST /files/140895646/netbeans-6.1-ml-windows.part1.rar dl.start=Free
#request# POST http://rank.ant.com/fetch/
#request# GET http://rs30.rapidshare.com/img2/styles.css
#request# GET http://rs30.rapidshare.com/img2/favicon.ico
#request# GET http://rs30.rapidshare.com/img2/favicon.ico
#request# GET http://rs30.rapidshare.com/img2/menu_bg.gif
#request# GET http://rs30.rapidshare.com/img2/rslogo.gif
#request# GET http://rs30.rapidshare.com/img2/pfeil.jpg
#request# GET http://rs30.rapidshare.com/img2/stepx_sprite.gif
#request# GET http://rs30.rapidshare.com/img2/content_bg...ttom_sprite.gif
#request# GET http://rs30.rapidshare.com/img2/content_bg_middle.gif
#request# GET http://rs30.rapidshare.com/img2/symbol_fertig_small.gif
#request# GET http://rs30.rapidshare.com/img2/preisschild_bg.gif
#request# GET http://rs30.rapidshare.com/img2/prepaid_preisschild_bg.jpg
POST /fetch/ url=http%3A%2F%2Frs30.rapidshare.com%2Ffiles%2F140895646%2Fnetbeans-6.1-ml-windows.part1.rar&ref=http%3A%2F%2Frapidshare.com%2Ffiles%2F140895646%2Fnetbeans-6.1-ml-windows.part1.rar&uid={FED810E7-A8A4-4710-8111-BF2F11BDAEDC}


Większość tego to jak widać obrazki, ale np. zastanawia mnie to: POST /fetch/ url=http%3A%2F%2Frs30.rapidshare.com%2Ffiles%2F140895646%2Fnetbeans-6.1-ml-windows.part1.rar&ref=http%3A%2F%2Frapidshare.com%2Ffiles%2F140895646%2Fnetbeans-6.1-ml-windows.part1.rar&uid={FED810E7-A8A4-4710-8111-BF2F11BDAEDC} . Wie ktoś co to jest i ew. jak to zemulować (IMG:style_emoticons/default/biggrin.gif) ?

Termin oddania projektu zbliża się wielkimi krokami, a ja chyba wziąłem sobie zadanie, które przynajmniej obecnie mnie przerasta...

Ten post edytował 230005 27.05.2010, 16:47:28
Go to the top of the page
+Quote Post
zegarek84
post
Post #7





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(230005 @ 27.05.2010, 17:42:26 ) *
Kurde, no ten Live HTTP headers pokazuje raczej to co już wiem:
...
Termin oddania projektu zbliża się wielkimi krokami, a ja chyba wziąłem sobie zadanie, które przynajmniej obecnie mnie przerasta...
z rapidshare nie maiłem potrzeby się bawić ale... jak analizować dane?? które z resztą nie wszystkie przedstawiłeś ;p...
włączasz ten live... i chodzisz po jak najmniejszej liczbie stron wykonując jak najmniej akcji jakich trzeba by ściągnąć plik w przeglądarce...

jako punkt startowy masz stronę z której startowałeś - patrzysz czy coś się nie poustawiało - jak tylko cookies to luz... analizujesz czy coś Cię nie przekierowało [nagłówek "Location" - czyli redirect...] - kopiuj sobie kluczowe nagłówki i dane do innego pliku celem dalszej analizy bo jak widzisz masz jeszcze te css, obrazki i javascript... analizuj za koleją wszystkie linki związane z domeną i przekierowania z tej domeny...

dodatkowo zwróć uwagę czy przy jakimś obrazku, pliku css lub javascript nie jest dodatkowo ustawiony cookies [może być tak, że w ten sposób w późniejszym etapie rozpoznają przeglądarkę - nie bawiłem się tam...]... gożej jeśli jednym z zabezpieczeń będzie wczytanie konkretnego pliku - czy to obrazka, pliku css lub javascript [ostatnie raczej odpada] - wczytując plik do przeglądarki wysyła się identyfikator sesji - na tej podstawie mogą zapisać sobie w sesji czy ten ktoś może ściągać czy nie [akurat jako zabezpieczenie sam tak raz zrobiłem ale nie na ściąganie plików] - no i jeszcze to co pisali plus odczekanie czasu...

cookies się nie przejmujesz bo jeśli skorzystasz z cURL'a chodząc po następnych stronach sam wyśle cookies [ale musisz dać w ustawieniach coby te cookies gdzieś zapisywał...], zastosowanie cURL'a w javie raczej będzie podobne jak w php - a zestaw jego funkcji jest dobrze opisany na manualu php z przykładami w komentarzach...

dodatkowo na określonych stronach możesz mieć wygenerowane jakieś klucze czy to w formularzu czy inaczej... więc pasuje się tym danym dokładnie przyjrzeć gdyż na poszczególnym etapie po przekierowaniach lub po przejściu strony być może będziesz musiał stronę przeszukać... model DOM jest zaimplementowany w wielu językach więc zapewne i do javy znajdziesz klasy coby było łatwiej bez wyrażeń regularnych...

jeśli w danym etapie będziesz musiał wysłać dane POST to w cURL'u są także do tego odpowiednie funkcje...

jeśli jednak nie chcesz korzystać z cURL'a oraz nie znasz żadnego klienta HTTP w javie [mam na myśli zestaw klass] to będziesz musiał sobie sam takie cosik napisać, czyli zestaw klas wysyłających odpowiednie nagłówki podczas połączenia...

PS. i jeśli dane będziesz wysyłał jako surowe nagłówki to co do POST będziesz musiał podać nagłówek jeszcze:
  1. $dataPost = http_build_query($this->post);
  2. // gdzie w php istnieje funkcja http_build_query... z kolei $this->post to po prostu tablica asocjacyjna gdzie array(klucz=>wartość)
  3. $this->headers['Content-Type'] = 'application/x-www-form-urlencoded';
  4. // i obliczyć długość post'u... - to jest wycinek z mojej klasy w php...
  5. $this->headers['Content-Length'] = strlen($dataPost);
z kolej po wszystkich nagłówkach będziesz musiał dodać 2 znaki "\r\n" czyli "\r\n\r\n" i dalej podajesz treść POST'a czyli $dataPost... i dodatkowo każdy z nagłówków jest od siebie oddzielony jednym windowsowym enterem "\r\n" - koniec nagłówków to właśnie 2 entery...

wysyłanie cookies to wysłanie nagłówka "Cookie"... gdzie ja np. pobierając w fragmencie kodu cookies jako tablicę array(klucz=>wartość) z bazy budowałem mniej więcej tak:
  1. $cookies = $this->cookies->cookiesGet($this->host, $this->path);
  2. $tempCookies = array();
  3. while (list($key) = each($cookies)) {
  4. $tempCookies[] = urlencode($key) . '=' . urlencode($cookies[$key]);
  5. }
  6. $this->headers['Cookie'] = implode('; ', $tempCookies);


co do wysyłania surowych nagłówków to deczko grubszy temat jeśli ich się nie rozumie... dlatego najprościej skożystać właśnie z cURL'a...

Ten post edytował zegarek84 27.05.2010, 21:13:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:14