Autoryzacja w pobieraniu

0

Witam, napisałęm program oparty o HTTPGet i mam pytanie. czy da się jakoś pobierac z autoryzacja?? bo w google za duzo o tym nie ma na temat. wiem ze mozna ustawic to w Properties ale to jakos nie działa:/. Ewentualnie jakis inny sposob na pobieranie z autoryzacją

dokłądnie chciałęm pobieracpliki z rapid share z autoryzacja. mam konto premium, login i hasło:) Proszę bardzo o odpowiedz:)

0

Sam o to pytałem na jednym forum czy w można jakoś pobierać z rapidshare premium nie uzywając
INDY i innych komponentów, które muszą zapisywać do strumieni, zamiast po kawałku do pliku, bo
jak zaposujemy do strumieni to na dysku tworzony jest od razu wielki plik zmiast "po kawałku". Sam
na podstawie kodu HttpGet napisałem funkcję korzystającą z modułu WinInet, która pobiera pliki ze
strony chronionej loginem oraz haslem, ale działa na zwykłmy serwerze www z .htaccess - a niestety
na rapidshare.com już nie, pewnie ze względu na przekierowania. Próbowałem pobierać nagłowki, ale
w nich nie ma wcale zawrtego linku do pliku albo robie to źle. A na innym forum gdzie pytałem o to
jak ściągnąć z rapidshare przy użyciu procedur z WinInet jeden użytkownik odpisał że podeśle mi na
priva metodę do pobierania opartą na komponentach Synapse, ale póki co nie napisał nic więcej, bo
nie ma za wiele wolnego czasu. Na googlach też nie znalazłem sposobu w Delphi na obsłużenie kodu
302 czyli przekierowania. Poniżej masz funkcję jaką wykombinowałem, ale z rapidshare nie chce, jak
wspomniałem - działać w ogóle, pobiera tylko plik html. Jakby ktoś miał jakieś rozwiązanie to proszę
napiszcie w tym wątku. Przyłączam się do pytania użytkownika Legalnl, chodzi o moduł WinInet albo
inną metodę obsługującą przekierowanie na rapidshare.com, pozwalająca na zapis do pliku typu File.

procedure Download(URL: string; UserName, Password, FileName: string);
var
  Buffer : array[1..1024] of Byte;
  hSession, hConnect, hRequest : HINTERNET;
  dwRead : DWORD;
  F : File;
  pBuf : Pointer;
  dwBufLen : DWORD;
  dwIndex : DWORD;
  I : Integer;
  HostName, FileUrl, AcceptType : string;
  begin
    if Pos('http://', LowerCase(URL)) <> 0 then
       Delete(URL, 1, 7);
    I := Pos('/', URL);
    HostName := Copy(URL, 1, i-1);
    FileUrl := Copy(URL, i, Length(URL) - i + 1);
    hSession := InternetOpen('Fast Download',
                           INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  Application.ProcessMessages;

  try
    hConnect := InternetConnect(hSession, PChar(HostName),
    INTERNET_DEFAULT_HTTP_PORT, PChar(UserName), PChar(Password), INTERNET_SERVICE_HTTP, 0, 0);

    AcceptType := PChar('');

    hRequest := HttpOpenRequest(hConnect, 'GET', PChar(FileUrl), 'HTTP/1.0',
    PChar(HostName), @AcceptType, 0, 0);

    HttpSendRequest(hRequest, nil, 0, nil, 0);
    Application.ProcessMessages;

    dwBufLen := 1024;
    dwIndex := 0;
    GetMem(pBuf, dwBufLen);

    HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
                              pBuf, dwBufLen, dwIndex);

    FreeMem(pBuf, dwBufLen);

    try
      AssignFile(F, FileName);
      try
        Rewrite(F, 1);
        repeat
          if Form1.Przerwij then Break;
          InternetReadFile(hRequest, @Buffer, SizeOf(Buffer), dwRead);
          BlockWrite(F, Buffer, dwRead);
          Application.ProcessMessages;
        until dwRead = 0;
      finally
        CloseFile(F);
      end;
    finally
      InternetCloseHandle(hSession);
    end;
  finally
    InternetCloseHandle(hConnect);
    InternetCloseHandle(hRequest);
  end;
end;

Napisałem do autora USDownloadera, może będzie w stanie pomóc jakimś źródłem, póki co czekam.

EDIT: dostałem od autora USDownloadera przykład do pobierania z rapidshare przy użyciu Synapse, a
także źródło plugniu do pobierania z rapidshare (z konta premium). Te pierwsze może się na coś Tobie
przyda, to drugie raczej jako źródło wiedzy, bo brakuje innyhc unitów ze źródła do skompilowania go.
http://rapidshare.com/files/174295411/demo.zip

1 użytkowników online, w tym zalogowanych: 0, gości: 1