如何下载带有模糊文本的 HTML 文件

如何下载带有模糊文本的 HTML 文件

我使用 Firefox,在加载的网站上查看和阅读英文文本没有任何问题。

如果我在 Firefox 中单击“保存”并将相关网页保存为文本文件,我可以读取文本文件中的所有内容 - 所有字符都是可读的。

然而,当我使用 Downthemall 保存这些相同的网页并将它们另存为 .html 时(这似乎是使用 Dta 的唯一方法),保存的 HTML 文件中存在无法读取的字符,而更关键的是它们是关键字符我有兴趣阅读和提取的行。 Firefox 查看源代码显示相同的不可读的输出。

基本上我正在尝试清理一个网站(yunfile.com)以收集文件名和下载链接 - 一切都会很好,除了我无法读取文件名。

这是一个示例链接:http://page3.dfpan.com/file/syg65488/0141cd27我遇到的问题是文件名行显示“正在下载”:

HTML 文件文本如下: ¡£¢¢£¥£¢½ãòá碽áòá

在 Firefox 中,相同的文本如下: 20110601.part1.rar

是否有可以运行的程序和命令来转换这些 HTML 文件?

任何建议将不胜感激。

答案1

这不是编码问题。发生的情况是,服务器返回文件名被破坏的 HTML,并且有一些 Javascript 来整理它们。

幸运的是,修改是由未隐藏或混淆的 JavaScript 执行的,因此很容易撤消它。 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", "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá");

这非常简单:计算一个值并将其与字符串的每个字符进行异或。重整和取消重整操作是相同的。您可以将其翻译成您用于抓取工具的任何语言。例如,下面是一些撤销损坏的 Perl 代码:

$ 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

粉碎机使用DOM访问document.getElementById("file_show_filename")document.getElementById("file_down_filename")识别 HTML 树中需要恢复的节点。您也可以将其适应您的抓取工具使用的任何 HTML 解析器。

修改文件名的目的是使抓取变得更加困难,因此站点管理员可能会随着时间的推移使修改变得更难重现。如果您想保留损坏的文件名,无论网站采取什么伎俩,您可以在自动化环境中运行 Firefox。看除了 SeleniumRC 之外,还有什么好的工具可以获取包含 JavaScript 后绘制内容的网页吗?如何在 Linux 上无头运行 Firefox(即不需要 libgtk-x11-2.0.so.0)?

相关内容