Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Почему не работает парсер (HttpVersionNotSupported) ?

Почему не работает парсер (HttpVersionNotSupported) ?


     21.06.2021    Парсер, Curl    Все вопросы » Общие вопросы по PHP    735

вопрос
Есть сайт www.soundclick.com, с него нужно ретранслировать две ссылки:
- первая на прослушивание трека (битрейт ниже)
- вторая на скачивание, соответственно качество получше

Что бы рестранслировать первую ссылку достаточно прописывать куки с главной страницы soundclick.com
А вот чтобы получить ссылку на скачивание, куки нужно писать с страницы https://www.soundclick.com/utils_download/download_song.cfm?ID=14061226 , а потом уже по ссылке https://www.soundclick.com/utils_download/download_songDeliver.cfm?songID=14061226&ppID=0&selectLevel=320 получать сам трек

Для этого написан парсер:
<!--?php

$id = '14061226';

$track_name = isset($_GET['name']) ? $_GET['name'] : 'test';

$type = isset($_GET['type']) ? $_GET['type'] : null;

if ($type == 'play') {

    $file = getCurl('https://www.soundclick.com/playerV5/panels/audioStream.cfm?songID='. $id);

    file_download($file, $track_name);

} else if ($type == 'donwload') {

$link = 'https://www.soundclick.com/utils_download/download_song.cfm?ID='. $id;

$link_download = 'https://www.soundclick.com/utils_download/download_songDeliver.cfm?songID='. $id. '&ppID=0&selectLevel=320';

getCurl($link);

file_download( getCurl($link_download) , $track_name);

}

function getCurl($url) {

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/cookie.txt');

    curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/cookie.txt');

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    $header_size = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

    $html = curl_exec($ch);

    curl_close($ch);

    return $html;

}

function file_download($file, $track_name) {

header('Content-Type: audio/mpeg');

header("Accept-Ranges: bytes");

header("Content-Length: ". mb_strlen($file, '8bit') );

header("Cache-Control: max-age=0");

header("Range: bytes=0-58367");

header('Content-Disposition: attachment; filename="'. $track_name. '.mp3"');

echo $file;

}

?-->

Проблема заключается в том что ссылка на прослушивание (/test.php?type=play) ретранслируется норм, а вот ссылка на скачивание (/test.php?type=dowload) отдает пустой файл с содержимым:
<?xml version="1.0" encoding="UTF-8"?><Error><Code>HttpVersionNotSupported</Code><Message>The HTTP version specified is not supported.</Message><RequestId>4B988A15EDC9D2FE</RequestId><HostId>MWexueSVjDOfOaVdYRGG5qGcBBiNxRrH0Z1k3B+/d1L7IMeKXHVcXjNb7BgJ0TzvyJYXNDqKjCTjNuTT1f3as74e3O7w8uHJ</HostId></Error>

Просьба помочь в решении проблемы дельным советом.
Забыл уточнить что на локалхосте все работает и все дело в версии Curl (не работает на свежих версиях). Не особо хочу менять ОС на сервере на более старую из-за этого.

Ответа пока нет


Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх