Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Download Manager для Rapidshare 
:(
    Опции темы
dandy77
Дата 20.6.2009, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008

Репутация: нет
Всего: нет



Я пишу менеджер закачек для Rapidshare. Написал небольшой код для эксперимента, но он скачивает html страницу там где спрашиваеться свободное скачивание или премиум. Предположим я напишу прогу которая будет извлекать из этого html адрес. Дальше как мне послать строку в которой я указываю что буду скачивать как Free (то есть как бы программно нажать кнопку Free) и что бы потом подождать время нужное для получения ссылки?Вот мой начальный код, он возвращает страницу из Рапиды Error Use POST-Method without content:
Код

CString m_url = "http://rapidshare.com/files/246417299/AnimTiny.rar?dl.start=Free"; // èìÿ URL
CString m_mes; // ïåðåìåííàÿ â êîòîðîé áóäóò õðàíèòñÿ ñîîáùåíèÿ
char temp[100]; // ïðîìåæóòî÷íàÿ ïåðåìåííàÿ äëÿ ïåðåâîäà 
// äàííûõ èç Int â char
CString m_path="d:\\temp.html"; // èìÿ ôàéëà äëÿ çàïèñè
char strBody[1024]; // áóôåð èç 1024 áàéò

void CDownloadManagerDlg::OnGo() 
{
    // TODO: Add your control notification handler code here

    //*********************************************************************************************

// ñîçäà¸ì ïåðåìåííóþ session è îòêðûâàåì ñåññèþ ANDY
CInternetSession session( _T( "ANDY" ), PRE_CONFIG_INTERNET_ACCESS );

// ñîçäà¸ì ïåðåìåííóþ pServer êëàññà CHttpConnection
CHttpConnection* pServer = NULL;

// ñîçäà¸ì ïåðåìåííóþ pFile êëàññà CHttpFile
CHttpFile* pFile = NULL;
try
{
CString strServerName; // èìÿ ñåðâåðà
CString strObject; // èìÿ îáúåêòà 
INTERNET_PORT nPort; // íîìåð ïîðòà äëÿ ñâÿçè
DWORD dwServiceType; // òèï ñåðâèñà

// ôóíêöèÿ AfxParseURL ïîëó÷àåò äàííûå ñ óêàçàííîãî URL ( ó íàñ m_url ) îá ñåðâåðå,
// îáúåêòå, òèïå ñåðâèñà è ïîðòå 

if ( AfxParseURL( m_url, dwServiceType, strServerName, strObject, nPort ) == 0 )
{
return; // âûõîä èç ôóíêöèè OnButtonConnect() 
}
// âûâîä äàííûõ î ñåðâåðå

m_mes = "";
m_mes += "Server Name = "; 
m_mes += (CString)strServerName; m_mes += "\r\n";
m_mes += "Object Name = ";
m_mes += (CString)strObject; m_mes += "\r\n";
m_mes += "Port = ";
itoa( nPort, temp, 10 );
m_mes += (CString)&temp[0]; m_mes += "\r\n";
UpdateData( FALSE );

// Óñòàíàâëèâàåì ïîäêëþ÷åíèå ïî HTTP ïðîòîêëîëó. 
pServer = session.GetHttpConnection( strServerName, nPort );

// ïîñûëàåì çàïðîñ îá îáúåêòå ( strObject )
pFile = pServer->OpenRequest(
CHttpConnection::HTTP_VERB_POST, strObject, NULL, 1, NULL, NULL,
INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD
);

// Äîáàâëÿåì çàãîëîâîê ê HTTP çàïðîñó 
pFile->AddRequestHeaders( _T( "Accept: */*\r\nUser-Agent: ANDY\r\n" ) );

// ïîñûëàåì çàïðîñ
pFile->SendRequest( );

DWORD dwRet; // ïåðåìåííàÿ äëÿ õðàíåíèÿ êîäà ñîñòîÿíèÿ 
pFile->QueryInfoStatusCode( dwRet ); // çàïèñûâàåì êîä ñîñòîÿíèÿ â dwRet

// âûâîä äàííûõ
m_mes += "The HTTP POST returned a status code of ";
itoa( dwRet, temp, 10 ); 
m_mes += (CString)&temp[0]; m_mes += "\r\n"; 

CString strHeader; // ïåðåìåííàÿ äëÿ õðàíåíèÿ ïîëó÷åííîãî çàãîëîâîêà çàïðîñà
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strHeader); // çàïèñûâàåì çàãîëîâîê â strHeader

// âûâîä äàííûõ
m_mes += "Header = ";
m_mes += strHeader; 
UpdateData( FALSE );

// åñëè êîä ñîñòîÿíèÿ íå ðàâåí 200, òî âûõîäèì èç ôóíêöèè
if( dwRet != 200 ) { m_mes += "Program terminate!"; UpdateData( FALSE ); return; }
// ----------------------------------------------------------

// ïðîâåðêà âûáîðà ôàéëà äëÿ çàïèñè 
m_mes += "Starting download the file."; m_mes += "\r\n";

if( m_path == "" ) 

m_mes += "Error! No file to save. Choese the file.";
m_mes += "\r\n"; UpdateData( FALSE ); return; }
else 
{
m_mes += "File name to save : ";
m_mes += m_path; m_mes += "\r\n"; UpdateData( FALSE ); 
}

CFile file2; // îáúÿâëÿåì ïåðåìåííóþ file2 êëàññà CFile

// îòêðûâàåì ôàéë äëÿ çàïèñè â äâîè÷íîì ôîðìàòå ( CFile::typeBinary ) !!!
file2.Open((LPCTSTR)m_path,
CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);

int allRead = 0; // ïåðåìåííàÿ äëÿ õðàíåíèÿ îáùåãî ÷èñëè ñ÷èòàííûõ áàéò
int nRead = pFile->Read( strBody, 1024 ); // ñ÷èòûâàåì ïåðâûå 1024 áàéòà â áóôåð.
// ïåðåìåííàÿ nRead õðàíèò êîëè÷åñòâî
// ñ÷èòàííûõ áàéò 

allRead += nRead; // îáíîâëÿåì îáùåå ÷èñëî ñ÷èòàííûõ áàéò

// âûâîä äàííûõ
m_mes += "Loading ";
itoa( nRead, temp, 10 );
m_mes += (CString)&temp[0]; m_mes += " bytes"; m_mes += "\r\n";
UpdateData( FALSE );

// çàïèñûâàåì áóôåð èç nRead áàéò â ôàéë
file2.Write( strBody, nRead ); 

// öèêë ñ÷èòûâàíèÿ, ïîêà nRead íå áóäåò ðàâíÿòüñÿ íóëþ
while ( nRead > 0 )
{
nRead = pFile->Read( strBody, 1024 );

if( nRead != 0 ) 
{
m_mes += "Loading ";
itoa( nRead, temp, 10 );
m_mes += (CString)&temp[0]; m_mes += " bytes"; m_mes += "\r\n";

file2.Write( strBody, nRead );
allRead += nRead;
UpdateData( FALSE );
}

}

// âûâîä äàííûõ
m_mes += "\r\n";
m_mes += "Total bytes = ";
itoa( allRead, temp, 10 );
m_mes += &temp[0]; m_mes += "\r\n"; UpdateData( FALSE );

file2.Close(); // çàêðûâàåì ôàéë

pFile->Close(); // çàêðûâàåì Internet ôàéë
pServer->Close(); // çàêðûâàåì ñåðâåð

m_mes += "Download is complete !!!"; m_mes += "\r\n";UpdateData( FALSE );

}

