Stream de Fembed ūüé¶ PHP gratis (Proxy)

Juanulter

Beta
Verificación en dos pasos desactivada
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
14 Oct 2021
Mensajes
68
Alguien tiene métricas de cuánto consume en vps con unas 3000 reproducciones al dia??
 

Dglbless

Curioso
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
12 Feb 2022
Mensajes
11
walter gacia lo vende, a el le compre y me funciona nitido
Lo peor que puedes hacer es comprarle a Walter García , te vende y al mes que ya no funcionan sus productos y pides soporte te ignora y jamás te da una solución , es una estafa con el
 

Armandolqr

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
11 Ago 2020
Mensajes
211
Lo peor que puedes hacer es comprarle a Walter García , te vende y al mes que ya no funcionan sus productos y pides soporte te ignora y jamás te da una solución , es una estafa con el
exactamente, estafadorcito es. vende scripts que consiguio gratis no le da soporte porque no sabe como repararlo ya que no fue el que los desarrollo
 

Armandolqr

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
11 Ago 2020
Mensajes
211
Walter garcia es un estafador, le compr√© un script el cual dejo de funcionar en un mes y nunca me dio soporte siempre una excusa hasta que dej√≥ de contestarme los mensajes. Lo m√°s probable es que si le compran alg√ļn script no le va a poder dar soporte porque no es √©l qui√©n los programa.
por eso ya no se le puede pagar por paypal tambien ya que podes reclamar, y sale perdiendo el dinero que gano estafando
 

rexarjdp

Curioso
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
14 Nov 2022
Mensajes
2
PHP:
<?php
error_reporting(0);

$fembedUrl = $_GET['url'];
$partSize = 3; //MB
$personalKey = 'sBBcAcKK123';  //Una clave para el token, la que quieran...

class xURL{
    public function __construct($cookies=NULL, $agent=NULL, $proxy=NULL){
        $this->resources = [];
        $this->SETOPT = array(
            'RETURNTRANSFER' => 1,
            'FOLLOWLOCATION' => 1,
            'SSL_VERIFYHOST' => 0,
            'SSL_VERIFYPEER' => 0,
            'CUSTOMREQUEST'  => 'GET',
        );
        $this->proxy = $proxy;
        if($cookies){
            $this->SETOPT['COOKIEJAR'] = $cookies;
            $this->SETOPT['COOKIEFILE'] = $cookies;
        }
        $this->SETOPT['USERAGENT'] = $agent;
    }

    public function cURLOPT($c=''){
        if(!$c) $c = $this->lastResource;
        curl_setopt_array($c, array_combine(array_map(function($k){ return constant('CURLOPT_'.$k); }, array_keys($this->SETOPT)), $this->SETOPT));
        return $this;
    }

    public function cURL($o=''){
        $this->lastResource = curl_init();
        if(!$this->firstResource) $this->firstResource = $this->lastResource;
        if($this->proxy){
            $proxyData = array_flip(explode('@', $this->proxy));
            $this->SETOPT['PROXY'] = $proxyData[0];
            if($pD[1]) $this->SETOPT['PROXYUSERPWD'] = $proxyData[1];
            if($this->URL) $this->SETOPT['URL'] = $this->URL;
            if(!$this->SETOPT['PROXYTYPE']) $this->SETOPT['PROXYTYPE'] = 'HTTP';
        }
        if($o) $this->ADDOPT($o);
        if(@$this->httpHeaders) curl_setopt($c, CURLOPT_HTTPHEADER, $this->httpHeaders);
        $this->resources[] = $this->lastResource;
        return $this;
    }

    public function browse($URL=NULL, $ref=NULL, $post=NULL){
        if($URL) $this->SETOPT['URL'] = $URL;
        if($ref) $this->SETOPT['REFERER'] = $ref;
        if($this->SETOPT['POSTFIELDS'] || $this->SETOPT['POSTFIELDS'] = $post){
            $this->SETOPT['POST'] = 1;
            $this->SETOPT['CUSTOMREQUEST'] = 'POST';
        }else{
            $this->SETOPT['POST'] = 0;
            unset($this->SETOPT['CUSTOMREQUEST']);
        }
        return $this->exec($this->cURL()->cURLOPT()->lastResource);
    }

