Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Curl скачать файл 
V
    Опции темы
studentigor
Дата 7.5.2011, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет.

Мне нужно скачать файл. 
Я захожу, авторизируюсь, нахожу нужную ссылку, и в браузере, при нажатии на эту ссылку, выскакивает окно "сохранить, открыть".
А вот когда скриптом, то при переходе по этой ссылке, получается редирект на страницу, на которой можно прослушать, и вобще идет описание трека, а скачивание не происходит.
Подскажите как это сделать.
ссылка по которой должно происходить скачивание - http://www.audiopoisk.com/files/a-/enjoy-yourself-104313.mp3
а сюда меня направляет - http://www.audiopoisk.com/track/a-/mp3/enjoy-yourself/
а вот, то что у меня получилось
Код

 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                curl_setopt($ch, CURLOPT_HEADER, 1);
                curl_setopt($ch, CURLOPT_FAILONERROR, 1);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_URL, $url.$im_name);
                $result = curl_exec($ch);
        
                if ($result){
                       header('Content-type: application/octet-stream');
                       header ("Accept-Ranges: bytes");
                       header('Content-Disposition: attachment; filename='.$tmp_name[$kool-1]);
                       header('Content-Length: ' . strlen($result));
                       echo $result;
                       exit();
                }

PM MAIL   Вверх
patap
Дата 11.5.2011, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

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



научись работать с заголовками. Установи для начала это https://addons.mozilla.org/en-US/firefox/ad...e-http-headers/

если бы ты туда заглянул, то увидел бы много интересного.

Скачивание идет в два этапа. (ну вообще в 3 если кликать с сайта)

0-й этап (можно пропустить, тут ничего ценного нет, как я понял этот урл служит по большей части для проигрывания файла в плеере)
Код

http://www.audiopoisk.com/limitajax/



GET http://www.audiopoisk.com/limitajax/ HTTP/1.1

Host: www.audiopoisk.com

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.04 (lucid) Firefox/3.6.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Referer: http://www.audiopoisk.com/track/a-/mp3/enjoy-yourself/
Cookie: volume=50; error_links2=0; hosts_link=; __utma=200349374.266635754.1305117990.1305117990.1305119808.2; __utmz=200349374.1305117990.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); host_link=dl128.audiopoisk.com1; __utmb=200349374.21.10.1305119808; MG_2239=11; __utmc=200349374



HTTP/1.1 200 OK
Date: Wed, 11 May 2011 13:50:35 GMT
Server: nginx/0.8.54
Content-Type: text/html
X-Powered-By: PHP/5.3.2-1ubuntu4.5
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Expires: -1
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 44
Via: 1.1 D18754



1-й этап. Вот значица так: обращаемся к нашему файлу
Код

урл на который ссылаемя: http://www.audiopoisk.com/files/a-/enjoy-yourself-104313.mp3


пошел запрос:
GET http://www.audiopoisk.com/files/a-/enjoy-yourself-104313.mp3 HTTP/1.1

Host: www.audiopoisk.com

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.04 (lucid) Firefox/3.6.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Referer: http://www.audiopoisk.com/track/a-/mp3/enjoy-yourself/
Cookie: volume=50; error_links2=0; hosts_link=; __utma=200349374.266635754.1305117990.1305117990.1305119808.2; __utmz=200349374.1305117990.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); host_link=dl128.audiopoisk.com1; __utmb=200349374.21.10.1305119808; MG_2239=11; __utmc=200349374





Получили ответ:
тут нас как минимум интересует поле Location, его то мы и должны выдрать и подставить в следующий запрос



