我正在尝试镜像使用客户端上生成的疯狂JavaScript菜单的网站。 wget
和httrack
都无法下载整个站点,因为在JS代码运行之前,链接根本就不存在。我该怎么办?
我尝试将主索引页面加载到浏览器中。运行JS代码,构建菜单,我可以将生成的DOM转储到HTML文件中。镜像来自这个文件。这会下载更多文件,因为链接已经在源中。但很明显,镜像很快就会破坏其他包含未解释的JS菜单的新下载页面。
我考虑过使用静态版本的菜单替换每个下载页面的菜单部分,但我找不到任何wget
或httrack
标志,这些标志可让我运行下载的文件外部命令。我可以编写一个简单的过滤代理,但这开始听起来极端。其他想法?
答案 0 :(得分:2)
我已经使用HtmlUnit取得了巨大成功,即使在动态元素对事物进行模糊处理的网站上也是如此。
答案 1 :(得分: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;