如何使用JavaScript菜单镜像网站?

5
我正在尝试镜像一个使用客户端生成的疯狂JavaScript菜单的网站。由于JS代码运行之前链接根本不存在,因此wgethttrack都无法下载整个网站。我该怎么办?
我已经尝试将主索引页面加载到浏览器中。这会运行JS代码,构建菜单并将结果DOM转储到HTML文件中,然后从该文件进行镜像。由于链接已经在源代码中,因此这会下载更多的文件。但是,显然,在包含未解释JS菜单的其他新下载页面上,镜像很快就会中断。
我考虑用静态版本的菜单替换每个下载页面的菜单部分,但我找不到任何wgethttrack标志,可以让我通过外部命令运行下载的文件。我可以编写一个简单的过滤代理,但那听起来有点极端。还有其他想法吗?
2个回答

2

我曾经成功地使用过 HtmlUnit,甚至在存在动态元素混淆的网站上也能很好地发挥作用。


1
好的,谢谢。基于HtmlUnit的镜像工具有吗?(否则自己编写带有类似于“wget”的链接转换的工具将需要与过滤代理一样多的工作量。) - zoul

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接