Codex

(redirecionado de Necromonger.FHRenatoSaraiva)

Nossos problemas técnicos foram sanados e muito em breve vamos terminar este tutorial.

Agradecemos a sua paciência.


Em breve turotial COMPLETO sobre como salvar ou baixar vídeos, de sites que permitam tal atividade, de servidores Fms, Adobe e outros.

Um tutorial passo a passo, com vídeos e imagens para que você entenda todo o processo de baixar vídeos de qualquer site que permita tal atividade.


Parte legal

Lembre-se, você deve ler as informações contidas no "aviso legal", "termos de serviço" ou qualquer outra página ou recurso com informações equivalentes, do site que fornece os vídeos, para não cometer nenhuma atividade fora de contrato ou ilegal ou sem permissão, ou ainda alguns ou todos os atos previamente citados, e é de sua inteira responsabilidade se o fizer, em todas as esferas cabíveis.

Não nos responsabilisamos por qualquer atividade fora de contrato ou de qualquer maneira ilegal ou não autorizada, cometidas por você, que involvam ou não as informações contidas neste tutorial.

Afirmamos para os devidos fins, que você não deve de nenhuma maneira seguir os passos desse tutorial, para atingir qualquer feito ou efeito e que é de sua inteira responsabilidade se o fizer, em todas as esferas cabíveis.

Não aprovamos o mal uso das informações contidas aqui, para qualquer fim, por qualquer pessoa ou organização.

Seja moral!


Requisitos

Para pode seguir acompanhando o desenvolvimento deste tutorial é importante que você satisfaça alguns requisitos importantes:

  • Você deve ter um computador
  • você deve ter um browser (firefox ou chrome) (windows ou unix)
  • Você deve ter instalado no seu computador o pacote rtmpdump (windows ou unix)
  • Você deve ter instalado no seu windows o pacote cygwin
  • Você deve ter na sua instalação cygwin o pacote rtmpdump
  • Você deve ter instalado no seu computador o pacote wget (unix, windows ou cygwin)
  • Você deve ter instalado no seu computador o pacote wireshark (unix ou windows)

Os browsers servem para navegar nas páginas na internet, e você já sabe disso, o que talvez não saiba é que os browsers de nova geração nos permitem ver o código dinâmico criado por javascript e de grande importância para descobrir o endereço dos streams e arquivos de video que se encontram escondidos por essa técnica.

No windows o binário nativo do rtmpdump (feito e construido para rodar no windows) tem dificuldade de fazer o download de alguns streams que contenham caracteres especiais.

Já versão do rtmpdump construida para o cygwin ou unix, não possui essas restrições.

O pacote wireshark serve para ver a comunicação entre os players e os servidores de stream e http, isolando essas comunicações seremos capazes de observar todos os parâmetros necessários para liberação do download do stream ou arquivo.

Segue a lista de links para os pacotes mencionados, os links para unix não serão informados devido a grande quantidade de distribuições diferentes e também de repositórios de aplicativos.


Visão Geral

Para baixar vídeos de qualquer servidor independentemente do tipo, necessitamos primeiramente de duas coisas fundamentais que são o endereço do servidor onde se encontra o vídeo e o nome do vídeo ou stream e sem esses dois itens fica impossível fazer o download.

O nome do servidor mais o nome do stream, formam o endereço do stream ou endereço do arquivo de video.

O endereço do video ou stream estará escrito dentro de uma página html, que será entregue para o player feito com Flash e então o player irá se comunicar com o servidor para liberar o download e depois disso o player irá tocar o stream ou arquivo de video.

Nem sempre o endereço do stream está facilmente disponível para se copiar, mas existem alguns meios de tornar o endereço visível em algumas páginas dinâmicas e você irá aprender isso em breve.

Para baixar um vídeo de um servidor http, é muito simples, basta saber o endereço do video, apontar o browser para este endereço e em breve se inicia o download.

Para baixar um stream, que normalmente vem com a palavra "rtmp" ou "rtmpe" na frente do endereço, que indica o protocolo usado - pode ter protocolo http também - precisamos de aplicativos especiais que estaremos falando mais tarde aqui, sobre como baixar e usar.

Muitas vezes o player ou aplicativo flash passa informação adicional para o servidor de stream ou servidor web, para liberar o envio do vídeo ou stream e ensinaremos a descobrir como é feita essa comunicação, como você pode observá-la e usá-la..

Depois de ler o tutorial até o fim você será capaz de baixar streams e vídeos de qualquer servidor que lhe permita.


Nome dos arquivos

É muito importante que saibamos o endereço do stream ou vídeo que queiramos fazer o download, sem este é impossível baixar o arquivo ou stream.