HTTP/1.1 302 Moved Temporarily
Date: Wed, 11 May 2011 13:50:36 GMT
Server: nginx/0.8.54
Content-Type: text/html
X-Powered-By: PHP/5.3.2-1ubuntu4.5
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Expires: -1
Location: http://dl128.audiopoisk.com/get-server/05091c0018001b0512090302051801051405040655060d060600040b015f06000d525203090b09535e010701040d010051/3425965/MTMwNTEwNDQwMjowMjY0NmI3YTQ5NGY1MDZmMTkwNTAyMTkwZjFkMDAwNTFjMDEwNTRmNmE1ZDVlNDY1ZTA0MDUwMjA1MGIxZTA4NzIwZjFlNDk0YjU3NWY1OTUyNWY1ZTVlNWI2ZTU4NTI1NjVmNTk1MjE5NWY1MzUxNTUxNzQzNGM6cHJvbmljaGtpbl9sZW9uaWRAbWFpbC5ydTo=/0/104313/NjQuMjcuMC4zMDEwNDMxM29zNmlmM2VvOW9zNmlmM2VvOQ==/A_%2B_-_Enjoy_Yourself_%28audiopoisk.com%29.mp3
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Set-Cookie: host_link=dl128.audiopoisk.com1; expires=Wed, 11-May-2011 14:50:36 GMT; path=/; domain=.audiopoisk.com
Via: 1.1 D18754




2-й этап
Код

это урл с предыдущего ответа, на него и идем

http://dl128.audiopoisk.com/get-server/05091c0018001b0512090302051801051405040655060d060600040b015f06000d525203090b09535e010701040d010051/3425965/MTMwNTEwNDQwMjowMjY0NmI3YTQ5NGY1MDZmMTkwNTAyMTkwZjFkMDAwNTFjMDEwNTRmNmE1ZDVlNDY1ZTA0MDUwMjA1MGIxZTA4NzIwZjFlNDk0YjU3NWY1OTUyNWY1ZTVlNWI2ZTU4NTI1NjVmNTk1MjE5NWY1MzUxNTUxNzQzNGM6cHJvbmljaGtpbl9sZW9uaWRAbWFpbC5ydTo=/0/104313/NjQuMjcuMC4zMDEwNDMxM29zNmlmM2VvOW9zNmlmM2VvOQ==/A_%2B_-_Enjoy_Yourself_%28audiopoisk.com%29.mp3



запрос:

GET http://dl128.audiopoisk.com/get-server/05091c0018001b0512090302051801051405040655060d060600040b015f06000d525203090b09535e010701040d010051/3425965/MTMwNTEwNDQwMjowMjY0NmI3YTQ5NGY1MDZmMTkwNTAyMTkwZjFkMDAwNTFjMDEwNTRmNmE1ZDVlNDY1ZTA0MDUwMjA1MGIxZTA4NzIwZjFlNDk0YjU3NWY1OTUyNWY1ZTVlNWI2ZTU4NTI1NjVmNTk1MjE5NWY1MzUxNTUxNzQzNGM6cHJvbmljaGtpbl9sZW9uaWRAbWFpbC5ydTo=/0/104313/NjQuMjcuMC4zMDEwNDMxM29zNmlmM2VvOW9zNmlmM2VvOQ==/A_%2B_-_Enjoy_Yourself_%28audiopoisk.com%29.mp3 HTTP/1.1

Host: dl128.audiopoisk.com

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.04 (lucid) Firefox/3.6.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Referer: http://www.audiopoisk.com/track/a-/mp3/enjoy-yourself/
Cookie: volume=50; error_links2=0; hosts_link=; __utma=200349374.266635754.1305117990.1305117990.1305119808.2; __utmz=200349374.1305117990.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); host_link=dl128.audiopoisk.com1; __utmb=200349374.21.10.1305119808; __utmc=200349374
Range: bytes=2786262-
If-Range: Wed, 20 Oct 2010 15:31:19 GMT




Ответ, тут то и должно начаться скачивание


HTTP/1.1 206 Partial Content
Date: Wed, 11 May 2011 13:50:37 GMT
Server: nginx/0.7.67
Content-Type: application/download
Content-Length: 639703
Last-Modified: Wed, 20 Oct 2010 15:31:19 GMT
Content-Disposition: attachment; filename=A_+_-_Enjoy_Yourself_(audiopoisk.com).mp3
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Content-Range: bytes 2786262-3425964/3425965
Via: 1.1 D18754



так навскидку: скорее всего при формировании запросов нужно будет добавлять все заголовки, которые требует сервер. Также возможно нужно слать кукисы, либо поподставлять нужные данные в кое-какие еще заголовки. Я сильно не вникал, но общая схема примерно такая как я описал.

и да, там с одног ip можно 10 раз за день обращаться к файлу если не зареган.

Это сообщение отредактировал(а) patap - 11.5.2011, 17:21


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
studentigor
Дата 11.5.2011, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


 




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


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

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