Ankündigung

Einklappen
Keine Ankündigung bisher.

M3U8 Playlist - Neblesessionid und WmsAuthSign

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • M3U8 Playlist - Neblesessionid und WmsAuthSign

    Ich möchte Live Stream von dieser Seite über IPTV abspielen.
    PHP-Code:
    http://www.besta2.com/?kanal=ronahi 
    Wenn ich der link, die ich über Seitenquelltext ermittelt habe, in mein M3U8 Liste einfüge klappt es mit abspielen nicht.
    PHP-Code:
    http://95.216.46.88:8081/ronahitv/ronahi_abr/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9My83LzIwMTkgMTE6NDk6NDEgUE0maGFzaF92YWx1ZT1FaTFWSmE2ZjQ1bUZDM2FIcnZZKzhnPT0mdmFsaWRtaW51dGVzPTI0MA== 
    Ich habe dann mit Wireshak versucht Link zufinden und gibt folgendes raus.
    PHP-Code:
    Frame 632189499 bytes on wire (3992 bits), 499 bytes captured (3992 bitson interface 0
    Ethernet II
    SrcAsrockIn_5b:06:85 (bc:5f:f4:5b:06:85), DstCompalBr_16:14:10 (38:43:7d:16:14:10)
    Internet Protocol Version 4Src192.168.0.241Dst95.216.46.88
    Transmission Control Protocol
    Src Port51604Dst Port8081Seq2671Ack19514Len445
        Source Port
    51604
        Destination Port
    8081
        
    [Stream index2310]
        [
    TCP Segment Len445]
        
    Sequence number2671    (relative sequence number)
        [
    Next sequence number3116    (relative sequence number)]
        
    Acknowledgment number19514    (relative ack number)
        
    0101 .... = Header Length20 bytes (5)
        
    Flags0x018 (PSHACK)
        
    Window size value16653
        
    [Calculated window size66612]
        [
    Window size scaling factor4]
        
    Checksum0x51a1 [unverified]
        [
    Checksum StatusUnverified]
        
    Urgent pointer0
        
    [SEQ/ACK analysis]
        [
    Timestamps]
        
    TCP payload (445 bytes)
    Hypertext Transfer Protocol
        GET 
    /ronahitv/ronahi_abr/ronahitv/ronahi/chunks.m3u8?nimblesessionid=2490555&wmsAuthSign=c2VydmVyX3RpbWU9My83LzIwMTkgMTE6NDk6NDEgUE0maGFzaF92YWx1ZT1FaTFWSmE2ZjQ1bUZDM2FIcnZZKzhnPT0mdmFsaWRtaW51dGVzPTI0MA== HTTP/1.1\r\n
        Host
    95.216.46.88:8081\r\n
        User
    -AgentMozilla/5.0 (Windows NT 6.1Win64x64rv:65.0Gecko/20100101 Firefox/65.0\r\n
        Accept
    : */*\r\n
        Accept-Language: de,en-US;q=0.7,en;q=0.3\r\n
        Accept-Encoding: gzip, deflate\r\n
        Connection: keep-alive\r\n
        \r\n
        [Full request URI [truncated]: http://95.216.46.88:8081/ronahitv/ronahi_abr/ronahitv/ronahi/chunks.m3u8?nimblesessionid=2490555&wmsAuthSign=c2VydmVyX3RpbWU9My83LzIwMTkgMTE6NDk6NDEgUE0maGFzaF92YWx1ZT1FaTFWSmE2ZjQ1bUZDM2FIcnZZKzhnPT0mdmFsaWR]
        [HTTP request 7/7]
        [Prev request in frame: 632156]
        [Response in frame: 632205] 

    So wie ich es verstanden habe, wird Nimblesessionid und WmsAuthSign Teile in bestimmte Zeit aktualisiert,

    Meine Fragen:
    -Gibt es irgendwelche möglichkeit, mit PHP oder Java Stream Link, ausfindig zumachen, ohne Software wie Wireshark einzusetzen. Ich kann zwar wmsAuthSign Teil von der Link, die ich im Seitenquelltext ermittle, zutrennen um bei jeder aufruf zu aktualisieren, funktioniert aber auch nicht ohne zugehörige Nimblesessionid.

    So erhalte ich Link, der im Seitenquelltext hinterlegt ist

    PHP-Code:
    $source file_get_contents("http://www.besta2.com/ronahi"); preg_match("/(http.*?wmsAuthSign\=[^\&">]+)/", $source,$output);
    echo output[1]; 
    Und so trenne ich wmsAuthSign

    PHP-Code:
        $input = @file_get_contents($url) or die("Please try again later: $url");
        
    preg_match("/(http.*?wmsAuthSign\=[^\&">]+)/", $input$matches);
        
    $wmsAuthSignKv = parse_url($matches[1], PHP_URL_QUERY);
        
    $wmsAuthSign = explode('=', $wmsAuthSignKv);
        echo 
    $wmsAuthSign[1]
    - Was wäre korrekte vorgehensweise?
    - Kann ich irgendwie auch Nimblesessionid mit php ermitteln?

    Bin sehr dnkbar für alle mögliche hilfestellungen.



  • #2
    besta2.com:
    we do not host any content, this site only contains links and embeds to TV channels from 3rd party sites Which are freely available on all Internet.
    setze dich mit den jeweiligen sendern auseinander und njutze diese wenn möglich über iframe.

    Kommentar


    • #3
      Ich habe mal reingeschaut, das Problem ist sehr banal.

      Deine URL die du ermittelst, die m3u8 Datei hat die ID und auth usw. diese Datei funktioniert NUR nicht, weil in der Datei der Host fehlt.(Öffne die Datei mal mit Notepad dann siehste was da drin steht, hängst du da jetzt IP und Port dran wird die Datei im VLC Player abgespielt) Da steht die URL Relativ drin. Ich habe jetzt mal ein Übetriebenen Script geschrieben.

      PHP-Code:
      <?php
      $channel 
      'ronahi';

      $url 'http://www.besta2.com/?kanal='.$channel;



      $options = array(

          
      CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
          
      CURLOPT_POST           =>false,        //set to GET
          
      CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'//set user agent
          
      CURLOPT_COOKIEFILE     =>"cookie.txt"//set cookie file
          
      CURLOPT_COOKIEJAR      =>"cookie.txt"//set cookie jar
          
      CURLOPT_RETURNTRANSFER => true,     // return web page
          
      CURLOPT_HEADER         => true,    // don't return headers
          
      CURLOPT_FOLLOWLOCATION => true,     // follow redirects
          
      CURLOPT_ENCODING       => "",       // handle all encodings
          
      CURLOPT_AUTOREFERER    => true,     // set referer on redirect

      );


      $curl curl_init($url);

      curl_setopt_array$curl$options );

      $result curl_exec($curl);
      $headerInfo  curl_getinfo$curl );
      curl_close$curl );

      $header =  substr($result0$headerInfo['header_size']);
      $body substr($result,$headerInfo['header_size']+1);
      $domDocument = new DOMDocument();

      @
      $domDocument->loadHTML($body);

      $domXpath = new DOMXPath($domDocument);

      $sources $domXpath->query('//source[@type="application/x-mpegURL"]');
      $sourceUrl '';
      if(
      $sources->length 0){
          
      /**
           * @var DOMElement $source
           */
          
      foreach ($sources as $source){
              
      $sourceUrl $source->getAttribute('src');
          }
      }
      if(!
      $sourceUrl){
          die(
      "Playlist URL nicht gefunden");
      }


      $realUrl str_replace('_abr/playlist.m3u8','/chunks.m3u8',$sourceUrl);
      header('Content-type: application/vnd.apple.mpegurl');
      header('Content-Disposition: attachment; filename="'.$channel.'.m3u8"');
      ob_end_clean();
      ?>
      #EXTM3U
      #EXT-X-VERSION:3
      #EXT-X-STREAM-INF:BANDWIDTH=870400,RESOLUTION=1024x576,CODECS="avc1.64001f,mp4a.40.2"
      <?= $realUrl?>
      was für dich vielleicht interessant ist. die nimblesessionid wird garnicht gebraucht, läuft auch so. also habe ich im Grunde nur deine URL it str_replace bearbeitet für den richtigen Pfad.

      PHP-Code:
      $realUrl str_replace('_abr/playlist.m3u8','/chunks.m3u8',$sourceUrl); 
      war aber echt tricky, die haben mit absicht irgendwelche Parameter eingebaut damit man als Entwickler zu viel nachdenkt
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

      Kommentar


      • #4
        Zitat von BlackScorp Beitrag anzeigen
        Ich habe mal reingeschaut, das Problem ist sehr banal.

        was für dich vielleicht interessant ist. die nimblesessionid wird garnicht gebraucht, läuft auch so. also habe ich im Grunde nur deine URL it str_replace bearbeitet für den richtigen Pfad.

        PHP-Code:
        $realUrl str_replace('_abr/playlist.m3u8','/chunks.m3u8',$sourceUrl); 
        war aber echt tricky, die haben mit absicht irgendwelche Parameter eingebaut damit man als Entwickler zu viel nachdenkt
        Ich habe aus deinem mitgeteilten Informationen so ein kleine funktion erstellt.
        PHP-Code:
        function wmsAuthSignTrennen($url)
        {
            
        $input = @file_get_contents($url) or die("Please try again later: $url");
            
        preg_match("/(http.*?wmsAuthSign\=[^\&">]+)/", $input$matches);
            
        $wmsAuthSignKv = parse_url($matches[1], PHP_URL_QUERY);
            
        $wmsAuthSign = explode('=', $wmsAuthSignKv);
            return 
        $wmsAuthSign[1];

        Um mir wmsAuthSign aus dem URL zu ermitteln. Dann füge ermittelte wmsAuthSign zu jeweilige real M3U8 URL. So etwa.

        PHP-Code:
        "http://95.216.46.88:8081/ronahitv/ronahi/chunks.m3u8?wmsAuthSign="wmsAuthSignTrennen("http://www.besta2.com/?kanal=ronahi") . "==\n"
        Das seltsame bzw was ich nicht verstehe, wenn ich Php-Datei, der M3U8 Liste erstellt, local ausführe, abspielen funktioniert mit VLC ohne Probleme. Wenn ich aber Datei auf Webserver Uploade und dort über IPTV(Amazon Fire Stick und Pixel Smart IPTV) aufrufe, funktioniert es nicht.
        Die M3U8 Liste wird zwar geladen, aber die Kanäle, mit der wmsAuthSign werden nicht abgespielt.

        Kommentar


        • #5
          Zitat von asiman Beitrag anzeigen

          Ich habe aus deinem mitgeteilten Informationen so ein kleine funktion erstellt.
          PHP-Code:
          function wmsAuthSignTrennen($url)
          {
          $input = @file_get_contents($url) or die("Please try again later: $url");
          preg_match("/(http.*?wmsAuthSign\=[^\&">]+)/", $input$matches);
          $wmsAuthSignKv = parse_url($matches[1], PHP_URL_QUERY);
          $wmsAuthSign = explode('=', $wmsAuthSignKv);
          return 
          $wmsAuthSign[1];

          Um mir wmsAuthSign aus dem URL zu ermitteln. Dann füge ermittelte wmsAuthSign zu jeweilige real M3U8 URL. So etwa.

          PHP-Code:
          "http://95.216.46.88:8081/ronahitv/ronahi/chunks.m3u8?wmsAuthSign="wmsAuthSignTrennen("http://www.besta2.com/?kanal=ronahi") . "==\n"
          Das seltsame bzw was ich nicht verstehe, wenn ich Php-Datei, der M3U8 Liste erstellt, local ausführe, abspielen funktioniert mit VLC ohne Probleme. Wenn ich aber Datei auf Webserver Uploade und dort über IPTV(Amazon Fire Stick und Pixel Smart IPTV) aufrufe, funktioniert es nicht.
          Die M3U8 Liste wird zwar geladen, aber die Kanäle, mit der wmsAuthSign werden nicht abgespielt.
          Ich vermute die haben da eine AuthSign zu IP Zuweisung, versuche doch dein Script auf dem externen Server aufzurufen, damit quasi von deinem externen Server die wmsAUthSign kommt.
          apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

          Kommentar


          • #6
            Zitat von BlackScorp Beitrag anzeigen

            Ich vermute die haben da eine AuthSign zu IP Zuweisung, versuche doch dein Script auf dem externen Server aufzurufen, damit quasi von deinem externen Server die wmsAUthSign kommt.
            PHP Script liegt auf mein Homepage.
            Wie gesagt funktioniert lokal mit Xamp, aber wenn ich Script über Homepage aufrufe klappt nicht,
            Ich denke auch dass irgendwie wmsAuthSign in zusammenhang mit IP erstellt wird. Kann man wmsAuthSign encodieren und ein neue wmsAuthSign mit ein Fake IP erstellen bzw würde es so funktionieren können?

            Kommentar


            • #7
              Zitat von asiman Beitrag anzeigen

              PHP Script liegt auf mein Homepage.
              Wie gesagt funktioniert lokal mit Xamp, aber wenn ich Script über Homepage aufrufe klappt nicht,
              Ich denke auch dass irgendwie wmsAuthSign in zusammenhang mit IP erstellt wird. Kann man wmsAuthSign encodieren und ein neue wmsAuthSign mit ein Fake IP erstellen bzw würde es so funktionieren können?
              Moment, es kann ja sein dass der Script auf deiner Homepage einfach so nicht funktioniert, andere Einstellung oder andere PHP Version

              zum Beispiel dein code

              PHP-Code:
              preg_match("/(http.*?wmsAuthSign\=[^\&">]+)/", $input$matches); 
              ist Fehlerhaft


              PHP-Code:
              preg_match('/(http.*?wmsAuthSign\=[^\&">]+)/'$input$matches); 
              so wäre es richtig
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

              Kommentar


              • #8
                Zitat von BlackScorp Beitrag anzeigen
                PHP-Code:
                preg_match('/(http.*?wmsAuthSign\=[^\&">]+)/'$input$matches); 
                Ja richtig, funktioniert dennoch nicht, wenn ich von Webseite aus aufrufe.

                Kommentar


                • #9
                  "funktioniert nicht" ist keine brauchbare Fehlerbeschreibung. Was ergibt das Debugging?

                  Kommentar


                  • #10
                    Mit VLC wird anscheiend Stream Ort nicht gefunden, wenn ich PHP Datei von Webhost aufrufe.
                    Es funktioniert aber wenn local über XAMP aufrufe.

                    Habs VLC Meldungen angeschaut und steht diese hier drin.

                    PHP-Code:
                    ts errorlibdvbpsi error (PSI decoder): TS duplicate (received 0expected 1) for PID 0
                    ts error
                    libdvbpsi error (PSI decoder): TS duplicate (received 0expected 1) for PID 4097 
                    Wie gesagt es funktioniert einwandfrei, wenn ich gleich php über lokal/xamp aufrufe.

                    Kommentar


                    • #11
                      123456.PNG
                      Wenn ich PHP Datei direkt von Webhost aufrufe und mit VLC öffne, kommt obere fehlermeldung. Auf gleiche weise rufe ich von Xamp/Localhost funktioniert aber ohne fehler Meldug.

                      Und das steht in Fehlerprotokoll.

                      PHP-Code:
                      ts errorlibdvbpsi error (PSI decoder): TS duplicate (received 0expected 1) for PID 0
                      ts error
                      libdvbpsi error (PSI decoder): TS duplicate (received 0expected 1) for PID 4097 

                      Kommentar


                      • #12
                        In dem Fall solltest du dich an den Betreiber des Streams wenden.

                        Kommentar


                        • #13
                          Hi all, can i english screave on forum?

                          Kommentar

                          Lädt...
                          X