Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Получить реальную ссылку на файл
Форумы портала PHP.SU » » HTTP и PHP » Получить реальную ссылку на файл

Страниц (1): [1]
 

1. 563434 - 28 Февраля, 2016 - 12:39:40 - перейти к сообщению
Здравствуйте!

Не могу найти решения по получению реальной ссылки на файл из редиректной, т.е. например, есть ссылки вида:
avg.com/ru-ru/thank-you?product=avf&build=avf-free
foxmail.com/win/download

Это непрямые ссылки на файлы, но при их открытии браузер начинает загружать реальные exe-файлы.

Понятно, что какой-нибудь менеджер закачки получит реальные ссылки, но хотелось бы сделать функцию на php, которая будет их получать...

Возможно ли такое реализовать?
Пробовал с CURL опыты проводить, ничего не вышло, может параметры недонастроил...
Пробовал get_headers - получает заголовок, но там нет прямых ссылок...

Для пробы посмотрел плагином http Spy заголовки по адресу:
foxmail.com/win/download
Там есть ссылка: dldir1.qq.com/foxmail/windows/fm 727chb26_build_setup.exe

Может есть какое-то простое и изящное решение, чтобы получать реальную ссылку через php?
2. andrewkard - 29 Февраля, 2016 - 01:08:59 - перейти к сообщению
563434 пишет:
но хотелось бы сделать функцию на php, которая будет их получать

сделать то же, что будет делать браузер, т.е. отсылать такой же запрос, если это возможно...
3. 563434 - 29 Февраля, 2016 - 12:12:53 - перейти к сообщению
[quote=andrewkard][/quote]
andrewkard пишет:
сделать то же, что будет делать браузер, т.е. отсылать такой же запрос, если это возможно...

На словах все просто...хотел найти примеры кода...
4. andrewkard - 29 Февраля, 2016 - 12:19:09 - перейти к сообщению
563434 пишет:
хотел найти примеры кода

http://php.net/manual/ru/book.curl.php
Открываем вкладку Сеть(Network) в консоли и смотрим, изучаем.
5. 563434 - 29 Февраля, 2016 - 12:58:10 - перейти к сообщению
Вот консоль что показывает:
Resource interpreted as Document but transferred with MIME type application/octet-stream: "http://dldir1.qq.com/foxmail/windows/fm727chb26_build_setup.exe".

Не понимаю...а CURL выдает заголовок:
Array ( [url] => http://foxmail[dot]com/win/download [content_type] => text/html [http_code] => 206 [header_size] => 312 [request_size] => 198 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 3.515582 [namelookup_time] => 0.064379 [connect_time] => 0.286681 [pretransfer_time] => 0.286754 [size_upload] => 0 [size_download] => 236 [speed_download] => 67 [speed_upload] => 0 [download_content_length] => 236 [upload_content_length] => 0 [starttransfer_time] => 3.515511 [redirect_time] => 0 [request_header] => GET /win/download HTTP/1.1 Range: bytes=1-300 User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36 Host: foxmail.com Accept: */* )


Вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $url = 'http://foxmail.com/win/download';
  2.        
  3.  
  4.                 $ch = curl_init($url);
  5.                 //curl_setopt ($ch, CURLOPT_REFERER, $url);
  6.                 // не проверять SSL сертификат
  7.                 //curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
  8.                 // не проверять Host SSL сертификата
  9.                 //curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
  10.                 // это необходимо, чтобы cURL не высылал заголовок на ожидание
  11.                 curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
  12.  
  13.                 curl_setopt($ch, CURLOPT_HEADER, 1);
  14.                 curl_setopt($ch, CURLINFO_HEADER_OUT, true);
  15.  
  16.                 curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  17.  
  18.             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  19.             curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  20.             curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  21.             curl_setopt($ch, CURLOPT_RANGE, "1-300");
  22.             curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36');
  23.  
  24.             $content = curl_exec($ch);
  25.             $info = curl_getinfo($ch);
  26.             curl_close($ch);
  27.  
  28.             print_r($info);
  29.             print BR;
  30.             //$content = htmlspecialchars($content);
  31.             //print_r($content);


Там много лишнего в коде, пробовал уже много...
6. LIME - 01 Марта, 2016 - 08:13:34 - перейти к сообщению
.
(Добавление)
оказалось все проще чем я думал
в исходном коде
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="refresh" content="1;url=http://www.avg.com/ru-ru/download-file-stb-free.tpl-stdfullblank?build=avf-free&product=avf"/>

а этот запрос уже отдает location на реальный файл
ээх)) юные хакеры))
7. 563434 - 01 Марта, 2016 - 15:22:36 - перейти к сообщению
А второй Url отдает:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <!DOCTYPE html><html><head><title>Foxmail</title><meta http-equiv="refresh" content="0; url=http://www.foxmail.com/win/download" /></head><body style="background:#292929 url(./images/pc/zh/mainbanner_bg.png) 0 0 repeat;"></body></html>

Рефреш на ту же страницу
Уже не так все просто?
Могу еще десяток ссылок покинуть с разными ситуациями.
Кто еще юный...я за 13 лет работы в сети, сначала проверяю все, а потом хвалюсь...
8. LIME - 01 Марта, 2016 - 15:24:25 - перейти к сообщению
563434 пишет:
я за 13 лет работы в сети, сначала проверяю все, а потом хвалюсь...
мне бы было стыдно
9. esterio - 01 Марта, 2016 - 16:54:24 - перейти к сообщению
КУКИ
10. LIME - 01 Марта, 2016 - 17:02:54 - перейти к сообщению
/

 

Powered by ExBB FM 1.0 RC1