Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> bot rapidshare - curl, exec
marcinpruciak
post 28.09.2008, 18:19:47
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Mam taki problem z skryptem. Jest to bot do rapidshare, generuje on directlink do pobierania i wywołuje wgeta do pobrania go. Z tym właśnie jest problem, zamiast pobierać się zawartość pobiera się tylko strona z błędem. Jeśli uruchomię ręcznie wgeta z tym wygenerowanym linkiem w konsoli, to działa i odrazu się pobiera. 

Ma ktoś jakiś pomysł?

Załączam kod:

  1. <?
  2. function get_content($url)
  3. {
  4.     $ch = curl_init();
  5.  
  6.     curl_setopt ($ch, CURLOPT_URL, $url);
  7.     curl_setopt ($ch, CURLOPT_HEADER, 0);
  8.  
  9.     ob_start();
  10.  
  11.     curl_exec ($ch);
  12.     curl_close ($ch);
  13.     $string = ob_get_contents();
  14.  
  15.     ob_end_clean();
  16.     
  17.  return $string;     
  18. }
  19.  
  20. $content = get_content ("htt://rapidshare.com/files/32805773/test.avi.html");
  21. $action = preg_match('<form action="(.+?)" method="post">', $content, $matches);
  22. $matches = $matches[0];
  23. $action = substr($matches, 13, -15);
  24.  
  25.  $curl = curl_init($action);
  26.      curl_setopt($curl, CURLOPT_FAILONERROR, 1);
  27.      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  28.      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  29.      curl_setopt($curl, CURLOPT_TIMEOUT, 50);
  30.      curl_setopt($curl, CURLOPT_POST, 1);
  31.      curl_setopt($curl, CURLOPT_POSTFIELDS, 'dl.start=Free');
  32.      $r = curl_exec($curl);
  33.      curl_close($curl);
  34.  
  35.      $x = preg_match('<form name="dlf" action="(.+?)" method="post">', $r, $link);
  36.      $link = substr($link[0], 24, -15);
  37.  
  38.  echo $link;
  39.  sleep('50');
  40.  $komenda = "wget $link";
  41.  exec($komenda);
  42. ?>


--------------------
Go to the top of the page
+Quote Post
conel
post 28.09.2008, 19:46:48
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 5
Dołączył: 26.08.2008
Skąd: Poznań

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


Witam.

Może spróbuj podać link w ten sposób:
  1. <?php
  2. $komenda = "wget '$link'";
  3. ?>


Jeżeli to nie pomoże, to możesz sprawdzić, co wget wypluwa.
Stwórz plik np. dump, daj mu chmod 777 i zmodyfikuj komendę:
  1. <?php
  2. $komenda = "wget '$link' &> dump";
  3. ?>


W pliku dump znajdziesz output wget`a.

BTW: Ten plik musi być naprawdę mały, jeśli chcesz go pobrać w ten sposób. Nie zapominaj, że prawie na pewno masz ustawiony czas wykonywania skryptu na góra 2 minuty. Chyba, że to Twój serwer. ;-)
Go to the top of the page
+Quote Post
marcinpruciak
post 28.09.2008, 20:02:16
Post #3





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Teraz nie mogę tego sprawdzić bo znowu mam zajęty rapidshare. Współdzielę jedno ip na nie wiem nawet ilu użytkowników.

Tak to mój serwer  party.gif .

Jeśli zmienię maksymalny czas wykonywania skryptu, to będę mógł bez problemu pobierać dziesiątki 100mg plików? Bo jak to zadziała to dorabiam do tego pętlę z odczytywaniem z listy plików.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 03:38