catch ( CInternetException* pEx )
{
// Åñëè ïðîèçîøëà îøèáêà â WinInet

// âûâîä îøèáêè
char szErr[1024];
pEx->GetErrorMessage( szErr, 1024 );

m_mes += "Error: ( ";
itoa( int(pEx->m_dwError), temp ,10 );
m_mes += (CString)&temp[0];
m_mes += " ) ";
m_mes += (CString)&szErr[0]; m_mes += "\r\n";
UpdateData( FALSE );

pEx->Delete( ); // óäàëåíèå ïåðåìåííîé êëàññà CInternetException 
if ( pFile != NULL )
delete pFile; // çàêðûâàåì Internet ôàéë
if ( pServer != NULL )
{
delete pServer; // çàêðûâàåì ñåðâåð
session.Close( ); // çàêðûâàåì ñåññèþ
return;
}

if ( pFile != NULL )
delete pFile; // çàêðûâàåì Internet ôàéë
if ( pServer != NULL )
delete pServer; // çàêðûâàåì ñåðâåð
session.Close( ); // çàêðûâàåì ñåññèþ
return;
}
}


Это сообщение отредактировал(а) dandy77 - 20.6.2009, 04:06
PM MAIL   Вверх
andrew_121
Дата 20.6.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



dandy77, Что с кодом случилось? Никакого выравнивания! Глаза то не казенные!
Это MFC? Давненько не видал чтоб кто-то писал на оном)


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
SneG0K
Дата 20.6.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



dandy77, надо отследить все пост запросы. И отослать самому
PM WWW Skype   Вверх
dandy77
Дата 20.6.2009, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008

Репутация: нет
Всего: нет



Уважаемый SneG0K! Как это отследить пос- запросы? Всмсле отследить что браузер посылает на Рапидшаре, и послать точно такой запрос?
PM MAIL   Вверх
jonie
Дата 20.6.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



