Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
convertire media sn|ff3r in web script
#91
La prima riga è quello di controllo degli errori di cURL e significa che non ci sono errori.

Il warning dice che non riconosce il tag "section" (non riconosce i nuovi tag di HTML5). Per risolvere modifica in questo modo:
Codice PHP:
if ($doc->loadHTML($htmlLIBXML_NOWARNING)) { 

Il notice e il fatal error sono dovuti al fatto che avevo sbagliato a scrivere il nome della variabile $doc e avevo scritto $dom. Per risolvere modifica in questo modo:
Codice PHP:
$videos $doc->getElementsByTagName('video'); 
Mattia!
Cita messaggio
#92
continua a darmi il primo errore:
Citazione:string(0) ""
Warning: DOMDocument::loadHTML(): Tag section invalid in Entity, line: 37 in /home/jo1sy1qs/public_html/prova_video.php on line 25
Il video non è stato trovato
Cita messaggio
#93
Ti continua a dare il warning perché è un bug di PHP che è stato risolto, ma sul tuo server c'è una versione vecchia di PHP.

Comunque nella riga dopo l'if prova a inserire:
Codice PHP:
var_dump($html); 

Ti dovrebbe stampare il codice HTML della pagina. Così vediamo se lo carica correttamente.
Mattia!
Cita messaggio
#94
ecco quello che viene visualizzato:
Citazione:string(0) ""
Warning: DOMDocument::loadHTML(): Tag section invalid in Entity, line: 37 in /home/jo1sy1qs/public_html/prova_video.php on line 25
string(3059) "
Please enable cookies.
Error 1008 Ray ID: 40e13941ab5c6b7f • 2018-04-19 17:52:13 UTC
Access denied
What happened?
The owner of this website (wstream.video) has banned your IP address (185.2.4.48).

Cloudflare Ray ID: 40e13941ab5c6b7f • Your IP: 185.2.4.48 • Performance & security by Cloudflare

" Il video non è stato trovato
Cita messaggio
#95
Nel codice HTML che restituisce c'è scritto che è stato bannato l'IP del tuo server da Cloudflare e quindi non ti fa vedere il codice HTML effettivo del sito.

Potresti provare a modificare le opzioni in questo modo passandogli l'user agent del tuo browser.
Codice PHP:
curl_setopt_array($ch, array(
    
CURLOPT_RETURNTRANSFER => 1,
    
CURLOPT_URL => 'https://wstream.video/',
    
CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT']
)); 
Mattia!
Cita messaggio
#96
continua a darmi lo stesso errore:
Citazione:string(0) ""
Warning: DOMDocument::loadHTML(): Tag section invalid in Entity, line: 37 in /home/jo1sy1qs/public_html/prova_video.php on line 26
string(3059) "
Please enable cookies.
Error 1008 Ray ID: 40e852413f1006ee • 2018-04-20 14:32:37 UTC
Access denied
What happened?
The owner of this website (wstream.video) has banned your IP address (185.2.4.48).

Cloudflare Ray ID: 40e852413f1006ee • Your IP: 185.2.4.48 • Performance & security by Cloudflare

" Il video non è stato trovato
Cita messaggio
#97
Sembrerebbe che ormai l'IP di quel server sia bannato. Dovresti fare la prova con un altro server (solo un tentativo, altrimenti bannano per quello) o aspettare qualche giorno sperando che l'IP venga tolto dal ban.
Mattia!
Cita messaggio
#98
ho provato su un altro server e mi da questo errore (e sotto l'errore viene visualizzata la pagina wstream (ti allego screen per farti capire):
Citazione:string(0) "" Warning: DOMDocument::loadHTML(): Attribute id redefined in Entity, line: 95 in /htdocs/public/www/prova_video.php on line 26 Warning: DOMDocument::loadHTML(): Tag video invalid in Entity, line: 95 in /htdocs/public/www/prova_video.php on line 26 Warning: DOMDocument::loadHTML(): Tag source invalid in Entity, line: 96 in /htdocs/public/www/prova_video.php on line 26 Warning: DOMDocument::loadHTML(): Tag video invalid in Entity, line: 110 in /htdocs/public/www/prova_video.php on line 26 Warning: DOMDocument::loadHTML(): Tag source invalid in Entity, line: 111 in /htdocs/public/www/prova_video.php on line 26 Warning: DOMDocument::loadHTML(): Tag footer invalid in Entity, line: 116 in /htdocs/public/www/prova_video.php on line 26 Warning: DOMDocument::loadHTML(): ID container already defined in Entity, line: 117 in /htdocs/public/www/prova_video.php on line 26 string(5101) "


Allegati Anteprime
   
Cita messaggio
#99
Da quello che si vede, riceve il codice HTML della pagina.
Nella parte nascosta in basso dovrebbe dire se riesce o meno a trovare il video.
Mattia!
Cita messaggio
hai ragione, in fondo mi stampa il link del video! Smile
Adesso vorrei capire però come fare con le altre pagine della stessa piattaforma, tipo questa! In questo caso il link (in realtà sono due di due risoluzioni diverse) si vede già nel codice senza premere play, solo che a differenza della home sembra sia in javascript, e si trova dentro lo script di type text/javascript:
Codice:
<script type='text/javascript'>var player = new Clappr.Player({

sources:
e qui ci sono i due link dei file dalle risoluzioni differenti)

Per questa tipologia di pagina come bisognerebbe sistemare il codice?
Cita messaggio
Ho visto che nel codice ci sono due dischiarazioni dei file MP4 e la seconda è quella che viene utilizzata effettivamente.
In questo caso si dovrebbe utilizzare un'espressione regolare, ma, appena faranno qualche piccola modifica al codice HTML, non sarà più valida.
Codice PHP:
// Verifico che il codice HTML sia stato recuperato correttamente
if ($html !== false) {
    
$m = array();
    
// Cerco tutti i "sources: [..]"
    
if (preg_match_all('/sources:([\s]+?)\[([^\]]+)]/'$html$m) {
        
// Prendo l'ultimo elemento trovato con l'espressione regolare tra le stringhe trovate tra le due parentesi quadre
        
$videos explode(','end($m[2]));
        
        
// Recupero il primo video eliminando spazi iniziali e finali e poi virgolette iniziali e finali
        
$src trim(trim($videos[0]), '"');
    }

Mattia!
Cita messaggio
questa parte la devo aggiungere al codice esistente, oppure deve sostituire tutta la parte del richiamo della libreria dom e della ricerca del tag video?
(l'ideale sarebbe far convivere entrambi i controlli, così lo script in un caso o nell'altro esporta il link del video)
Cita messaggio
Prima utilizzo il metodo per cercare i tag "video". Se non viene trovato nessun video, utilizza il metodo per cercare i "sources" della classe di JavaScript.
Codice PHP:
// Verifico che il codice HTML sia stato recuperato correttamente
if ($html !== false) {
    
// Utilizzo la libreria DOM di PHP per gestire il codice HTML
    
$doc = new DOMDocument();

    
// Assegno il codice HTML alla classe e verifico che il codice HTML sia corretto
    
if ($doc->loadHTML($htmlLIBXML_NOWARNING)) {
        
// Cerco tutti i tag "video"
        
$videos $doc->getElementsByTagName('video');

        
// Scorro i tag "video"
        
foreach ($videos as $video) {
            
// Scorro i tag figli
            
foreach ($video->childNodes as $node) {
                
// Cerco il tag "source"
                
if ($node->nodeName == 'source') {
                    
// Verifico che il tag "source" abbia degli attributi
                    
if ($node->attributes) {
                        
// Estraggo il valore dell'attributo "src" dal tag "source"
                        
$src $node->attributes->getNamedItem('src')->nodeValue;
                        
// Fermo il ciclo se è stato trovato il video
                        
if ($src) {
                            break;
                        }
                    }
                }
            }
            
// Fermo il ciclo se è stato trovato il video
            
if ($src) {
                break;
            }
        }
    }
    
    
// Se non è stato trovato il video con il metodo precedente...
    
if (!$src) {
        
$m = array();
        
// Cerco tutti i "sources: [..]"
        
if (preg_match_all('/sources:([\s]+?)\[([^\]]+)]/'$html$m) {
            
// Prendo l'ultimo elemento trovato con l'espressione regolare tra le stringhe trovate tra le due parentesi quadre
            
$videos explode(','end($m[2]));

            
// Recupero il primo video eliminando spazi iniziali e finali e poi virgolette iniziali e finali
            
$src trim(trim($videos[0]), '"');
        }
    }

Mattia!
Cita messaggio
mi da errore:
Citazione:Parse error: syntax error, unexpected '{' in /htdocs/public/www/prova_video.php on line 58
e nella riga 58 c'è questo:
Codice:
if (preg_match_all('/sources:([\s]+?)\[([^\]]+)]/', $html, $m) {
Cita messaggio
Ho dimenticato di chiudere la parentesi dell'if prima di aprire la parentesi graffa.
Mattia!
Cita messaggio
ok, effettivamente in questo modo mi visualizza un link (che però non corrisponde a nessuno dei due che vedo dal sorgente) e se effettivamente provo ad andare al link mi dice
Citazione:error_wrong_ip
mentre nei link che copio dal sorgente mi va al video senza problemi.

Inoltre refreshando la pagina dallo script mi da sempre un link differente, mentre se chiudo e riapro il sorgente i link sono gli stessi...
Cita messaggio
Se chiudi e riapri il sorgente, il codice è sempre lo stesso. Dovresti chiudere il sorgente, aggiornare la pagina e riaprire il sorgente.
Comunque credo che il problema sia dato dal fatto che quel sito genere un link al video per ogni indirizzo IP che lo visualizza e poi fa il controllo dell'indirizzo IP quando si guarda/scarica il video. In questo caso genera un link al video per l'indirizzo IP del server e, quando provi a vedere il video, ti dà errore perché il tuo IP è diverso da quello del server.
Mattia!
Cita messaggio
e non c'è modo di farlo dall'ip del browser/dispositivo anzichè dal server?
Cita messaggio
Potresti provare a inserire tra le opzioni della connessione in cURL anche l'indirizzo IP del visitatore della pagina, ma non so se possa funzionare.
Codice PHP:
curl_setopt_array($ch, array(
    
CURLOPT_RETURNTRANSFER => 1,
    
CURLOPT_URL => 'https://wstream.video/',
    
CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],
    
CURLOPT_INTERFACE => $_SERVER['REMOTE_ADDR']
)); 
Mattia!
Cita messaggio
nada:
Citazione:string(58) "bind failed with errno 99: Cannot assign requested address" Il video non è stato trovato

resta il fatto che il sito che ti ho linkato quando ho riaperto questo post (dexi.io), fa esattamente quello che mi serve. Basta fare login con facebook, creare un nuovo robot, inserire il link della pagina e attendere qualche secondo finchè non visualizza il link corretto del video (col ip del browser evidentemente).
Cita messaggio
Immaginavo che la nuova opzione non funzionasse, ma era per fare un tentativo.

Probabilmente dexi.io utilizza un simulatore di browser o qualcosa del genere.
Mattia!
Cita messaggio
quindi dovrei rassegnarmi? Deve esserci una soluzione! Sad
Cita messaggio
Per questo sito è quasi impossibile riuscire a recuperare il video, perché utilizza tanti escamotage per evitarlo.
Mattia!
Cita messaggio
in realtà è forse l'unico che lo mostra nel codice... per questo vorrei riuscire almeno con questo!
Cita messaggio
Il problema è che l'indirizzo del file del video che mostra cambia ogni volta per ogni visitatore.
Mattia!
Cita messaggio
si, questo è chiaro, e mi sta pure bene! Però deve essere possibile ovviare il problema dell'indirizzo del server, rispetto all'indirizzo del browser... immaginati che questo script non stia necessariamente su un server ma incapsulato in una webapp che esporta il link del video in base al browser che utilizzano webapp/device .... non so se mi spiego
Se ipoteticamente lo script è in una webapp, non potrebbe utilizzare l'indirizzo del browser del device ed ottenere il link corretto?
Cita messaggio
Se si crea una pagina con all'interno un iframe con la pagina del video, non è possibile accedere ai dati della pagina inclusa perché si tratta di un dominio diverso (viene bloccato dal browser per evitare problemi di cross-site scripting).

Cosa intendi per webapp?
Mattia!
Cita messaggio
con webapp intendo uno script in html5+php in grado di svolgere le operazioni che dicevo tramite il dispositivo mobile dal quale si utilizza (lo smartphone).
Es. io admin da un cms inserisco la pagina con iframe dentro allo script che dovrebbe estrapolare il video. Ma in realtà sarà l'utente, quando cliccherà sul nome di quel video, a sniffare realtime il video e a vederlo... dal suo browser e dispositivo...nn so se mi spiego...
Cita messaggio
Come ho scritto prima non si può leggere il contenuto di un iframe se contiene un sito con dominio diverso.
Mattia!
Cita messaggio
Ma scusa, sulla webapp non si puo inserire un simultore di browser come per dexi.io?
Cita messaggio


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  convertire video stream in diretta facebook Chandler 7 13.701 07/06/2017 13:00
Ultimo messaggio: Mattia

Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)