Normalmente em servidores rtmp, temos o endereço do servidor mais o caminho ou app, e finalmente o nome do stream, na seguinte forma:

rtmp://nome_do_servidor:porta/nome_do_app/nome_do_stream

um exemplo mais claro seria:

rtmp://www.exemplo.com.br/videos_do_jose/jose_vai_a_praia.mp4

Algumas vezes os servidores de stream utilizam o protocolo http também, na seguinte forma

http://www.exemplo.com.br/videos_do_jose/jose_vai_a_praia.mp4

Alguns parâmetros são necessários que sejam enviados junto com o endereço do stream, deixando o endereço na seguinte forma:

http://www.exemplo.com.br/videos_do_jose/jose_vai_a_praia.mp4?fp=win 11,1,2&tculr=

ou ainda :

rtmp://www.exemplo.com.br/videos_do_jose/jose_vai_a_praia.mp4?fp=win 11,1,2&tculr=

Esses parâmetros dão certeza ao servidor de stream que o pedido se origina de um player em flash e que vem de uma página e não de um outro aplicativo qualquer.

Geralmente quando todos os parâmetros exigidos são satisfeitos, o stream é liberado para download e nosso trabalho então é satisfazer esses parâmetros.

Muitas vezes os endereços de arquivo ou stream não podem ser facilmente visualizados, pois estão escondidos em uma tag <iframe> do html ou mudam dinâmicamente através das funções do javascript.

Para visualizar o endereço do arquivo nesses casos, usamos ferramentas disponíveis na maioria dos browsers mais modernos e essa ferramenta se chama "inspecionar elemento".

A ferramenta "inspecionar elemento" pode ser achada clicando o botão direito do mouse sobre qualquer elemento da página e depois selecionando a opção do menu chamada "inspecionar elemento", tanto no firefox como no google chrome, que foram os browsers usados na construção desse tutorial.

Com a ferramenta inspecionar elemento, você terá acesso ao código fonte em html, final, com todas as alterações efetuadas no código através do javascript e até o momento da visualização.

O código onde está escrito o nome do arquivo ou stream, mais o endereço do player, normalmenete estará na tag <object> do html, pois a tag <embed> não é mais tão utilizada.

Essa parte do código terá uma indicação de que se trata do player de stream, podendo ter no seu "id" as palavras:

  • Player
  • Tocador
  • Vídeo
  • Painel
  • Etc...

O código se parecerá mais ou menos com o seguinte:

Você pode ver no código a tag <object>, que tem um "id" igual a Player, no campo "data" temos o endereço relativo (incompleto e sem o endereço do host) de onde está o player, que será chamado e usado para tocar o arquivo que se encontra em um servidor, ambos descritos na útima tag <param name="flashvars">, que passa parâmetros para o player assim que for carregado na página, que por sua vez irá liberar o download do stream.

Bom agora que sabemos como localizar o endereço do arquivo ou stream, o endereço do player, podemos fazer uma primeira tentativa de baixar o stream.


Primeira tentiva

Não precisamos aprender mais nada se conseguimos fazer o download do arquivo ou stream, utilizando a ferramenta rtmpdump ou o browser na primeira tentativa.

No caso de um simples arquivo de vídeo e um servidor http comum, basta colocar o endereço do arquivo na caixa de endereço do browser e o arquivo será baixado, daí então salve-o em um lugar no seu sistema e de sua preferência.

Já no rtmpdump temos de montar uma linha de comando usando o aplicativo rtmpdump.

Para tanto basta colocar a seguinte linha de comando no prompt do DOS ou no seu shell preferido do unix.

rtmpdump -r rtmp://www.exemplo.com.br/videos_do_jose/jose_vai_a_praia.mp4 -o teste.mp4

Caso alguns nomes contiverem espaços, use aspas duplas no início e fim do endereço, pois o rtmpdump pode confundir as partes do endereço soltos por espaço, como sendo opções para o rtmpdump e não o endereço do stream.

Com relação a linha de comando acima, podemos dizer que esta chama o aplicativo rtmpdump com algumas opções.

A primeira opção -r indica o endereço do stream, já a opção -o indica onde o arquivo deve ser salvado em seu sistema, nesse caso na pasta atual, com o nome teste.mp4.

Quando estamos nos comunicando com um servidor de stream, nem sempre a extensão do arquivo reflete o seu conteúdo, ou seja, a extensão do arquivo é .mp4, mas na verdade estamos recebendo um arquivo .flv, o que é muitas vezes o caso.

Para saber o que você está recebendo, você deve ativar a opção verbose do rtmpdump e tentar descobrir o conteúdo do arquivo, olhando as informações dadas pelo comando acima, acrescido da opção -V de verbose, que significa a grosso modo "maiores informações":

