Error en reproductor de video en ciertos dispositivos

  • Autor Autor aex studio
  • Fecha de inicio Fecha de inicio
aex studio

aex studio

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola Betas tengo un scraper del sitio de Streamtape.com en el cual se pueden alojar videos. Necesito su ayuda con un Error y es que este error solo ocurre en ciertos dispositivos por lo que no puedo conocer concretamente como solucionarlo, aunque creo que el error se debe al Ip ya que la petición la hace el servidor y no el usuario como tal
Aquí el Link que tendría que funcionar pero reitero funciona en ciertos dispositivos

Codigo:

$filelink='https://strtpe.link/e/'.$_GET['v'].'';
if (strpos($filelink,"strtpe.link") !== false) {
$head=array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language: ro-RO,ro;q=0.8,en-US;q=0.6,en-GB;q=0.4,en;q=0.2',
'Accept-Encoding: deflate',
'Connection: keep-alive',
'Upgrade-Insecure-Requests: 1');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $filelink);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_HTTPHEADER,$head);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 25);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$h = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$h=str_replace("\\","",$h);
if (preg_match('/(\/\/[\.\d\w\-\.\/\\\:\?\&\#\%\_\,]*(\.(srt|vtt)))/', $h, $s))
$srt="https:".$s[1];

if (preg_match_all("/\(\'\w+\'\)\.innerHTML\s*\=\s*(.*?)\;/",$h,$m)) {
$e1=$m[1][count($m[1])-1];
$e1=str_replace("'",'"',$e1);
$d=explode("+",$e1);
$out="";
for ($k=0;$k<count($d);$k++) {
$s=trim($d[$k]);
preg_match("/\(?\"([^\"]+)\"\)?(\.substring\((\d+)\))?(\.substring\((\d+)\))?/",$s,$p);
if (isset($p[3]) && isset($p[5]))
$out .=substr(substr($p[1],$p[3]),$p[5]);
elseif (isset($p[3]))
$out .=substr($p[1],$p[3]);
else
$out .=$p[1];
}
$link=$out;
$link .= "&stream=1";
if ($link[0]=="/") $link="https:".$link;
}
}
 
El error que estás experimentando puede deberse a varias razones, como por ejemplo una conexión de red inestable o un problema en el servidor del sitio de Streamtape.com. Sin embargo, es posible que se deba a un problema con la dirección IP desde la que se está haciendo la petición.

Para solucionar el problema, puedes probar lo siguiente:

1. Asegúrate de que la dirección IP que se está utilizando no está en una lista negra o bloqueada por el sitio de Streamtape.com.
2. Prueba a cambiar la dirección IP desde la que se está haciendo la petición, por ejemplo utilizando una red VPN o un servicio de proxy.
3. Si ninguna de las opciones anteriores funciona, contacta con el soporte técnico de Streamtape.com para obtener más información sobre posibles problemas en el servidor o restricciones en las peticiones.
 
¿En qué dispositivos? Puedes ser mas específico?
 
Dispositivos con Ip fijo por ejemplo una computadora y por lo general me falla en todos los dispositivos móviles
¿Entiendes el código? La variable $ua no tiene inicialización.
Cámbiala por $_SERVER['HTTP_USER_AGENT'], en teoría el user-agent del dispositivo inicial.
 
Si eso no funciona, entonces es que el CDN al que se conecta tu servidor para obtener el link directo no tiene permitida la lectura desde ciertas IP.
 
Si eso no funciona, entonces es que el CDN al que se conecta tu servidor para obtener el link directo no tiene permitida la lectura desde ciertas IP.
Se podría enmascarar el ip?
 
Se podría enmascarar el ip?
Tu código no hace proxy, solo bota un link para que algún reproductor lo muestre.

Podrías hacer que tu vídeo se aloje en memoria y luego pasarlo a los usuarios finales como aquí:
 
Tu código no hace proxy, solo bota un link para que algún reproductor lo muestre.

Podrías hacer que tu vídeo se aloje en memoria y luego pasarlo a los usuarios finales como aquí:
Guardando el video en Memoria funciona sin embargo tengo un detalle y es que no se mucho de PHP pero como hago para almacenar 2mb de video de forma dinámica, para que no traiga todo el video y luego genere el stream

Asi fue como acomode el Código pero no se como hacer que el curl_setopt($hc, CURLOPT_RANGE, "0-2097151") sea dinamico
<?php
$filelink='https://strtpe.link/e/'.$_GET['v'].'';
if (strpos($filelink,"strtpe.link") !== false) {
$head=array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language: ro-RO,ro;q=0.8,en-US;q=0.6,en-GB;q=0.4,en;q=0.2',
'Accept-Encoding: deflate',
'Connection: keep-alive',
'Upgrade-Insecure-Requests: 1');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $filelink);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_HTTPHEADER,$head);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 25);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$h = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$h=str_replace("\\","",$h);
if (preg_match('/(\/\/[\.\d\w\-\.\/\\\:\?\&\#\%\_\,]*(\.(srt|vtt)))/', $h, $s))
$srt="https:".$s[1];

