Como fazer o download do arquivo HTML com texto ofuscado

1

Eu uso o Firefox e não tenho problemas para visualizar e ler textos em inglês nos sites carregados.

Se eu clicar em Salvar no Firefox e salvar a página da Web em questão como um arquivo de texto, posso ler tudo no arquivo de texto - todos os caracteres são legíveis.

No entanto, quando eu uso o Downthemall para salvar essas mesmas páginas da web e salvá-las como .html - que parece ser a única maneira com Dta - existem caracteres nos arquivos HTML salvos que são ilegíveis - e o kicker é que eles são as linhas críticas que estou interessado em ler e extrair. A fonte de visualização do Firefox mostra a mesma saída ilegível.

Basicamente, estou tentando remover um site (yunfile.com) para reunir nomes de arquivos e links de download - tudo ficaria bem, exceto NÃO PODER ler os nomes dos arquivos.

Aqui está um exemplo de link: link O problema que estou tendo é com a linha do nome do arquivo onde diz Download:

O texto do arquivo HTML lê: ¡£¢¢£¥£¢½ãòá碽áòá

No Firefox, o mesmo texto diz: 20110601.part1.rar

Existe um programa e um comando que eu possa executar para converter esses arquivos HTML?

Qualquer sugestão seria muito apreciada.

    
por speld_rwong 14.02.2017 / 00:54

1 resposta

2

Este não é um problema de codificação. O que está acontecendo é que o servidor retorna HTML com os nomes dos arquivos desconfigurados, e há um pouco de Javascript para soltá-los.

Felizmente, a confusão é executada por Javascript que não está oculto ou ofuscado, por isso é fácil desfazê-lo. O código JS é

function codeAndEncode(_key,_str){
     var keyUnicodeSum=0;
     var codedStr = "";
     for( j = 0; j<_key.length; j++ ){
          keyUnicodeSum += _key.charCodeAt( j );
     }
     for( i = 0; i<_str.length; i++ )
     {
          var _strXOR = _str.charCodeAt(i) ^ keyUnicodeSum;
          codedStr += String.fromCharCode( _strXOR );
     }
     return codedStr;
}

var filename = codeAndEncode("111", "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá");

Isso é bem simples: calcule um valor e xor com cada caractere da string. A operação mangling e unmangling é a mesma. Você pode traduzir isso em qualquer idioma que estiver usando para o seu raspador. Por exemplo, aqui está um código Perl que desfaz a confusão:

$ perl -CA -l -we 'my $sum = 0; $sum += ord foreach split //, $ARGV[0]; print $ARGV[1] ^ (chr($sum) x length($ARGV[1]))' 111 "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá"
xiaonian20110601.part1.rar

O mangler usa o DOM acessa document.getElementById("file_show_filename") e document.getElementById("file_down_filename") para identificar os nós na árvore HTML que precisam ser solto. Você pode adaptar isso também para qualquer analisador de HTML usado pelo seu raspador.

O objetivo de desmembrar os nomes dos arquivos é dificultar a tarefa de raspagem, por isso é provável que os administradores do site dificultem a reprodução da tarefa ao longo do tempo. Se você quiser manter os nomes dos arquivos desconfigurados, independentemente dos truques que o site receber, você poderá executar o Firefox em um ambiente automatizado. Veja Existe algum boas ferramentas além do SeleniumRC que podem buscar páginas da Web incluindo conteúdo pós-pintado por JavaScript? e Como posso executar o Firefox no Linux sem problemas (ou seja, sem exigir o libgtk-x11-2.0.so.0)?

    
por 14.02.2017 / 21:25