Existe um downloader de linha de comando de código aberto muito popular chamado youtube-dl
, que faz exatamente isso. Ele pega os links reais de arquivos de vídeo e áudio de um determinado link do YouTube - ou qualquer outro site popular de vídeo como o Vimeo, Yahoo! Vídeo, uStream etc.
Para ver como isso é feito, consulte o extrator do YouTube . Isso é demais para mostrar aqui. Existem outros extratores para sites mais simples . Steven Penny também tem um downloader JavaScript simples para o YouTube, que é um pouco mais direto.
Mas, basicamente, para um reprodutor de vídeo Flash, ele deve ser inicializado e configurado por meio de JavaScript. Simplesmente, o player do objeto Flash receberá um URL de um fluxo de vídeo para carregar.
Para encontrar o fluxo de vídeo, você precisa analisar o código HTML e JS da página de vídeo para encontrar o código de inicialização relevante e, a partir daí, tentar encontrar o link para o arquivo MP4 real. Pode estar em texto simples, mas também pode ser gerado em tempo real com alguns tokens de download específicos. Freqüentemente, o JavaScript é ofuscado para dificultar sua reengenharia. Ou as informações do vídeo podem estar contidas em um arquivo XML carregado de forma assíncrona por JS.
No vídeo de download progressivo em HTML5, o arquivo de origem real geralmente é mencionado diretamente no source
filho da video
tag, portanto, se você pesquisar na página mp4
ou algo semelhante. Por exemplo, no noticiário alemão Tagesschau 100 , você encontrará:
<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">
Para tecnologias de reprodução mais avançadas, como MPEG DASH ou HTTP Live Streaming (HLS) da Apple, você precisa analisar um arquivo de meta-informações para obter o fluxo de vídeo real. O metarquivo ( .mpd
por exemplo, no DASH e .m3u8
no HLS) conterá links para segmentos de vídeo e áudio, que você precisará combinar posteriormente para obter um arquivo reproduzível.
Não há solução geral para isso. Requer inspeção cuidadosa e depuração do site de destino.
Bookmarklet do YouTube
Foi assim que fiz com JavaScript
Comece com o
ytplayer.config.args
objeto. Este contém todos os URLs para o vídeo. É dividido emCada uma delas é uma matriz separada por vírgula do que eu chamaria de "objetos de fluxo". Cada "objeto de fluxo" conterá valores como este
Cada URL será codificado, assim você precisará decodificá-los. Agora a parte complicada.
O YouTube possui pelo menos três níveis de segurança para seus vídeos
Os vídeos RTMPE geralmente são usados em filmes oficiais completos e são protegidos com o SWF Verification Type 2. Isso existe desde 2011 e ainda não foi feito com engenharia reversa.
Os vídeos do tipo "s" são os mais difíceis que podem realmente ser baixados. Você os verá tipicamente nos vídeos VEVO e similares. Eles começam com uma assinatura como
Em seguida, a assinatura é embaralhada com uma função como esta
Essa função é dinâmica, normalmente muda todos os dias. Para dificultar, a função está hospedada em um URL como
isso introduz o problema da política de mesma origem . Essencialmente, você não pode baixar este arquivo
www.youtube.com
porque são domínios diferentes. Uma solução alternativa para esse problema é o CORS . Com o CORS,s.ytimg.com
poderia adicionar este cabeçalhoe permitiria o download do JavaScript
www.youtube.com
. Claro que eles não fazem isso. Uma solução alternativa para essa solução alternativa é usar um proxy CORS. Este é um proxy que responde com o seguinte cabeçalho a todas as solicitaçõesPortanto, agora que você procurou seu arquivo JS em proxy e usou a função para embaralhar a assinatura, é possível usá-lo na cadeia de consulta para baixar um vídeo.
fonte
s
tipo de vídeo eRTMPE
tipo de vídeo?Minha resposta: a partir de 22 de janeiro de 2019, o uso desses métodos poderá ser pego se você tentar ignorar sem vincular também as informações do usuário.
Por quê? como sou um novo usuário desta plataforma, não posso comentar sobre a regra especificada por @ Daniel-B . De acordo com os novos ToS (em alemão como eu estou na Alemanha; traduza) para o YouTube abaixo de US $ 6,1 G $:
Agora eles podem descobrir o tempo de duração de cada solicitação e acompanhar se você está violando. Como é possível agora, considerando esse cenário e seu endereço IP externo, será conhecido mesmo se você usar uma VPN para se proteger sem vincular detalhes do usuário a qualquer serviço.
fonte