Logowanie w Curl na rapidshare


(Radmistrz2) #1

Witam. Chce zrobić skrypt, który automatycznie zaloguje mnie na rapidshare i sprawdzi kilka rzeczy. Mam 1 problem. Nie wiem czy da sie zalogowremiumzone.html wygląda następująco:

| Login: | |
| Password: | |
| |

[/code] Wykombinowałem coś takiego ale nie działa:
[code]<? $cookie = dirname(__FILE__) .'/cookie'; $login = "login"; $haslo = "haslo"; $ch = curl_init("https://ssl.rapidshare.com/premiumzone.html"); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "login=".$login."&password=".$haslo); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); echo curl_exec($ch); curl_close($ch); ?>


(Kutar 0) #2

Jako adres podaj:

https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi


(Radmistrz2) #3

Niestety dalej nie działa. Pokazuje się błąd: Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/pcworld/public_html/logowanie.php on line 9


(Kutar 0) #4

Spróbuj wyrzucić linię z FOLLOWLOCATION. Jeśli bez niej skrypt nie będzie chciał prawidłowo działać, to tu jest (troszkę długie) rozwiązanie:

http://pl.php.net/manual/pl/function.cu ... .php#79787


(Radmistrz2) #5

Mam coś takiego lecz dalej nie działa:

<?php


$curl = curl_init('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi');

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");

curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile

curl_setopt($curl, CURLOPT_URL, "https://ssl.rapidshare.com/premiumzone.html"); # this is where you first time connect - GET method authorization in my case, if you have POST - need to edit code a bit

$xxx = curl_exec($curl);

curl_setopt($curl, CURLOPT_POSTFIELDS, "login=1234&password=1234"); # form params that'll be used to get form results

$xxx = curl_exec($curl);


curl_close ($curl);

echo $xxx;

?>

Na serwerze isx.pl wyskakuje błąd w 9 linijce ale strona się dalej ładuje lecz nie da rady sie zalogować. Na home.pl nic się nie dzieje - nie loguje mnie ani nic się nie wyświetla.


(Kutar 0) #6

A sprawdzałeś tą funkcję z linka?

Hmmm... masz dwa razy:

$xxx = curl_exec($curl);

usuń pierwsze i na koniec daj na początku daj

error_reporting(E_ALL);

wtedy na obu serwerach będą wyświetlane ewentualne błędy


(Radmistrz2) #7

Zrobiłem tak jak mówiłeś. Teraz mam taki kod:

<?php error_reporting(E_ALL);


$curl = curl_init('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi');

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");

curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile

curl_setopt($curl, CURLOPT_URL, "https://ssl.rapidshare.com/premiumzone.html"); # this is where you first time connect - GET method authorization in my case, if you have POST - need to edit code a bit

$xxx = curl_exec($curl);

curl_setopt($curl, CURLOPT_POSTFIELDS, "login=4233317&password=rapidshare1"); # form params that'll be used to get form results

curl_close ($curl);

echo $xxx;

?>

Niestety strona wywala mi błąd: "POST method called without content" a kod błąd w 9 linijce

W dniu 05.05.2008 , o godzinie 20:19 został dopisany post przez radmistrz2

Na kraasnalu kod nie wywala błędów. Błąd wywala rapidshare: "POST method called without content"


(Kutar 0) #8
<?php error_reporting(E_ALL);


    $curl = curl_init('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi');

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($curl, CURLOPT_HEADER, 0);

    curl_setopt($curl, CURLOPT_POST, true);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

    curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");

    curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile

    curl_setopt($curl, CURLOPT_POSTFIELDS, "login=4233317&password=rapidshare1"); 

$xxx = curl_exec($curl);


    curl_close ($curl);

    echo $xxx;

    ?>

Miałeś złą kolejność. Najpierw wszystkie SETOPTy, a dopiero potem wykonanie wszystkiego.


(Radmistrz2) #9

ok dzięki działa. Teraz mam kolejny problem. Nie mam pojęcia jak zintegrować skrypt, aby curlem pobierał mi plik dostępny po zalogowaniu. Oto skrypt do pobierania:

$ch = curl_init('http://rs258tg.rapidshare.com/files/112707895/dl/Matura_2008_Polski_Odpowiedzi_Fabi_GT.rar'); //przykładowy link do pliku z rapidshare

$fh = fopen('Matura_2008_Polski_Odpowiedzi_Fabi_GT.rar', 'w');//przykladowa nazwa

curl_setopt($ch, CURLOPT_FILE, $fh);

curl_exec($ch);

fclose($fh);

curl_close($ch);

Jeśli dam to tak:

<?php error_reporting(E_ALL);


    $curl = curl_init('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi');

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($curl, CURLOPT_HEADER, 0);

    curl_setopt($curl, CURLOPT_POST, true);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

    curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");

    curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile

    curl_setopt($curl, CURLOPT_POSTFIELDS, "login=4233317&password=rapidshare1");

$xxx = curl_exec($curl);

   $ch = curl_init('http://rs258tg.rapidshare.com/files/112707895/dl/Matura_2008_Polski_Odpowiedzi_Fabi_GT.rar'); //przykładowy link do pliku z rapidshare

$fh = fopen('Matura_2008_Polski_Odpowiedzi_Fabi_GT.rar', 'w');//przykladowa nazwa

curl_setopt($ch, CURLOPT_FILE, $fh);

curl_exec($ch);

fclose($fh);

curl_close($ch);

    curl_close ($curl);

    echo $xxx;

    ?>

Skopiuje mi stronę, która wyświetli się gdy nie jestem zalogowany. Z tego co wiem to wina ciasteczek a 2 zadania nie mają ze sobą związku. Czy da sie jakoś zintegrować skrypt tak, aby działał?


(Kutar 0) #10

Hmmm... aczkolwiek nie robiłem nigdy tak, myślę że się da. Wyślij mi na priv swoje hasło do rapida, bo musiałbym sprawdzać kod na bieżąco, a sam nie mam konta Premium. Później będziesz mógł sobie to hasło zmienić :slight_smile:


(Kontakt) #11

Pełne rozwiązanie problemu macie tam:

http://www.webmaster-forum.pl/topics25/logowanie-do-rapidshare-vt95.htm#579

Pozdro