2013-06-27 60 views
4

我想要鏡像一個使用客戶端上生成的瘋狂JavaScript菜單的網站。 wgethttrack都無法下載整個站點,因爲在JS代碼運行之前,鏈接根本就不存在。我能做什麼?如何使用JavaScript菜單鏡像網站?

我曾嘗試將主索引頁加載到瀏覽器中。這運行的JS代碼,菜單得到構建,我可以轉儲生成的DOM到一個HTML文件&鏡像從這個文件。這會下載更多的文件,因爲鏈接已經在源代碼中。但很明顯,鏡像很快就會出現在其他新鮮下載的包含未解釋的JS菜單的頁面上。

我想過用菜單的靜態版本替換每個下載頁面的菜單部分,但我找不到任何wgethttrack標誌,這些標誌使我可以通過外部命令運行下載的文件。我可以寫一個簡單的過濾代理,但這聽起來很極端。其他想法?

回答

2

我已經使用HtmlUnit甚至在動態元素混淆事件的網站上也取得了巨大成功。

+1

聽起來不錯,謝謝。有沒有基於HtmlUnit的鏡像工具? (否則,通過鏈接轉換àla'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;