if (preg_match_all("/\(\'\w+\'\)\.innerHTML\s*\=\s*(.*?)\;/",$h,$m)) {
$e1=$m[1][count($m[1])-1];
$e1=str_replace("'",'"',$e1);
$d=explode("+",$e1);
$out="";
for ($k=0;$k<count($d);$k++) {
$s=trim($d[$k]);
preg_match("/\(?\"([^\"]+)\"\)?(\.substring\((\d+)\))?(\.substring\((\d+)\))?/",$s,$p);
if (isset($p[3]) && isset($p[5]))
$out .=substr(substr($p[1],$p[3]),$p[5]);
elseif (isset($p[3]))
$out .=substr($p[1],$p[3]);
else
$out .=$p[1];
}
$link=$out;
$link .= "&stream=1";
if ($link[0]=="/") $link="https:".$link;
}
}


$hc = curl_init($link);

// Configurar las opciones de cURL
curl_setopt($hc, CURLOPT_RETURNTRANSFER, true);
curl_setopt($hc, CURLOPT_HEADER, false);
curl_setopt($hc, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($hc, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($hc, CURLOPT_RANGE, "0-2097151");


$content = curl_exec($hc);
header("Content-Type: video/mp4");
header("Content-Length: " . strlen($content));

echo $content;

// Cerrar la sesión cURL
curl_close($hc);


?>
 
Tu código no hace proxy, solo bota un link para que algún reproductor lo muestre.
Además, No se a que se deba que al hacer stream no puedo adelantar o atrasar el Video
 
Además, No se a que se deba que al hacer stream no puedo adelantar o atrasar el Video
Tienes que poner el header de HTTP/1.0 206 Partial Content
Ademas tener un sistema de rangos como en ejemplo que te mandé.
 
Te puedo orientar a hacerlo de una forma mas facil por un modico precio :3
 
prueba asi


<?php
$filelink='https://strtpe.link/e/'.$_GET['v'].'';
if (strpos($filelink,"strtpe.link") !== false) {
$head=array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Language: ro-RO,ro;q=0.8,en-US;q=0.6,en-GB;q=0.4,en;q=0.2',
'Accept-Encoding: deflate',
'Connection: keep-alive',
'Upgrade-Insecure-Requests: 1');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $filelink);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_HTTPHEADER,$head);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 25);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$h = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$h=str_replace("\\","",$h);
if (preg_match('/(\/\/[\.\d\w\-\.\/\\\:\?\&\#\%\_\,]*(\.(srt|vtt)))/', $h, $s))
$srt="https:".$s[1];

if (preg_match_all("/\(\'\w+\'\)\.innerHTML\s*\=\s*(.*?)\;/",$h,$m)) {
$e1=$m[1][count($m[1])-1];
$e1=str_replace("'",'"',$e1);
$d=explode("+",$e1);
$out="";
for ($k=0;$k<count($d);$k++) {
$s=trim($d[$k]);
preg_match("/\(?\"([^\"]+)\"\)?(\.substring\((\d+)\))?(\.substring\((\d+)\))?/",$s,$p);
if (isset($p[3]) && isset($p[5]))
$out .=substr(substr($p[1],$p[3]),$p[5]);
elseif (isset($p[3]))
$out .=substr($p[1],$p[3]);
else
$out .=$p[1];
}
$link=$out;
$link .= "&stream=1";
if ($link[0]=="/") $link="https:".$link;
}
}
?>
me funciona a mi mira
 
prueba asi


<?php
$filelink='https://strtpe.link/e/'.$_GET['v'].'';
if (strpos($filelink,"strtpe.link") !== false) {
$head=array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Language: ro-RO,ro;q=0.8,en-US;q=0.6,en-GB;q=0.4,en;q=0.2',
'Accept-Encoding: deflate',
'Connection: keep-alive',
'Upgrade-Insecure-Requests: 1');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $filelink);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_HTTPHEADER,$head);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 25);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$h = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$h=str_replace("\\","",$h);
if (preg_match('/(\/\/[\.\d\w\-\.\/\\\:\?\&\#\%\_\,]*(\.(srt|vtt)))/', $h, $s))
$srt="https:".$s[1];

if (preg_match_all("/\(\'\w+\'\)\.innerHTML\s*\=\s*(.*?)\;/",$h,$m)) {
$e1=$m[1][count($m[1])-1];
$e1=str_replace("'",'"',$e1);
$d=explode("+",$e1);
$out="";
for ($k=0;$k<count($d);$k++) {
$s=trim($d[$k]);
preg_match("/\(?\"([^\"]+)\"\)?(\.substring\((\d+)\))?(\.substring\((\d+)\))?/",$s,$p);
if (isset($p[3]) && isset($p[5]))
$out .=substr(substr($p[1],$p[3]),$p[5]);
elseif (isset($p[3]))
$out .=substr($p[1],$p[3]);
else
$out .=$p[1];
}
$link=$out;
$link .= "&stream=1";
if ($link[0]=="/") $link="https:".$link;
}
}
?>
me funciona a mi mira
Se queda congelado en negro

Screenshot_1.jpg


Cross-Origin Read Blocking (CORB) ha bloqueado la respuesta de orígenes cruzados https://strtpe.link/get_video?id=RB...ip=GRIsD0AZKxSHDN&token=kZt6vgqExwsQ&stream=1
 
Atrás
Arriba