1

Тема: Collaps

Балансер Collaps что-то у себя подкрутил в результате полученная прямая ссылка выдает сообщение

Status Code: 409 Conflict

и не проигрывается.

Возьмем например ссылку

 https://c.epizod.life/12276-mirage-1-season.html

, где видим плеер

https://api1625847679.tobaco.ws/embed/movie/18349?season=1

там зарыт json

seasons:[{"season":1,"blocked":false,"episodes":[{"episode":"1","id":193441,"dash":"https://test.streamvid.club/05_20/09/00/I6CTN3OY/538283.mpd","hls":"https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/master.m3u8","audio":{"names":["Cold Film"],"order":[0]},"duration":3077,"title":"Мираж (1 сезон) - 1 серия","download":""},{"episode":"2","id":193440,"dash":"https://test.streamvid.club/05_20/09/00/RMAQULXQ/538282.mpd","hls":"https://test.streamvid.club/05_09_20/05/09/00/U7MKCDTP/NJ2QPW53.mp4/master.m3u8","audio":{"names":["Cold Film"],"order":[0]},"duration":3067,"title":"Мираж (1 сезон) - 2 серия","download":""},{"episode":"3","id":193443,"dash":"https://test.streamvid.club/05_20/09/00/75HY44IQ/538285.mpd","hls":"https://test.streamvid.club/05_09_20/05/09/00/LOCMLKP3/PFKVPNQW.mp4/master.m3u8","audio":{"names":["Cold Film"],"order":[0]},"duration":3286,"title":"Мираж (1 сезон) - 3 серия","download":""},{"episode":"4","id":193442,"dash":"https://test.streamvid.club/05_20/09/00/GL7IEGNW/538284.mpd","hls":"https://test.streamvid.club/05_09_20/05/09/00/NXU7PISL/3DTGYPTO.mp4/master.m3u8","audio":{"names":["Cold Film"],"order":[0]},"duration":3249,"title":"Мираж (1 сезон) - 4 серия","download":""},{"episode":"5","id":193641,"dash":"https://test.streamvid.club/05_20/09/17/W2UN3OLE/538524.mpd","hls":"https://test.streamvid.club/05_09_20/05/09/16/CJ34ED75/U4QRLLDS.mp4/master.m3u8","audio":{"names":["Cold Film"],"order":[0]},"duration":3148,"title":"Мираж (1 сезон) - 5 серия","download":""},{"episode":"6","id":193642,"dash":"https://test.streamvid.club/05_20/09/16/HUXMDQEI/538525.mpd","hls":"https://test.streamvid.club/05_09_20/05/09/16/6ZMTRZGO/3Y5TSF3H.mp4/master.m3u8","audio":{"names":["Cold Film"],"order":[0]},"duration":3229,"title":"Мираж (1 сезон) - 6 серия","download":""}]}]
            },
            qualityByWidth: {"1280":1080,"640":480,"864":720},
            p2p: {
                geo: ["RU","","12714"],
                tolerance:  4 ,
                tracker: "wss://t5.zcvh.net/v1/ws",
                longDownload: 30 * 1000
            }
        });

        var id = 193441 ;
        var videoKey = 538283 ;
        var eventFranchiseID = 18349 ;

        function listenChangeEpisode(player) {
            player.on('playlistItem', function (data) {
                post({
                    event: 'changeEpisode',
                    id: data.id,
                    episode: data.episode,
                    season: data.season
                });
                id = data.id;
                document.title = data.title;

                try {
                    var franch = location.pathname.split('/').slice(-1)[0];
                    if (!/\d+/.test(franch)) return;
                    document.cookie = 'vp' + franch + '=' + data.season + ':' + data.episode +
                        ';domain=.' + location.hostname.split('.').slice(1).join('.') +
                        ';expires=' + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 10).toUTCString();
                } catch (e) {
                }
                middleCount = 0;
            });
        }
    </script>

    </body>
    </html>

dash меня не интересует, мой ТВ его не проигрывает, поэтому берем hls