rtmpdump -V -r rtmp://www.exemplo.com.br/videos_do_jose/jose_vai_a_praia.mp4 -o teste.mp4

Depois de descobrir qual é o conteúdo do arquivo, renomei-o de acordo com sua descoberta, ou seja, se o arquivo acima na verdade for um flv, coloque seu nome como teste.FLV, ou outro de sua escolha.

Pronto, você descobriu o endereço do seu primeiro stream e foi capaz de salvá-lo no seu sistema.

Porém, se você não teve sucesso em salvar seu arquivo ou stream, talvez encontre a resposta para seus problemas na próxima seção do tutorial.


Descobrindo os parâmetros

Provavelmente se você não conseguiu baixar o stream é porque faltam alguns parâmetros para que o servidor libere o download.

Para descobrir os parâmetros teremos que registrar e analisar a conversa do player com o servidor de stream, e nessa parte o tutorial fica um pouco mais complexo, mas vamos detalhar e dar dicas que tornam o registro e análise dessa conversa bem mais fácil.

Já aprendemos a verificar as páginas para descobrir o endereço dos streams e agora vamos isolar esse código para que quando ligarmos o wireshark (o sniffer ou o programa que faz o registro da conversa), não tenhamos que analisar um imenso registro da página que queremos obeservar a conversa, registrando o carregamento de todos os componentes da mesma.

Ao invés disso, isolamos o código em um arquivo no seu sistema e carregando este, causando uma conversa menor e mais limpa entre o player e o servidor, deixando o registro menor e mais fácil de ser analisado.

Isolamos o código escrevendo a parte que nos interessa em uma arquivo com a extensão .htm ou .html e vamos chamar esse arquivo de player.html.

Mas o que vai dentro desse arquivo? Colocamos lá só o código html referente ao carregamento do player e do vídeo e mais algumas tags html para tornar o arquivo html válido.

Veja o exemplo abaixo, baseado nos exemplos que já mencionamos acima:

Observe que no atributo "data" da tag <object> completamos o endereço do player com o protocolo e host usado para baixar o player, se o endereço estava relativo antes, ou seja, só possuia o caminho até o arquivo e sem host, basta copiar o host do endereço da página html para deixar o endereço completo.

Depois disso, salvamos o código no arquivo em um lugar de fácil acesso como o desktop do seu computador.

Para que o registro da conversa seja o menor possível, você deve garantir que a maioria dos seus programas não estejam rodando e que a luz do seu modem de banda larga, esteja estática e sem piscar.

Para garantir isso fiz outro tutorial que ajuda a desligar a maioria dos serviços desnecessários do windows.

No unix isso é uma obrigação do admin saber como deixar a sua máquina sem processos rodando no background.

Você pode acessar esse tutorial aqui.

Depois de garantir que o mínimo de processos, ou nenhum processo está gerando tráfego na sua rede, ligamos o aplicativo wireshark, espere seu carregamento e depois de uma rápida inspeção visual, ache a janela de título CAPTURE.

Nessa janela aparecerá uma lista dos dispositivos de rede que você poderá escolher para registrar toda a comunicação que passar por este dispositivo.

Depois de feita a escolha, clique no nome de dispositivo que se refere a placa de rede que dá acesso a internet e logo depois clique duas vezes no arquivo player.html em seu desktop.

A nova janela que se abriu no wireshark, depois da sua escolha de dispositivo, vai começar a ser preenchida com várias linhas de diferentes cores, esse é o registro da conversa entre o player e o servidor de streams.

Assim que o vídeo começar a tocar, desligue a escuta do dispositivo apertando o quarto ícone da esquerda para direita, abaixo da barra de menus, que é uma representação de uma placa de rede com um círculo vermelho com um xis (letra "X") em branco no centro do círculo.

Esse último comando encerra o registro da comunicação e desse ponto em diante partimos para a análise do registro que o wireshark fez sobre a comunicação entre o player e o servidor de streams.

Uma dica importante para saber qual linha analisar primeiro vem do nome da porta utilizada na comunicação.

A porta de comunicação lá no servidor será de nome: .

A porta de comunicação usada pelo seu computador para enviar informações será outra e sempre de nome e números diferentes em cada comunicação, pois a escolha das portas é randômica por motivos de segurança.

Analisando o registro das comunicações enviadas e recebidas, vamos nos deparar com uma linha que indica o app ou o caminho onde se encontra o stream, clicamos nessa linha onde a indicação do app aparece e lá vão estar contidos os parâmetros que precisamos para liberar o stream.