aleks123 пишет:Здесь не обязательно определять какой мусор.
Думал, да не может быть! Посмотрел, а там просто интересный способ уборки мусора. Да, я тоже подметил, что длина мусорных вставок одинаковая. Поэтому можно не париться и искать его по шаблону.
В том скрипте за это отвечает участок:
url = string.reverse(url)
while url:match(temp) do
url = url:gsub(temp, "",1)
end
url = string.reverse(url)
Где temp объявлен ранее:
local temp = string.rep("S", 48):gsub("S","%%S").."//"
Вот так можно это реализовать, но менее извращённо.
Пример скрипта получения ссылки для HMS:
{
string v1, v2, v3, url, html = HmsDownloadURL(mpFilePath);
// Получаем значения из html-кода загруженной страницы
HmsRegExMatch("var\\s*firstIpProtect\\s*=\\s*[\"'](.*?)[\"']" , html, v1 );
HmsRegExMatch("var\\s*secondIpProtect\\s*=\\s*[\"'](.*?)[\"']", html, v2 );
HmsRegExMatch("var\\s*portProtect\\s*=\\s*[\"'](.*?)[\"']" , html, v3 );
HmsRegExMatch("file:[\"']#2(.*?)[\"']" , html, url);
// Убираем мусор
TRegExpr RegEx = TRegExpr.Create("//[^/]{48}");
while (RegEx.Search(url)) url = ReplaceStr(url, RegEx.Match(0), "");
RegEx.Free;
// Декодируем и формируем ссылку на m3u8 файл
url = HmsBase64Decode(url);
url = ReplaceStr(url, '{v1}', v1);
url = ReplaceStr(url, '{v2}', v2);
url = ReplaceStr(url, '{v3}', v3);
// Указываем HTTP-заголовок Referer, без него 403 - Forbidden
MediaResourceLink = '-headers "Referer: '+mpFilePath+'" -i "'+url+'"';
}
Пример на PHP:
<?php
$link = isset($_GET["url"]) ? $_GET["url"] : "http://domatv.net/100-dom-kino-premium.html"; if (!$link) die("No url!");
// Загружаем страницу
$html = file_get_contents($link);
// Получаем данные из HTML-кода загруженной страницы
$v1 = preg_match("@var\s*firstIpProtect\s*=\s*[\"'](.*?)[\"']@" , $html, $m) ? $m[1] : "";
$v2 = preg_match("@var\s*secondIpProtect\s*=\s*[\"'](.*?)[\"']@", $html, $m) ? $m[1] : "";
$v3 = preg_match("@var\s*portProtect\s*=\s*[\"'](.*?)[\"']@" , $html, $m) ? $m[1] : "";
$url = preg_match("@file:[\"']#2(.*?)[\"']@" , $html, $m) ? $m[1] : "";
// Убираем мусор
while (preg_match("@//[^/]{48}@", $url, $m)) $url = str_replace($m[0], "", $url);
// Декодируем, делаем подстановки значений
$url = base64_decode($url);
$url = str_replace("{v1}", $v1, $url);
$url = str_replace("{v2}", $v2, $url);
$url = str_replace("{v3}", $v3, $url);
// Для доступа к полученной ссылке всё ещё понадобиться указание Referer...
echo $url;
К сожалению, для доступа к полученной ссылке нужно указывать Referer.
Sony Bravia KDL-32CX523