https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/master.m3u8

Вроде бы все классно, длительность видео определяет и не стартует.
Если это master.m3u8 скачать видим

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="default",DEFAULT=YES,AUTOSELECT=YES,URI="https://5119510610.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-a1.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1020580,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=1280x648,AUDIO="audio0",FRAME-RATE=23.974,VIDEO-RANGE=SDR
https://5119510610.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=406405,CODECS="avc1.640016,mp4a.40.2",RESOLUTION=640x324,AUDIO="audio0",FRAME-RATE=23.974,VIDEO-RANGE=SDR
https://5119510610.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v2.m3u8
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=56303,CODECS="avc1.64001f",RESOLUTION=1280x648,VIDEO-RANGE=SDR,URI="https://5119510610.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/iframes-v1.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=22351,CODECS="avc1.640016",RESOLUTION=640x324,VIDEO-RANGE=SDR,URI="https://5119510610.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/iframes-v2.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="failover-audio-0",NAME="default",DEFAULT=YES,AUTOSELECT=YES,URI="https://5121020934.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-a1.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1020580,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=1280x648,AUDIO="failover-audio-0",FRAME-RATE=23.974,VIDEO-RANGE=SDR
https://5121020934.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v1.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="failover-audio-1",NAME="default",DEFAULT=YES,AUTOSELECT=YES,URI="https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-a1.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1020580,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=1280x648,AUDIO="failover-audio-1",FRAME-RATE=23.974,VIDEO-RANGE=SDR
https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=406405,CODECS="avc1.640016,mp4a.40.2",RESOLUTION=640x324,AUDIO="failover-audio-0",FRAME-RATE=23.974,VIDEO-RANGE=SDR
https://5121020934.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v2.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=406405,CODECS="avc1.640016,mp4a.40.2",RESOLUTION=640x324,AUDIO="failover-audio-1",FRAME-RATE=23.974,VIDEO-RANGE=SDR
https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v2.m3u8
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=56303,CODECS="avc1.64001f",RESOLUTION=1280x648,VIDEO-RANGE=SDR,URI="https://5121020934.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/iframes-v1.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=56303,CODECS="avc1.64001f",RESOLUTION=1280x648,VIDEO-RANGE=SDR,URI="https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/iframes-v1.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=22351,CODECS="avc1.640016",RESOLUTION=640x324,VIDEO-RANGE=SDR,URI="https://5121020934.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/iframes-v2.m3u8"
#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=22351,CODECS="avc1.640016",RESOLUTION=640x324,VIDEO-RANGE=SDR,URI="https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/iframes-v2.m3u8"

Все как обычно. Но если раньше, полученные ссылки можно было просмотреть, то теперь, например вот по этой ссылке

https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/index-v2.m3u8

полученные сегменты например
https://test.streamvid.club/05_23_19/05 … eg-3-a1.ts
дают ошибку Conflict 409
На компьютере, в отладчике, плеер запускает что-то другое, не hls, имеет вот такой вид

https://51918258.streamvid.club/x-en-x/khbxkvL1Ya8cky8aRC8cFn8cRC9OkwkbBvkjmn82YvbGFhL4Ra9JMre0YoKezr0=

2 (2021.07.13 18:44:28 отредактировано hokkonorti)

Re: Collaps

smsbox3 пишет:

Балансер Collaps что-то у себя подкрутил в результате полученная прямая ссылка выдает сообщение

Status Code: 409 Conflict

и не проигрывается.

Добрый день. Удалось решить?

3

Re: Collaps

Мне нет, надо разворачивать что-то что будет трафик перехватывать, чтобы посмотреть что за пакеты теперь колапс отдает. hls и dash они не отдают, выводят фейковую ошибку, Conflict, но так как ТВ запускает плеер колапса и показывает, можно предположить, что не что-то новое они отдают, а хорошо известное.

4 (2021.07.13 22:08:25 отредактировано smsbox3)

Re: Collaps

Что я вижу,

