CURL - скачивание файла по динамической ссылке
От: gepard1980  
Дата: 17.06.11 13:19
Оценка:
Седня узнал что есть такая замечательная библиотека CURL (спасибо DOOM). Я пишу HTTP-клиент на с++ для автоматического скачивания софта (zip, exe, msi файлы). Обычные ссылки скачиваются нормально. Встроил сегодня в проект CURL. Все нормально. Только проблема с динамическими ссылками осталась. Как скачивать файлы по ним? Код для скачивания такой:

CURL* curl = curl_easy_init();

if ( NULL != curl )
{
char *url = "http://download.cnet.com/3001-2348_4-10265538.html?spi=44b8e6c3eb36b85007310e94b81d6d16&part=dl-10265538";
char outfilename[MAX_PATH] = "D:\\file.exe";

FILE* fp = fopen(outfilename,"wb");

if( NULL != fp )
{
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
curl_easy_setopt(curl, CURLOPT_HEADER, 0);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10);

CURLcode res;
res = curl_easy_perform(curl);
fclose(fp);
}

curl_easy_cleanup(curl);
}
Re: CURL - скачивание файла по динамической ссылке
От: depy  
Дата: 17.06.11 14:30
Оценка:
Проблема не в курле, а в том что по ссылке _http://download.cnet.com/3001-2348_4-10265538.html?spi=44b8e6c3eb36b85007310e94b81d6d16&part=dl-10265538 html страница, а не exe файл. А ссылка на файл мутиться жаваскриптом. Что то типа этого _http://software-files-l.cnet.com/s/software/11/90/76/35/camfrog.exe?e=1308342185&h=383afbbec2b90da4bd45f1c545594abd&lop=link&ptype=1901&ontid=2348&siteId=4&edId=3&spi=44b8e6c3eb36b85007310e94b81d6d16&pid=11907635&psid=10265538&fileName=camfrog.exe

Грубо говоря, надо сказать страницу _http://download.cnet.com/3001-2348_4-10265538.html?spi=44b8e6c3eb36b85007310e94b81d6d16&part=dl-10265538 , пропарсить ее, сформировать урл для скачивания самого файл, и качать файл..
Re[2]: CURL - скачивание файла по динамической ссылке
От: gepard1980  
Дата: 17.06.11 14:40
Оценка:
Все ясно. Пасиб!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.