    public function exec($c=''){
        if(!$c) $c = $this->lastResource;
        $this->result = curl_exec($c);
        return $this;
    }

    private function close($c){
        return curl_close($c);
    }

    public function getSize(){
        $s = $this->getHeader('Content-Range') ? explode('/', $this->getHeader('Content-Range')[1])[1] : $this->getHeader('Content-Length')[1];
        return $s;
    }

    public function searchHeader($h){
        foreach($this->headers AS $k => $v) if($e = explode(': ', $v) AND stristr($e[0], $h)) return array_map('trim', $e);
        return false;
    }

    public function getHeader($header=NULL, $follow=1){
        $this->cURL(
            array(
                'HEADER' => 1,
                'FOLLOWLOCATION' => $follow,
                //'NOBODY' => 1
                'RANGE' => '0-200'
            )
        );
        $this->headers = array_filter(array_map('trim', explode(PHP_EOL, $this->exec($this->cURLOPT()->lastResource)->result)));
        if($header) return $this->searchHeader($header);
        return $this;
    }

    private function flushBytes($c, $str){
        echo $str;
        $this->flush();
        return strlen($str);
    }

    public function flush(){
        ob_end_flush();
        ob_flush();
        flush();
        ob_start();
        return $this;
    }

    public function ADDOPT($a){
        $this->SETOPT = array_merge($this->SETOPT, $a);
        return $this;
    }

    function cmd($c){
        preg_match_all('/curl "[^"]+|-H "[^"]+|--[^"]+"[^"]+/', str_replace('^', '', str_replace('\^"', "'", $c)), $cmdInfo);
        $this->SETOPT['POSTFIELDS'] = '';
        foreach($cmdInfo[0] AS $curlInfo)
            !strstr($curlInfo, '--data')
                ?
                    strstr($curlInfo, '-H "')
                        &&
                    ($curlInfo = str_replace('-H "', '', $curlInfo))
                        &&
                    $this->headers[] = $curlInfo
                :
                    $this->SETOPT['POSTFIELDS'] = urldecode(preg_replace('/--[^"]+"/', '', $curlInfo))
        ;

        return $this->browse(str_replace('curl "', '', $cmdInfo[0][0]), '');
    }

    private function setRange($x, $r, $r2){
        $this->ADDOPT(
            array(
                'HEADER' => 0,
                'RANGE' => $r.'-'.$r2,
                'NOPROGRESS' => 0,
                'BUFFERSIZE' =>  $this->bufferSize,
                'TIMEOUT' => 0,
                'CONNECTTIMEOUT' => 0,
                'WRITEFUNCTION' => array($this, 'flushBytes')
            )
        );
        return $this->cURLOPT($x);
    }
 
    public function streamVideo($i=0, $end=NULL, $s = 0, $bf = 10240){
            $this->bufferSize = $bf;
            if(!$s) $s = $this->getSize();
            if(!$end) $end = $s;
            header('Content-Length:'.$end+1);
            $this->setRange($this->lastResource, $i, $end);
            $this->exec($curl);
    }
}


$size = isset($_COOKIE['size_FStream']) ? $_COOKIE['size_FStream'] : '';
$videoLocation = isset($_COOKIE['videoLocation_FStream']) ? $_COOKIE['videoLocation_FStream'] : '';
$token = isset($_COOKIE['token_FStream']) ? $_COOKIE['token_FStream'] : '';

if(isset($_GET['reset']) OR $token != md5($size.$videoLocation.$personalKey)){
    $xURL = new xURL('cookies.txt', $_SERVER['HTTP_USER_AGENT']);

    $host = str_ireplace('www.', '', parse_url($fembedUrl)['host']);

    preg_match('/v\/([a-z0-9-]+)/', $fembedUrl, $fembedId);

    $xURL->cmd('curl "https://'.$host.'/api/source/'.$fembedId[1].'" -H "authority: '.$host.'" -H "accept: */*" -H "origin: '.$host.'" -H "x-requested-with: XMLHttpRequest" -H "user-agent: '.$_SERVER['HTTP_USER_AGENT'].'" -H "content-type: application/x-www-form-urlencoded; charset=UTF-8" -H "sec-fetch-site: same-origin" -H "sec-fetch-mode: cors" -H "referer: https://'.$host.'/v/'.$fembedId.'" -H "accept-language: es-ES,es;q=0.9" --data "r=^&d='.$host.'" --compressed');

    $videoData = json_decode($xURL->result);
    $xURL = new xURL('cookies.txt', $_SERVER['HTTP_USER_AGENT']);
    $videoLocation = $videoData->data[count($videoData->data)-1]->file;
    $xURL->SETOPT['URL'] = $videoLocation;

    $size = $xURL->getSize();
    $token = md5($size.$videoLocation.$personalKey.$fembedUrl);
    setcookie('videoLocation_FStream', urlencode($videoLocation), time()+7200);
    setcookie('size_FStream', $size, time()+7200);
    setcookie('token_FStream', $token, time()+7200);
}else{
    $xURL = new xURL('cookies.txt', $_SERVER['HTTP_USER_AGENT']);
}

