Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: bot rapidshare - curl, exec
Forum PHP.pl > Forum > PHP
marcinpruciak
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. ?>
conel
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. ;-)
marcinpruciak
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.