https://test.streamvid.club/x-en-x/[b]khbxkGLGYa8cky8aRC8cFn8cRC9OkwkbBvkjmn81RGQaFhRuMWlw[/b]

при

Host: test.streamvid.club
Origin: https://api1625847679.tobaco.ws
Referer: https://api1625847679.tobaco.ws/

Если первую ссылку подгрузить,там xml, выходит dash все таки работает?

+ открыть спойлер
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediaPresentationDuration="PT3077.990966796875S" minBufferTime="PT2S">
  <BaseURL>https://1856689131.streamvid.club/05_20/09/00/I6CTN3OY/</BaseURL>
  <BaseURL>https://512101159.streamvid.club/05_20/09/00/I6CTN3OY/</BaseURL>
  <BaseURL>https://test.streamvid.club/05_20/09/00/I6CTN3OY/</BaseURL>
  <Period id="0">
    <AdaptationSet id="1" segmentAlignment="true" lang="ru0" contentType="audio">
      <Representation mimeType="audio/webm" audioSamplingRate="48000" bandwidth="78060" codecs="opus" id="2">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration>
        <SegmentTemplate initialization="4.538283-0/init.webm" media="4.538283-0/$Number$.webm" startNumber="1" timescale="1000000">
          <SegmentTimeline>
            <S t="0" d="6001000"></S>
            <S t="6001000" d="6000000" r="510"></S>
            <S t="3072001000" d="5921000"></S>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet frameRate="1000000/42000" id="0" segmentAlignment="true" par="2:1" maxWidth="864" maxHeight="432" contentType="video">
      <Representation sar="1:1" mimeType="video/webm" bandwidth="2669777" codecs="vp09.00.30.08.00.01.01.01.00" height="432" id="0" width="864">
        <SegmentTemplate initialization="7.538283/init.webm" media="7.538283/$Number$.webm" startNumber="1" timescale="1000000">
          <SegmentTimeline>
            <S t="0" d="10010000" r="306"></S>
            <S t="3073070000" d="4921000"></S>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation sar="81:80" mimeType="video/webm" bandwidth="1093538" codecs="vp09.00.21.08.00.01.01.01.00" height="324" id="1" width="640">
        <SegmentTemplate initialization="6.538283/init.webm" media="6.538283/$Number$.webm" startNumber="1" timescale="1000000">
          <SegmentTimeline>
            <S t="0" d="10010000" r="306"></S>
            <S t="3073070000" d="4921000"></S>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>
MPD-это описание ресурсов, образующих потоковую службу, которые клиент DASH использует для определения того, какие ресурсы запрашивать.

Играет сегменты
https://512101159.streamvid.club/x-en-x/khbxkGLGYa8cky8aRC8cFn8cRC9OkwkbBvkjmn82YvbGFhL4Ra9JMre0YoKezr0=
https://512101159.streamvid.club/x-en-x/khbxkGLGYa8cky8aRC8cFn8cRC9OkwkbBvkjmn80YvbGFhL4Ra0cY2euHWAuK2ypMA==
для адрес сравнения описания  MPD
https://test.streamvid.club/x-en-x/khbxkGLGYa8cky8aRC8cFn8cRC9OkwkbBvkjmn81RGQaFhRuMWlw
А вот dash в старом формате из заголовка, который сейчас не работает

https://test.streamvid.club/05_20/09/00/I6CTN3OY/538283.mpd

Выходит сейчас проигрывает  dash, возможно можно и m3u8 вытащить, но не из заголовка, как раньше.

5 (2021.07.14 10:32:21 отредактировано hokkonorti)

Re: Collaps

наконец-то получилось сгенерировать ссылку которая должна воспроизводиться

