+ Responder ao Tópico



  1. #1
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão Bloquear a apenas 1 youtube por ip [RESOLVIDO para o site, leia]

    Ola pessoal, queria saber se existe alguma regra que bloqueasse a pessoa assistir apenas 1 video do youtube de cada vez, incluindo os compartilhados no orkut e em outros sites. Tem como?
    Última edição por osmano807; 28-09-2008 às 10:30.

  2. #2
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Citação Postado originalmente por osmano807 Ver Post
    Ola pessoal, queria saber se existe alguma regra que bloqueasse a pessoa assistir apenas 1 video do youtube de cada vez, incluindo os compartilhados no orkut e em outros sites. Tem como?
    Existe alguma maneira?



  3. #3
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Nenhuma solução?

  4. #4

    Padrão

    Amigo, impossivel ..........
    O youtube tem milhares de servidores.



  5. #5
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Aff, se fosse para isso...


    Bom, andei olhando os servidores, os vídeos são carregados em vXX.cache.googlevideo.com, onde XX é um número, já tentei por maxconn, mas se eu coloco 1 para bloquear mais de 1 conexão, fala que o vídeo está indisponível, se deixo normal, sem bloqueio, o vídeo carrega normalmente.

    Deve ter alguma solução para isso! Não é possível que ninguém nunca precisou disto.

  6. #6

    Padrão Se...

    Se alguem conseguir pode postar ai...pq esse sim eh o maior comedor de banda ja inventado...nao tem link que resita ao tal youtube...



  7. #7
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Cara, estou decidido mesmo a bloquear, estarei analizando o código da página do vídeo para ver o que posso fazer, talvez bloqueie por arquivo flv ou mime type.

  8. #8
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    No momento estou postando em outro fórum uma solução em php, mas ninguém ainda conseguiu.
    O que eu queria é que se o usuário já estiver acessando esta página em questão no meu servidor local, ele bloqueasse.
    Iria redirecionar o youtube para esta página.



  9. #9
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Já está quase pronto o código em php + javascript.

    Conteúdo do redirecionador.php

    Código PHP:
    <html>
    <?php
    //Efetua a conexão
    mysql_connect("localhost","***-user-****","****-senha-****");
    mysql_select_db("youtube");

    //Pega o ip
    $ip $_SERVER['REMOTE_ADDR'];


    //Verifica se o ip do usuário já se encontra
    $verif mysql_query ("SELECT ip FROM useronline WHERE ip = '$ip'");
    $evo mysql_num_rows($verif);

    //Se for encontrado, fala que o usuario ja esta ativo
    if ($evo "0"){
    echo 
    "Usuario ja assistindo youtube";
    //Caso não sejá encontrado ele insere o ip a url e o tempo
    } else {
    mysql_query("INSERT INTO useronline VALUES ('$ip')") or die("Database INSERT Error");
    echo (
    "
    <head>
    <Script Language=JavaScript>
    <!-- Hide
    function rusure() {
    window.open('deletador.php','page','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=100,height=100');  
    }
    // end hide -->
    </script>
    </head>"
    );
    }
    ?>



    <body onUnload="rusure();">




    </body>
    </html>
    Conteúdo do deletador.php

    Código PHP:
    <?php

    //Efetua a conexão
    mysql_connect("localhost","***-user-****","****-senha-****");
    mysql_select_db("youtube");

    //Pega o ip
    $ip $_SERVER['REMOTE_ADDR'];

    //Deleta os ips
    mysql_query("DELETE FROM `useronline` WHERE CONVERT(`useronline`.`ip` USING utf8) = '$ip' LIMIT 1") or die(mysql_error());
    //nao precisa.
    //$result=mysql_query("SELECT DISTINCT ip FROM useronline") or die("mysql_errno(");

    ?>

    Toda vez que o usuario acessar o redirecionador.php, ele verifica se o usuário já está ativo, se estiver, ele avisa falando que já está assistindo.
    Se o usuário (ip) não constar no DB, ele registra o usuário no DB, e insere um código javascript na página registrando o evento unload, que é o fechar da página, que executa o deletador.php, que deleta ip do usuário do DB quando a página for fechada.

    Agora só falta inserir os códigos para trabalhar com youtube.
    Vou ter que usar o url_rewriter, eu acho.

  10. #10
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Thumbs up

    Consegui, pelo menos só no site do youtube, os vídeos incorporados não funcionam (e.x. Orkut).
    Aí vai:

    Criei um DB no Mysql chamado youtube, com a tabela de nome useronline, com o campo ip vachar(40) e nulo não.

    Código :
    -- phpMyAdmin SQL Dump
    -- version 2.11.7
    -- http://www.phpmyadmin.net
    --
    -- Servidor: localhost
    -- Tempo de Geração: Set 28, 2008 as 10:26 AM
    -- Versão do Servidor: 5.0.51
    -- Versão do PHP: 5.2.6
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Banco de Dados: `youtube`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Estrutura da tabela `useronline`
    --
     
    CREATE TABLE IF NOT EXISTS `useronline` (
      `ip` varchar(40) NOT NULL,
      KEY `ip` (`ip`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --
    -- Extraindo dados da tabela `useronline`
    --
    A partir daí, fui desenvolver o redirecionador em php. Esse é o redirecionador:

    Código PHP:
    <html>
    <?php

    $body 
    '<body onUnload="rusure();">';
    $body2 "</body>";

    $meuip $_GET["cip"];
    $frutas $_GET["url"];
    $parte explode("watch?v="$frutas);
    //Efetua a conexão
    mysql_connect("localhost","***-user-***","***-senha-***");
    mysql_select_db("youtube");

    //Pega o ip
    //$ip = $_SERVER['REMOTE_ADDR'];


    //Verifica se o ip do usuário já se encontra
    $verif mysql_query ("SELECT ip FROM useronline WHERE ip = '$meuip'");
    $evo mysql_num_rows($verif);

    //Se for encontrado, fala que o usuario ja esta ativo
    if ($evo "0"){
    echo 
    "Usuario ja assistindo youtube";
    //Caso não sejá encontrado ele insere o ip a url e o tempo
    } else {
    mysql_query("INSERT INTO useronline VALUES ('$meuip')") or die(mysql_error());
    echo (
    "
    <head>
    <Script Language=JavaScript>
    <!-- Hide
    function rusure() {

    window.open('http://192.168.0.1/deletador3.php?cip=
    $meuip','page','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=100,height=100');
    }

    // end hide -->
    </script>
    </head> 
    $body <object width=100% height=100%><param name=movie value=http://www.youtube.com/v/$parte[1]></param><param name=allowFullScreen value=true></param><embed src=http://www.youtube.com/v/$parte[1] type=application/x-shockwave-flash allowFullScreen=true width=100% height=100%></embed></object> $body2");
    }
    ?>


    </html>
    O arquivo deletador3.php

    Código PHP:
    <?php

    //Efetua a conexão
    mysql_connect("localhost","***-user-***","***-senha-***");
    mysql_select_db("youtube");

    //Pega o ip
    //$ip = $_SERVER['REMOTE_ADDR'];
    $meuip $_GET["cip"];
    //DeLeta os ips
    mysql_query("DELETE FROM `useronline` WHERE CONVERT(`useronline`.`ip` USING utf8) = '$meuip' LIMIT 1") or die(mysql_error());
    //nao precisa.
    //$result=mysql_query("SELECT DISTINCT ip FROM useronline") or die("mysql_errno(");

    ?>
    ______________________________________________________________________________________________

    O funcionamento:

    Bom, usei o squidGuard para bloquear o tráfego das url
    youtube.com/watch?v=
    br.youtube.com/watch?v=
    de.youtube.com/watch?v=
    uk.youtube.com/watch?v=

    E redirecionar

    Código :
    dest youtube {
    urllist youblock/urls
    }
     
    acl {
     
    default {
    pass !youtube
    redirect http://192.168.0.1/redirector3.php?[B]cip=%a&url=%p[/B]
    }
    }
    Atenção especial para os cip=%a&url=%p, que serão responsáveis de passar o ip do usuário e a url do youtube para o redirecionador.

    O redirector3.php pega o ip e salva na variavel $meuip que será usada para verificar se o usuário já está ou não acessando algum vídeo do youtube.

    Aí, quando o usuário tentar acessar um vídeo do youtube, srá redirecionado para esta página, que coletará os dados do ip e da url, verificará se já está no DB, se estiver mostra o aviso que já está assistindo um vídeo, se não estiver mostra o vídeo no modo inserido na página, o que economiza mais banda de internet ainda.

    Aí, quando o usuário fechar a página, abrirá um popup que deletará o ip dele, para poder assistir outros vídeos. Quem puder ajudar, pois ainda não descobri um modo da página fechar sozinha quando o script de deletação terminar.


    Nota: Não funciona com vídeos inseridos nas páginas, muito menos com os do orkut. Pelo menos aqui não funcionou.

    Nota 2: Será necessário liberar o bloqueador de popups para os sites do youtube inseridos na lista do squidGuard.