Пример получения ссылки на PHP:
<?php
// В параметрах указываем url как http://kodik.cc/video/55568/f07cf23d77f8e4bb4865efa1a0f2079a/720p
$url = isset($_GET["url"]) ? $_GET["url"] : ""; if (!$url) die("No url!");
// Устанавливаем HTTP-заголовки, притворяясь браузером
$headers = "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n" .
"User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36\r\n";
$options = ['http'=>['header'=>$headers."Referer: $url\r\n"]];
// Загружаем страницу
$html = file_get_contents($url, false, stream_context_create($options));
// В HTML-коде находим значение ссылки на iframe
$iframe_url = preg_match('/iframe.src\s*=\s*"(.*?)"/', $html, $m) ? "http:".$m[1] : "";
// Если не нашли - умирая, сообщаем об этом
if (!$iframe_url) die("Error! No found iframe.src in loaded page.");
// Устанавливаем новое значение Referer в HTTP-заголовках
$options['http']['header'] .= "Referer: $iframe_url\r\n";
// Скачиваем страницу по ссылке на iframe
$html = file_get_contents($iframe_url, false, stream_context_create($options));
// Ищем hash2. Он в js-файле, ищем ссылку на этот файл, грузим и ищем там значение hash2
$jsUrl = preg_match('#(/assets/js/app.promo[^"\']+)#', $html, $m) ? "http://kodik.cc".$m[1] : "";
// Если не нашли ссылку на js-файл app.promo - сообщаем и завершаем скрипт
if (!$jsUrl) die("Error! Not found js file (for hash2).");
// Загружаем по найденной ссылке весь js-код
$jsData = file_get_contents($jsUrl, false, stream_context_create($options));
// Ищем значение hash2 и ссылки на post
$hash2 = preg_match('/hash2:"(.*?)"/' , $jsData, $m) ? $m[1] : "";
$post_url = preg_match('#url:"(.*?)",#' , $jsData, $m) ? $m[1] : "";
// Если не нашли - всё напрасно
if (!$hash2) die("Error! Not found hash2 value in js file.");
// Формируем данные для POST запроса, находя нужные значения в html-коде загруженной страницы
$postData = array();
$postData['d' ] = preg_match('/var domain\s*=\s*"(.*?)"/' , $html, $m) ? $m[1] : "";
$postData['d_sign' ] = preg_match('/var d_sign\s*=\s*"(.*?)"/' , $html, $m) ? $m[1] : "";
$postData['pd' ] = preg_match('/var pd\s*=\s*"(.*?)"/' , $html, $m) ? $m[1] : "";
$postData['pd_sign' ] = preg_match('/var pd_sign\s*=\s*"(.*?)"/' , $html, $m) ? $m[1] : "";
$postData['ref' ] = preg_match('/var ref\s*=\s*"(.*?)"/' , $html, $m) ? $m[1] : "";
$postData['ref_sign'] = preg_match('/var ref_sign\s*=\s*"(.*?)"/' , $html, $m) ? $m[1] : "";
$postData['type' ] = preg_match('/videoInfo.type\s*=\s*["\'](.*?)["\']/', $html, $m) ? $m[1] : "";
$postData['hash' ] = preg_match('/videoInfo.hash\s*=\s*["\'](.*?)["\']/', $html, $m) ? $m[1] : "";
$postData['id' ] = preg_match('/videoInfo.id\\s*=\\s*["\'](.*?)["\']/', $html, $m) ? $m[1] : "";
$postData['hash2' ] = $hash2;
// Подготавливаем POST-запрос
$options = ['http'=>['method'=>"POST",'header'=>$headers."Referer: $iframe_url\r\n",'content'=> http_build_query($postData)]];
// Делаем POST запрос с подготовленными данными
$data = file_get_contents("http://kodik.cc.$post_url", false, stream_context_create($options));
// Преобразуем ответ в JSON-объект
$json = json_decode($data);
// Перебираем все полученные ссылки и запоминаем последнюю (с наивысшим качеством)
$link = "";
foreach($json->links as $key => $arrayLinks) {
$link = "http:".$arrayLinks[0]->src;
}
// Выводим полученную ссылку на поток
echo $link;
Тест: http://wonky.lostcut.net/kodik.php?url= … 2079a/720p
Sony Bravia KDL-32CX523