Как отразить сайт с помощью 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;