Ссылка имеет формат: https://app.comagic.ru/system/media/talk/?key=db5e7a6f328b3a6646fe09ef54da76dd&call_session_id=317461689
С браузера все открывается
Если использовать курл:
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_handle,CURLOPT_HEADER,true);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.2; rv:6.0.2) Gecko/20100101 Firefox/6.0.2');
$fileString = curl_exec($curl_handle);
print_r(curl_getinfo($curl_handle));
curl_close($curl_handle);
То получаю такое:
Array
(
[url] => https://app.comagic.ru/system/media/talk/?key=db5e7a6f328b3a6646fe09ef54da76dd&call_session_id=317461689
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 20
[redirect_count] => 0
[total_time] => 0.046891
[namelookup_time] => 0.000999
[connect_time] => 0.010747
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 195.211.120.36
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => 87.236.20.107
[local_port] => 42032
)
Пробовал также file_get_contents - тоже получаю bool(false).
Причем ранее все работало, код не менялся. Возможно сервис поставил какую то защиту на такого рода скачивание. Как быть? Может кто подсказать куда копать?
Скорее всего защита, попробуйте поэкспериментировать с UserAgent и Proxy, а также проверьте, скачивается ли сейчас с вашего IP файл в нормальном режиме. Вполне возможно, что на сервере сработал защитный механизм, который привязан к IP-адресу.
Еще возможный вариант - запрос Cookies перед отправкой файла. Особенно меня наталкивает на эту мысль параметр call_session_id=317461689. Обычно его вставляют, чтобы проверить, совпадает ли session_id в Cookies с тем, что запрашивает браузер.
Сам адрес:
https://app.comagic.ru/system/media/talk/
Это обращение к скрипту, который выдает файл, и он может запросить и проверить любые данные, которые отправляет клиент.
Также может быть ответ с редиректом. Когда вышеуказанный скрипт ничего не отправляет пользователю, а перенаправляет его на другой скрипт, который и выдает файл. Браузер эту ситуацию обрабатывает нормально, а вот cURL не знает, что там несколько запросов.
В варианте с курл проблема решилась установкой:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
Продвижение своими сайтами как стратегия роста и независимости