4

我正在尝试镜像一个使用客户端上生成的疯狂 JavaScript 菜单的站点。两者都wget无法httrack下载整个站点,因为在 JS 代码运行之前链接根本不存在。我能做些什么?

我尝试将主索引页面加载到浏览器中。运行 JS 代码,构建菜单,我可以将生成的 DOM 转储到 HTML 文件中,并从此文件开始镜像。这会下载更多文件,因为链接已经在源代码中。但很明显,镜像很快就会在其他新下载的包含未解释的 JS 菜单的页面上中断。

我曾考虑用静态版本的菜单替换每个下载页面的菜单部分,但我找不到任何wgethttrack标志可以让我通过外部命令运行下载的文件。我可以编写一个简单的过滤代理,但这听起来很极端。其他想法?

4

2 回答 2

2

即使在事物被动态元素混淆的网站上,我也使用HtmlUnit取得了巨大的成功。

于 2013-06-27T09:33:28.060 回答
1

就我而言,这无济于事,但也许对某人有用;这是一个简单的过滤代理在 Perl 中的样子:

#!/usr/bin/env perl

use HTTP::Proxy;
use HTTP::Proxy::BodyFilter::simple;

my $proxy = HTTP::Proxy->new(port => 3128);
$proxy->push_filter(
    mime => 'text/html',
    response => HTTP::Proxy::BodyFilter::simple->new(
        sub { ${ $_[1] } =~ s/foo/bar/g }
    )
);
$proxy->start;
于 2013-06-27T14:38:37.877 回答