if($_SERVER['HTTP_RANGE'])
    $rangeReceived = explode('-', explode('=', $_SERVER['HTTP_RANGE'])[1]);
;

$beginReceived = preg_replace("/[^0-9](.*)$/", '', $rangeReceived[0]);

$endReceived = preg_replace("/[^0-9](.*)$/", '', $rangeReceived[1]);

$begin = $beginReceived OR $begin = 0;

$end = $endReceived OR $end = 1024*1024*$partSize+$begin;

$begin > 0 || $end < $size
    ?
        header('HTTP/1.0 206 Partial Content')
    :
        header('HTTP/1.0 200 OK')
;

$length = $end-$begin+1;
header("Content-Length: $length");
header("Content-Type: video/mp4");
header('Accept-Ranges: bytes');
header("Content-Transfer-Encoding: BINARY");
header("Content-Disposition: inline");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header('Connection: close');

header("Content-Range: bytes $begin-$end/$size");

$xURL->SETOPT['URL'] = $videoLocation;
$xURL->streamVideo($begin, $end, $size, 10240);

No necesita Frameworks.

Pueden poner que la URL de Fembed se defina por GET o POST, eso queda a criterio. (Este código, solo funciona con Fembed)

Se puede adelantar el video. ūüĎć (Gracias al sistema de rangos)

¬ŅQu√© hace?
Descarga el video de Fembed (en memoria, no lo guarda) y lo va pasando al usuario constantemente. (Proxy)

Solo hay que copiar el c√≥digo y guardarlo como PHP. ūüĎć

Se puede usar hosting normal. (Aunque quiz√°s se pare un poco)


¬°A ver quien es el primero que dice que funciona! (O que no ūüėā)



Pueden agregarle un poco de seguridad con lo siguiente:

PD: edit√°ndolo, sirve para otros servidores.


___________

Hola tu sabes como puedo conseguir la version pro de este scrip de forma segura?, o me podrias explicar como se hace el proceso para ponerlo :D
 

misa3l

Curioso
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
14 Ago 2019
Mensajes
13
Saludos, en mi tiempo libre logre desarrollar lo siguiente les dejo demo:

Fembed:

Ya poco a poco estaré agregando nuevos...

Lenguaje: NodeJS
Servidor Dedicado: CONTABO
Dominio: Namecheap + Cloudflare

Los Demos estar√°n poco tiempo online para evitar q abusen...
 
Última edición:

Turkero

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
7 Ago 2008
Mensajes
260

misa3l

Curioso
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Usuario con pocos negocios! ¬°Utiliza siempre saldo de Forobeta!
Desde
14 Ago 2019
Mensajes
13
aparte de descargar el video para que otra cosa me serviria?

Es para obtener la url del mp4 del video, de all√≠ puedes descargarlo o usarlo en alg√ļn reproductor personalizado.
 
Última edición:

moiseseccam

Pi
Verificado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¬°Ha verificado su Paypal!
Desde
5 Mar 2013
Mensajes
5.993
Saludos, en mi tiempo libre logre desarrollar lo siguiente les dejo demo:

Fembed:

Ya poco a poco estaré agregando nuevos...

Lenguaje: NodeJS
Servidor Dedicado: CONTABO
Dominio: Namecheap + Cloudflare

Los Demos estar√°n poco tiempo online para evitar q abusen...
¬ŅEn cu√°nto tiempo suspenden la cuenta?
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¬°Informaci√≥n premium y m√°s!

Acceder

¬ŅYa tienes una cuenta? Accede aqu√≠

Arriba