im0turkish
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Binance
Isso é usável no Xenforo??
Siga o vídeo abaixo para ver como instalar nosso site como um aplicativo web na sua tela inicial.
Observe: Este recurso pode não estar disponível em alguns navegadores.
O pior que você pode fazer é comprar do Walter García, ele te vende e no mês que os produtos dele param de funcionar e você pede suporte, ele te ignora e jamais te dá uma solução, é um golpe com elewalter gacia vende, comprei dele e funciona direitinho
exatamente, golpista ele é. vende scripts que conseguiu de graça, não dá suporte porque não sabe como consertar já que não foi ele quem desenvolveuO pior que você pode fazer é comprar do Walter García, ele te vende e no mês que os produtos dele param de funcionar e você pede suporte, ele te ignora e jamais te dá uma solução, é um golpe com ele
por isso já não se pode pagar a ele por PayPal também, já que você pode abrir uma disputa, e ele acaba perdendo o dinheiro que ganhou aplicando golpesWalter garcia é um golpista, comprei um script dele que parou de funcionar em um mês e ele nunca me deu suporte, sempre com uma desculpa até que parou de responder minhas mensagens. O mais provável é que, se comprarem algum script dele, ele não vai conseguir dar suporte porque não é ele quem os programa.
Olá, você sabe como posso conseguir a versão pro deste script de forma segura?, ou poderia me explicar como é o processo para colocá-lo 😀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);
Não precisa de Frameworks.
Pode definir que a URL do Fembed seja definida por GET ou POST, isso fica a critério. (Este código só funciona com Fembed)
É possível adiantar o vídeo. 👍 (Graças ao sistema de rangos)
O que ele faz?
Baixa o vídeo do Fembed (na memória, não o salva) e vai passando para o usuário constantemente. (Proxy)
Só precisa copiar o código e salvá-lo como PHP. 👍
Pode usar hospedagem normal. (Embora talvez trave um pouco)
Vamos ver quem é o primeiro a dizer que funciona! (Ou que não 😂)
Podem adicionar um pouco de segurança com o seguinte:
![]()
Hacer una "lista negra" de Referers.
<?php $host = ''; $blackList = array( //SIN WWW 'google.com', 'youtube.com' ); if(isset($_SERVER['HTTP_REFERER'])) $host = str_replace('www.', '', parse_url($_SERVER['HTTP_REFERER'])['host']) ...forobeta.com
PS: editando-o, serve para outros servidores.
___________
![]()
Formulário para reproduzir vídeo do Fembed com Proxy
Usando el código PHP que publiqué en este tema: https://forobeta.com/temas/stream-de-fembed-php-gratis-proxy.766308/ Solo cambié: $url = 'https://feurl.com/v/kkxeds3jqnge83q'; Por: $url = $_GET['url']; Lo guardé y nombré fembed.php Puede adelantarse/atrasarse el video...forobeta.com
![]()
Reprodutor Proxy de "Google Storage" Grátis 😏
Hice otro tema creando un script para crear los reproductores: https://forobeta.com/temas/script-para-crear-players-gratis-google-storage-proxy.772155/#post-6398004 ____________ Similar al Stream Proxy que hice en este tema...forobeta.com
além de baixar o vídeo, para que outra coisa me serviria?Abraços, no meu tempo livre consegui desenvolver o seguinte, deixo aqui uma demo:
Linguagem: NodeJS
Servidor Dedicado: CONTABO
Domínio: Namecheap + Cloudflare
A Demo ficará pouco tempo online para evitar que abusem...
além de baixar o vídeo, para que outra coisa me serviria?
pode me passar? se não for um incômodo, por favoreu tenho basicamente, o cara modificou o projeto do gdplayer.top para que só funcione fembed
Em quanto tempo suspendem a conta?Abraços, no meu tempo livre consegui desenvolver o seguinte, deixo aqui uma demo:
Fembed:
Aos poucos estarei adicionando novos...
Linguagem: NodeJS
Servidor Dedicado: CONTABO
Domínio: Namecheap + Cloudflare
As Demos ficarão pouco tempo online para evitar que abusem...