использовать Fidler, FireBug, HttpWatchPro или просто сниффер


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
dandy77
Дата 20.6.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008

Репутация: нет
Всего: нет



Смотрел при помощи Fidler и что- то все равно ничего у меня не получаеться, пробывал Реквест Буилдер в Фидлере то же самое возвращает на ту страницу где надо выбрать Фри или Преимум, то есть на саму себя. А мне надо же дальше- что бы счетчик обратный включился. Ниче не получаеться. Может кто- то помочь разобраться?
PM MAIL   Вверх
dandy77
Дата 20.6.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008

Репутация: нет
Всего: нет



Вобще то получилось Фидером, вот запрос из Фидера взял. Что с ним теперь делать?

POST /files/246417299/AnimTiny.rar HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Referer: http://rapidshare.com/files/246417299/AnimTiny.rar
Accept-Language: uk
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Proxy-Connection: Keep-Alive
Pragma: no-cache
Host: rs487.rapidshare.com
Content-Length: 13

dl.start=Free
PM MAIL   Вверх
dandy77
Дата 20.6.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008

Репутация: нет
Всего: нет



Вот мой код подскажите в чем ошибка:
Код

CString m_url = "http://rs487.rapidshare.com/files/246417299/AnimTiny.rar?dl.start=Free"; 
CString m_mes; 
char temp[100]; 

CString m_path="d:\\temp.html"; 
char strBody[1024]; 

void CDownloadManagerDlg::OnGo() 
{
    // TODO: Add your control notification handler code here

    //*********************************************************************************************


CInternetSession session( _T( "ANDY" ), PRE_CONFIG_INTERNET_ACCESS );


CHttpConnection* pServer = NULL;


CHttpFile* pFile = NULL;
try
{
CString strServerName; 
CString strObject; 
INTERNET_PORT nPort; 
DWORD dwServiceType; 

if ( AfxParseURL( m_url, dwServiceType, strServerName, strObject, nPort ) == 0 )
{
return;
}


m_mes = "";
m_mes += "Server Name = "; 
m_mes += (CString)strServerName; m_mes += "\r\n";
m_mes += "Object Name = ";
m_mes += (CString)strObject; m_mes += "\r\n";
m_mes += "Port = ";
itoa( nPort, temp, 10 );
m_mes += (CString)&temp[0]; m_mes += "\r\n";
UpdateData( FALSE );

pServer = session.GetHttpConnection( strServerName, nPort );


pFile = pServer->OpenRequest(
CHttpConnection::HTTP_VERB_POST, strObject, NULL, 1, NULL, NULL,
INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD
);


pFile->AddRequestHeaders( _T( "POST /files/246417299/AnimTiny.rar HTTP/1.1\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,application/vnd.ms-excel, application/msword, */*\r\nReferer: [URL=http://rapidshare.com/files/246417299/AnimTiny.rar\r\nAccept-Language:]http://rapidshare.com/files/246417299/Anim...ccept-Language:[/URL] uk\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\r\nHost: rs487.rapidshare.com\r\nContent-Length: 13\r\nProxy-Connection: Keep-Alive\r\nPragma: no-cache\r\n\r\n") );

pFile->SendRequest( );


Это сообщение отредактировал(а) dandy77 - 20.6.2009, 19:56
PM MAIL   Вверх
andrew_121
Дата 20.6.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



dandy77, Пользуйся тэгом code. Глаза жалко.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
dandy77
Дата 20.6.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008

Репутация: нет
Всего: нет



Причем взял перенес все в отдельную функцию. Для одного файла AnimTiny.rar работает, для LAConfidential не работает. В чем может быть проблема?

Код

void CDownloadManagerDlg::OnGo() 
{
    // TODO: Add your control notification handler code here
    //OnStartSession("http://rapidshare.com/files/225853658/L.A.Confidential.part01.rar","","","d:\\temp1.html");

    OnStartSession("http://rs672.rapidshare.com/files/225853658/L.A.Confidential.part01.rar",
        "dl.start=Free",
        "http://rapidshare.com/files/225853658/L.A.Confidential.part01.rar",
        "d:\\temp2.html");        

    /*
    OnStartSession("http://rs487.rapidshare.com/files/246417299/AnimTiny.rar",
        "dl.start=Free",
        "http://rapidshare.com/files/246417299/AnimTiny.rar",
        "d:\\temp2.html");        
        */
}


void CDownloadManagerDlg::OnStartSession(CString m_url, CString strFormData, CString Refer, CString m_path)
{
    //*********************************************************************************************


CInternetSession session( _T( "ANDY" ), PRE_CONFIG_INTERNET_ACCESS );

//и т.д.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1130 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.