<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Неофициальный форум DLNA Home Media Server &mdash; Получение ссылки с datalock.ru]]></title>
		<link>https://hms.lostcut.net/viewtopic.php?id=597</link>
		<atom:link href="https://hms.lostcut.net/extern.php?action=feed&amp;tid=597&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Получение ссылки с datalock.ru».]]></description>
		<lastBuildDate>Fri, 16 Jun 2023 20:02:10 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=18224#p18224</link>
			<description><![CDATA[<div class="quotebox"><cite>kliopa100 пишет:</cite><blockquote><p>сизонвар</p></blockquote></div><p>А, да? Лазил я как-то давно на него: 1. Шмфровка там очень смешная, тас обычный бейс64с мусором, а во-вторых я как пару ссылок расшифровал увидел что там качество полный шлак, интерес парсить сразу отпал</p>]]></description>
			<author><![CDATA[null@example.com (Fizer)]]></author>
			<pubDate>Fri, 16 Jun 2023 20:02:10 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=18224#p18224</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=18220#p18220</link>
			<description><![CDATA[<div class="quotebox"><cite>Fizer пишет:</cite><blockquote><p>А на каких сайтах ог используется?</p></blockquote></div><p>сизонвар</p>]]></description>
			<author><![CDATA[null@example.com (kliopa100)]]></author>
			<pubDate>Fri, 16 Jun 2023 08:28:15 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=18220#p18220</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=18209#p18209</link>
			<description><![CDATA[<p>А на каких сайтах ог используется?</p>]]></description>
			<author><![CDATA[null@example.com (Fizer)]]></author>
			<pubDate>Wed, 14 Jun 2023 10:15:12 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=18209#p18209</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=17994#p17994</link>
			<description><![CDATA[<div class="quotebox"><cite>bond пишет:</cite><blockquote><p>ребята ни у кого нет расшифровки на php. Спасибо</p></blockquote></div><p>когда то,давненько, переписывал на php для себя<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>&lt;?php
$link = isset($_GET[&quot;url&quot;]) ? $_GET[&quot;url&quot;] : &quot;&quot;;
if (!$link) die(&quot;No url!&quot;);
$referer = isset($_SERVER[&quot;HTTP_REFERER&quot;]) ? $_SERVER[&quot;HTTP_REFERER&quot;] : &quot;http://datalock.ru/&quot;;

// Притворяемся браузером, передаём куки, подменяем Referer&#039;а
$opts = Array(&#039;http&#039;=&gt;Array(
    &#039;method&#039;=&gt;&quot;GET&quot;,
    &#039;header&#039;=&gt;&quot;Referer: $referer\r\n&quot; .
              &quot;User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36\r\n&quot;));
$html = file_get_contents($link, false, stream_context_create($opts));
$page = Eval_Link_Decode($html);
// Если после всей расшифровки в этих данных нет ссылки на плейлист - ошибка
if(preg_match(&#039;#(datalock.ru\/playlist[^&quot;]+)#&#039;, $page, $links)){
   $url = &#039;http://&#039;.trim($links[1]);
   $json_data = file_get_contents($url, false, stream_context_create($opts));
   DatalockPlaylist($json_data);
}else{
   $error = &quot;Ошибка! Отсутствует ссылка на плейлист с datalock.ru\n&quot;;
   exit($error);
 } 
 
/////////////////////////////////////////////////////////////////////////////
// Функция дешифровки javascript кода с сайта datalock.ru
//////////////////////////////////////////////////////////////////////////////
function decodeDatalock ($y, $t, $u, $p) {
 $i = 0;
 $n = 0;
 $d = 0;
 $a1 = &quot;&quot;;
 $a2 = &quot;&quot;;
 while (true) {
  if      ($i &lt; 5         ) $a2 .= substr($y, $i, 1);
  else if ($i &lt; strlen($y)) $a1 .= substr($y, $i, 1);
  $i++;
  if      ($n &lt; 5         ) $a2 .= substr($t, $n, 1);
  else if ($n &lt; strlen($t)) $a1 .= substr($t, $n, 1);
  $n++;
  if      ($d &lt; 5         ) $a2 .= substr($u, $d, 1);
  else if ($d &lt; strlen($u)) $a1 .= substr($u, $d, 1);
  $d++;
  if (strlen($y) + strlen($t) + strlen($u) &lt;= strlen($a1) + strlen($a2)) break;
 }
  
 $n = 0;
 $result = &quot;&quot;;
 for ($i = 0; $i &lt; strlen($a1); $i += 2) {
  $int = -1;
  if (ord(substr($a2, $n, 1)) % 2) $int = 1;
  $result .= chr(intval(substr($a1, $i, 2), 36) - $int);
  $n++;
  if ($n &gt;= strlen($a2)) $n = 0;
 }
 return $result;
}
/////////////////////////////////////////////////////////////////////////////
// Функция поиска и получения параметров при расшифровке данных  с сайта datalock.ru
//////////////////////////////////////////////////////////////////////////////
function Eval_Link_Decode($url){
    
preg_match(&quot;#.*;eval\(function\(y,t,u,p\).*?}\(&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;#&quot;, $url, $y);
 $page = decodeDatalock($y[1], $y[2], $y[3], $y[4]);
 
 if($page){
preg_match(&quot;#;eval\(function\(y,t,u,p\).*?}\(&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;#&quot;, $page, $t);
 $page1 = decodeDatalock($t[1], $t[2], $t[3], $t[4]);
 }
 
 if($page1){
 preg_match(&quot;#;;\s;eval\(function\(y,t,u,p\).*?}\(&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;#&quot;, $page1, $u);
 $page2 = decodeDatalock($u[1], $u[2], $u[3], $u[4]);
 }
  if($page2) return $page2;
  else {$error = &quot;&lt;b&gt;Возникла ошибка при расшифровкe получения данных&lt;/b&gt;\n&quot;;}
             return $error;
}

/////////////////////////////////////////////////////////////////////////////
// Функция получения ссылки на плейлист с сайта datalock.ru
//////////////////////////////////////////////////////////////////////////////
 function DatalockPlaylist($data){
     
  $decode = json_decode($data,1);
  
  foreach($decode as $k =&gt;$v){
     $name =  $v[&#039;title&#039;];
     $file =  $v[&#039;file&#039;];
     $name = str_replace(&#039;&lt;br&gt;&#039;,&#039;&#039;,$name);
     $file = str_replace(&#039;//Z3JpZA==&#039;,&#039;&#039;,$file);
     $file = str_replace(&#039;#2&#039;,&#039;&#039;, $file);
     $file = base64_decode($file);
     echo &#039;&lt;b&gt;&#039;.$name .&quot;&lt;/b&gt;&lt;br&gt;&quot;. $file.&quot;&lt;br&gt;&quot;;
     }
    
 }
 
?&gt;</code></pre></div></div></div><p>и вот такой пример<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>1 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.01.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
2 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.02.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
3 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.03.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
4 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.04.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
5 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.05.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
6 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.06.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
7 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.07.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
8 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.08.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
9 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.09.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
10 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.10.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
11 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.11.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
12 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.12.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
13 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.13.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
14 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.14.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
15 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.15.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4
16 серия 
http://data00-cdn.datalock.ru/gfi2lm/e5daa20d7d1a1a51fab0668ec0622c24/grid/7f_Nepridumannaja.zhizn.16.seriya.iz.16.2015.HDTVRip.720p.Mediaclub.a1.05.04.16.mp4</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (Spell)]]></author>
			<pubDate>Tue, 18 Jan 2022 14:55:42 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=17994#p17994</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=17993#p17993</link>
			<description><![CDATA[<p>У меня последнее время этот ресурс плохо работает, толи там какая защита от чтения, толи это блокировка РНК сказывается, стартовая страница часто пустой считывается.</p>]]></description>
			<author><![CDATA[null@example.com (smsbox3)]]></author>
			<pubDate>Sun, 16 Jan 2022 19:53:38 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=17993#p17993</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=17992#p17992</link>
			<description><![CDATA[<p>ребята ни у кого нет расшифровки на php. Спасибо</p>]]></description>
			<author><![CDATA[null@example.com (bond)]]></author>
			<pubDate>Tue, 11 Jan 2022 07:10:47 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=17992#p17992</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=17269#p17269</link>
			<description><![CDATA[<p>Дайте на php</p>]]></description>
			<author><![CDATA[null@example.com (Mr.Max)]]></author>
			<pubDate>Wed, 23 Sep 2020 20:52:19 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=17269#p17269</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13643#p13643</link>
			<description><![CDATA[<p><strong>WendyH</strong><br />еслт не затруднит, то можно вариант на lua?<br />только функцию&nbsp; дешифровки js</p>]]></description>
			<author><![CDATA[null@example.com (tantal)]]></author>
			<pubDate>Tue, 25 Dec 2018 20:21:48 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13643#p13643</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13641#p13641</link>
			<description><![CDATA[<div class="quotebox"><cite>WendyH пишет:</cite><blockquote><p> решение для HMS</p></blockquote></div><p>Еще бы для php перевести. То же попадается на пути этот datalock.</p>]]></description>
			<author><![CDATA[null@example.com (smsbox3)]]></author>
			<pubDate>Tue, 25 Dec 2018 19:33:24 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13641#p13641</guid>
		</item>
		<item>
			<title><![CDATA[Получение ссылки с datalock.ru]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13634#p13634</link>
			<description><![CDATA[<p>Т.к. уже не первый раз натыкаюсь на deja-vu, когда вижу закодированный код с datalock.ru и после поиска уже готового решения очередной раз не найдя, решил выложить решение для HMS сдесь, чтобы можно было найти по поиску.</p><p>Функция раскодирования безобразия:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>//////////////////////////////////////////////////////////////////////////////
int base36Decode(string input) {
  int res = 0; string CharList = &quot;0123456789abcdefghijklmnopqrstuvwxyz&quot;;
  int len = Length(input);
  for (int i=0; i&lt;len; i++) {
    res += (Pos(input[len-i], CharList)-1) * Int(Exp(Ln(36) * i));
  }
  return res;
}

//////////////////////////////////////////////////////////////////////////////
// Функция дешифровки javascript кода с сайта datalock.ru
string decodeDatalock(string y, string t, string u, string p) {
  int i = 0;
  int n = 0;
  int d = 0;
  string a1 = &quot;&quot;;
  string a2 = &quot;&quot;;
  while (true) {
    if      (i &lt; 5)         a2 += y[i+1];
    else if (i &lt; Length(y)) a1 += y[i+1]; i++;
    if      (n &lt; 5)         a2 += t[n+1];
    else if (n &lt; Length(t)) a1 += t[n+1]; n++;
    if      (d &lt; 5)         a2 += u[d+1];
    else if (d &lt; Length(u)) a1 += u[d+1]; d++;
    if (Length(y) + Length(t) + Length(u) &lt;= Length(a1) + Length(a2)) break;
  }
  n = 0;
  string sResult = &quot;&quot;;
  for (i = 0; i &lt;  Length(a1); i += 2) {
    int shift = -1;
    if (Ord(a2[n+1]) % 2) shift = 1;
    sResult += chr(base36Decode(Copy(a1, i+1, 2)) - shift);
    n++;
    if (n &gt;= Length(a2)) n = 0;
  }
  return sResult;
}</code></pre></div></div></div><p>Поиск самого безобразия и использование вышеприведённого кода:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>///////////////////////////////////////////////////////////////////////////////
// Создание ссылок на серии с сайта datalock.ru
void CreateFromDatalockPlaylist(string sLink) {
  string sHtml, sData, s1, s2, s3, s4, sName; THmsScriptMediaItem Item;
  if (LeftCopy(sLink, 2)==&#039;//&#039;) sLink = &#039;http:&#039;+Trim(sLink);
  
  sHtml = HmsDownloadURL(sLink, &#039;Referer: &#039;+mpFilePath);
  
  // Поиск и расшифровка блока кода
  sData = sHtml;
  while (HmsRegExMatch3(&quot;.*eval\\(function\\(\\w,\\w,\\w,\\w\\).*?}\\(&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?&#039;,&#039;.*?)&#039;&quot;, sData, s1, s2, s3)) {
    HmsRegExMatch2(&quot;^(.*?)&#039;,&#039;(.*)&quot;, s3, s3, s4);
    sData = decodeDatalock(s1, s2, s3, s4);
  }
  // Если после всей расшифровки в этих данных нет ссылки на плейлист - ошибка
  if (!HmsRegExMatch(&#039;(datalock.ru/playlist[^&quot;]+)&#039;, sData, sLink)) {
    Item = HmsCreateMediaItem(&#039;err&#039;, PodcastItem.ItemID);
    Item[mpiTitle] = &#039;Ошибка расшифровки данных с datalock.ru&#039;;
    return;
  }
  // Загружаем плейлист
  sLink = &#039;http://&#039;+Trim(sLink);
  sData = HmsDownloadURL(sLink, &#039;Referer: &#039;+mpFilePath);
  
  
  TStrings LIST = TStringList.Create();
  TJsonObject JSON = TJsonObject.Create();
  try {
    JSON.LoadFromString(sData);
    TJsonArray JARRAY = JSON.AsArray; if (JARRAY == nil) return;
    for (int i = 0; i &lt; JARRAY.Length; i++) {
      TJsonObject VIDEO = JARRAY[i];
      sName = VIDEO.S[&#039;title&#039;];
      sLink = VIDEO.S[&#039;file&#039; ];
      sName = ReplaceStr(ReplaceStr(HmsHtmlToText(sName), &#039;\n&#039;, &#039; &#039;), &#039;\r&#039;, &#039;&#039;);
      sLink = HmsBase64Decode(ReplaceStr(ReplaceStr(sLink, &#039;//Z3JpZA==&#039;, &#039;&#039;), &#039;#2&#039;, &#039;&#039;));
      // Т.к. там ссылок может быть несколько, засовываем это всё в список, а оттуда берём последнюю ссылку
      LIST.Text = ReplaceStr(ReplaceStr(ReplaceStr(sLink, &#039;,&#039;, &#039;\n&#039;), &#039; and &#039;, &#039;\n&#039;), &#039; or &#039;, &#039;\n&#039;);
      sLink = LIST[LIST.Count-1];
      
      Item = HmsCreateMediaItem(sLink, PodcastItem.ItemID);
      Item[mpiTitle] = sName;
      
    }
  } finally { JSON.Free; LIST.Free; }
  
  sHtml = &#039;&#039;;
}</code></pre></div></div></div><p>В функцию CreateFromDatalockPlaylist можно передавать ссылки вида <a href="http://datalock.ru/player/12377">http://datalock.ru/player/12377</a></p><p>Просто увековечил этот код для того, чтобы если что - найти, когда опять встретится.</p>]]></description>
			<author><![CDATA[null@example.com (WendyH)]]></author>
			<pubDate>Sun, 23 Dec 2018 19:40:50 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13634#p13634</guid>
		</item>
	</channel>
</rss>