const
                    g = "/x-en-x/",
                    b = Date.now();
                let v;
                function w(e) {
                    if (null == v || L(e)) return e;
                    const t = Date.now() + v,
                        n = Math.round(t / 1e3 / 60 / 60),
                        o = new URL(e);
                    return o.origin + g + E(btoa(n + "/" + o.pathname + o.search));
                }
                const L = (e) => e.includes(g),
                    E = (e) => e.split("").map(T).join("");
                function T(e) {
                    const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(e);
                    return t > -1 ? "DlChEXitLONYRkFjAsnBbymWzSHMqKPgQZpvwerofJTVdIuUcxaG"[t] : e;
                }
                C = 1626244290; /* x.unixTime; */
                v = 1e3 * C - b;
                console.log(
                    w("https://test.streamvid.club/07_12_21/07/12/11/SHRW6VHJ/NAMGER3T.mp4/master.m3u8")
                    ===
                    'https://test.streamvid.club/x-en-x/khbxkGR1Ya8ck18xRe8aRn8cka8xRp8xRn9BnXOWkeSLnp9FAb1tsyLGyC5IqhAUMmXGKiyaYr0GKBQ='
                );

теперь бы придумать как плеер заставить менять ссылки на сегменты не генерировав файл m3u8 на сервере )))))

Спасибо сказали: smsbox31

6

Re: Collaps

hokkonorti пишет:

теперь бы придумать как плеер заставить менять ссылки на сегменты не генерировав файл m3u8 на сервере )))))

Они каждый сегмент шифруют?

7 (2021.07.14 23:59:35 отредактировано hokkonorti)

Re: Collaps

smsbox3 пишет:

Они каждый сегмент шифруют?

Да. В этом и проблема))

8

Re: Collaps

hokkonorti пишет:

Да. В этом и проблема))

ну если делать под playerjs
тогда перед инициализацией ставьте


Hls.DefaultConfig.xhrSetup = function(xhr, url) {

  if (!url.includes('.m3u8') && url.includes('.streamvid.')) {
    if (!url.includes('/x-en-x/')) {
      var nd = Math.round(Date.now() / 1000 / 60 / 60),
        rd = new URL(url);
      segment = btoa(nd + "/" + rd.pathname + rd.search);

      segment = segment.split("").map(
        (e) => {
          var ddt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(e);
          return -1 < ddt ? "DlChEXitLONYRkFjAsnBbymWzSHMqKPgQZpvwerofJTVdIuUcxaG" [ddt] : e
        }
      ).join("");



      url = rd.origin + '/x-en-x/' + segment;
    }
  }
  xhr.open("GET", url, !0);
};

а потом
var player = new Playerjs(.....)

Спасибо сказали: smsbox31

9

Re: Collaps

eugene.php7 пишет:

ну если делать под playerjs

для андроид приложения )
на сайте их плеер показывается, а вот для приложения приходится выдергивать ссылки на m3u8/mp4 файлы

10

Re: Collaps

А под php не поясните как сделать?

11

Re: Collaps

Чисто на php решения вероятно нет, там каждый сегмент требует дешифроки перед проигрыванием. eugene.php7 предложил другое решение, на php мы получаем ссылку на m3u8 ( которая не работает), получаем ее из плеера колапса выдергивая вот из этого

"hls":"https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/master.m3u8",

А далее определяем плеер playerjs в javascript-е

var count_error;
var player = new Playerjs({id:"player", file:'<?=$s1?>'});

где в переменной $s1 у меня находится выдернутая из плеера колапса ссылка

https://test.streamvid.club/05_09_20/05/09/00/2Y2JDRLZ/MWKTGJ5T.mp4/master.m3u8

перед инициализацией ставим код из https://hms.lostcut.net/viewtopic.php?pid=17898#p17898
И javascript производит дешифровку ссылок. Все работает отлично. Большая благодарность eugene.php7 за отличное решение проблемы. Однако, если вам не под Playerjs надо, то я не знаю, как переделать.

12

Re: Collaps

На php можно сделать, просто генерировать m3u8 файл с прописанным в нем путями на сегменты
Я так сделал на java - чтоб генерировался m3u8 файл и сохранялся у пользователя на sdcard'е и уже он в плеере открывался - напомню - у меня андроид приложение, а в веб версии используется плеер collaps

Спасибо сказали: smsbox31