Chociaż pomocne, wcześniejsze odpowiedzi nie zwięźle, niezawodnie i powtarzalnie rozwiązują podstawowe pytanie. W tym poście krótko opisujemy trudności każdego z nich, a następnie oferujemy skromne httrack
rozwiązanie.
tło
Zanim jednak do tego dojdziemy, zastanów się nad przeczytaniem dobrze napisanej odpowiedzi mpy . W h [is | er] niestety zaniedbanym poście mpy rygorystycznie dokumentuje niejasny (i szczerze zaciemniający) schemat archiwalny Wayback Machine.
Nic dziwnego, że to nie jest ładne. Zamiast dyskretnie archiwizować witryny w jednym katalogu, The Wayback Machine efemerycznie dzieli pojedynczą witrynę na dwa lub więcej identyfikowanych numerycznie katalogów rodzeństwa. Powiedzenie, że to komplikuje tworzenie kopii lustrzanych, byłoby poważnym niedopowiedzeniem.
Zrozumienie strasznych pułapek przedstawionych przez ten schemat ma kluczowe znaczenie dla zrozumienia nieadekwatności wcześniejszych rozwiązań. Przejdźmy do tego, prawda?
Wcześniejsze rozwiązanie 1: wget
Powiązane pytanie StackOverflow „Odzyskaj starą stronę internetową z waybackmachine” jest prawdopodobnie najgorszym przestępcą pod tym względem, polecając wget
do dublowania Wayback. Oczywiście to zalecenie jest zasadniczo nieuzasadnione.
W przypadku braku złożonego przepisywania zewnętrznego adresu URL (np. Privoxy
), wget
Nie można go używać do niezawodnego kopiowania stron archiwizowanych przez Wayback. Jak mało szczegółowych informacji w części „Problem 2 + Rozwiązanie”, każde wybrane narzędzie do tworzenia kopii lustrzanych musi umożliwiać nietransportowe pobieranie tylko adresów URL należących do witryny docelowej. Domyślnie większość narzędzi do tworzenia kopii lustrzanych pobiera tranzytowo wszystkie adresy URL należące zarówno do strony docelowej, jak i do stron z nią powiązanych - co w najgorszym przypadku oznacza „cały Internet”.
Konkretny przykład jest w porządku. Podczas tworzenia kopii lustrzanej przykładowej domeny kearescue.com
narzędzie do tworzenia kopii lustrzanych musi :
- Uwzględnij wszystkie pasujące adresy URL
https://web.archive.org/web/*/http://kearescue.com
. Są to zasoby dostarczane przez witrynę docelową (np https://web.archive.org/web/20140521010450js_/http_/kearescue.com/media/system/js/core.js
.).
- Wyklucz wszystkie pozostałe adresy URL. Są to zasoby dostarczane przez inne witryny, do których linki są jedynie połączone z witryny docelowej (np
https://web.archive.org/web/20140517180436js_/https_/connect.facebook.net/en_US/all.js
.).
Brak wykluczenia takich adresów URL zazwyczaj powoduje zebranie całego lub większości Internetu zarchiwizowanego w momencie archiwizacji witryny, szczególnie w przypadku witryn zawierających zasoby hostowane zewnętrznie (np. Filmy z YouTube).
To by było złe. Chociaż wget
nie zapewniają wiersza poleceń --exclude-directories
opcję akceptując jedną lub więcej wzorów pasujących adresów należy wykluczyć, to nie wyrażenia regularne ogólnego przeznaczenia; są to uproszczone globusy, których *
składnia odpowiada zero lub więcej znaków z wyłączeniem/
. Ponieważ wykluczane adresy URL zawierają dowolnie wiele /
znaków, wget
nie można ich używać do wykluczania tych adresów URL, a zatem nie można ich używać do tworzenia kopii lustrzanych witryn archiwizowanych przez Wayback. Kropka. Koniec niefortunnej historii.
Ten problem jest notowany od co najmniej 2009 roku. Nie został jeszcze rozwiązany. Kolejny!
Wcześniejsze rozwiązanie 2: notatnik
Prinz zaleca ScrapBook
wtyczkę Firefox. Wtyczka do Firefoksa.
To chyba wszystko, co musiałeś wiedzieć. Natomiast ScrapBook
„S Filter by String...
funkcjonalność nie adres wspomnianego«Problem 2 + Solution», to jest nie rozwiązać późniejsza«3 Problem + rozwiązanie»- a mianowicie problemu zewnętrznych powtórzeń.
Wątpliwe jest, czy ScrapBook
nawet odpowiednio rozwiązuje ten pierwszy problem. Jak przyznaje mpy :
Chociaż Scrapbook jak dotąd nie udało się całkowicie pobrać strony ...
Nierzetelne i zbyt uproszczone rozwiązania nie są rozwiązaniami. Kolejny!
Wcześniejsze rozwiązanie 3: wget + Privoxy
mpy następnie zapewnia solidne rozwiązanie wykorzystujące zarówno wget
i Privoxy
. Chociaż wget
jest dość prosty w konfiguracji, nie Privoxy
jest uzasadniony. Lub proste.
Ze względu na nieprzezwyciężoną przeszkodę techniczną związaną z prawidłową instalacją, konfiguracją i użytkowaniem Privoxy
, musimy jeszcze potwierdzić rozwiązanie mpy . To powinno działać w skalowalnym, dynamiczny sposób. Biorąc pod uwagę bariery wejścia, to rozwiązanie jest prawdopodobnie bardziej odpowiednie dla automatyzacji na dużą skalę niż przeciętny webmaster próbujący odzyskać małe i średnie witryny.
Czy wget
+ Privoxy
warto zobaczyć? Absolutnie. Ale większość superużytkowników może być lepiej obsługiwana przez prostsze, łatwiejsze do zastosowania rozwiązania.
Nowe rozwiązanie: httrack
Enter httrack
, narzędzie wiersza polecenia implementujące nadzbiór wget
funkcji dublowania. httrack
obsługuje zarówno wykluczanie adresów URL oparte na wzorcach, jak i uproszczoną restrukturyzację witryny. Ten pierwszy rozwiązuje „Problem 2 + Solution” mpy ; drugi „Problem 3 + Rozwiązanie”.
W poniższym abstrakcyjnym przykładzie zamień:
${wayback_url}
przez adres URL katalogu najwyższego poziomu, który archiwizuje całą witrynę docelową (np 'https://web.archive.org/web/20140517175612/http://kearescue.com'
.).
${domain_name}
przez tę samą nazwę domeny obecną w ${wayback_url}
wykluczeniu prefiksu http://
(np 'kearescue.com'
.).
No to ruszamy. Zainstaluj httrack
, otwórz okno terminala cd
do katalogu lokalnego, do którego chcesz pobrać witrynę, i uruchom następujące polecenie:
httrack\
${wayback_url}\
'-*'\
'+*/${domain_name}/*'\
-N1005\
--advanced-progressinfo\
--can-go-up-and-down\
--display\
--keep-alive\
--mirror\
--robots=0\
--user-agent='Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5'\
--verbose
Po zakończeniu bieżący katalog powinien zawierać jeden podkatalog dla każdego typu pliku dublowanego z tego adresu URL. Zwykle obejmuje to co najmniej:
css
, zawierający wszystkie lustrzane arkusze stylów CSS.
html
, zawierający wszystkie lustrzane strony HTML.
js
, zawierający wszystkie dublowane skrypty JavaScript.
ico
, zawierający jeden dublowany favicon.
Ponieważ httrack
wewnętrznie przepisuje całą pobraną zawartość, aby odzwierciedlić tę strukturę, Twoja witryna powinna być dostępna do przeglądania bez zmian. Jeśli przedwcześnie zatrzymałeś powyższe polecenie i chcesz kontynuować pobieranie, dołącz --continue
opcję do dokładnie tego samego polecenia i spróbuj ponownie.
Otóż to. Nie są wymagane zewnętrzne zniekształcenia, podatne na błędy przepisywanie adresów URL ani serwery proxy oparte na regułach.
Cieszcie się, koledzy superużytkownicy.
20110722080716
migawką, dlatego-np
opcja wget nie pomoże.