Как отразить сайт с помощью JavaScript-меню?

Я пытаюсь отразить сайт, который использует сумасшедшее меню JavaScript, сгенерированное на клиенте. И то и другое wget а также httrack не удается загрузить весь сайт, потому что ссылки просто отсутствуют, пока не будет запущен код JS. Что я могу сделать?

Я попытался загрузить главную страницу индекса в браузер. Он запускает код JS, меню создается, и я могу записать полученный DOM в файл HTML и зеркало из этого файла. Это загружает больше файлов, поскольку ссылки уже находятся в источнике. Но очевидно, что зеркальное отображение скоро нарушается на других, недавно загруженных страницах, которые содержат неинтерпретированное меню JS.

Я думал о замене части меню каждой загруженной страницы статической версией меню, но я не могу найти какую-либо wget или же httrack флаги, которые позволят мне запускать загруженные файлы с помощью внешней команды. Я мог бы написать простой прокси-фильтр, но это начинает звучать экстремально. Другие идеи?

2 ответа

Я использовал HtmlUnit с большим успехом даже на сайтах, где вещи запутаны динамическими элементами.

В моем случае это не поможет, но, возможно, это будет кому-то полезно; Вот как выглядит простой прокси-фильтр в 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;
Другие вопросы по тегам