Proszę o przekazywanie wsparcia w ramach 1 proc. podatku dla Krzysia Bulczaka, największego bohatera, jakiego znam. KRS 0000037904 z dopiskiem 20374 Bulczak Krzysztof

Archiwizowanie stron WWW do plików WARC w terminalu

Pliki WARC (Web ARChive) są standardowym formatem przechowywania kopii witryn internetowych. W WARC gromadzą i przechowują swoje zbiory WWW Internet Archiwe oraz biblioteki i archiwa narodowe prowadzące projekty archiwizacji Webu. Jeśli naszym celem jest zabezpieczenie kopii jakiejś witryny, np. jako dowodu w sądzie albo jako niezależnej kopii bezpieczeństwa do celów badawczych czy dziennikarskich, powinniśmy generować, gromadzić i odtwarzać zarchiwizowane strony właśnie w WARC. Jak można to zrobić?

Squidwarc to niewielki program do archiwizowania Webu, pozwalający nie tylko na generowanie plików WARC z podanej zamkniętej listy adresów URL, ale umożliwiający też tworzenie ich w ramach crawlingu – podajemy wówczas adres wyjściowy i określamy granice zasięgu archiwizacji. Do uruchomienia Squidwarc potrzebne będzie Node.js (jako środowisko) i przeglądarka Google Chrome (o tym, jak zainstalować Node.js można przeczytać choćby tu). Node.js udostępnia npm – zasoby pakietów i narzędzie do zarządzania nimi. Npm potrzebujemy, aby po ściągnięciu plików programu, już w terminalu, będąc w jego katalogu głównym, doinstalować niezbędne pakiety (wpisujemy npm install).

Kiedy wszystkie niezbędne pakiety są już zainstalowane, tworzymy plik config.json i ustawiamy w nim reguły sczytywania interesujących nas zasobów WWW. Należy zwrócić szczególną uwagę na typ (mode) pracy programu:

  • page-only – Squidwarc zarchiwizuje wyłącznie te URLe, które podawmy w polu seeds;
  • page-same-domain – Squidwarc uruchomi crawlera, który będzie poruszał się po linkach w ramach jednej domeny, począwszy od linków ze strony podanej w polu seeds;
  • page-all-links – w tym przypadku crawler poruszał się będzie po linkach także poza początkową domenę. Zasięg sczytywania ograniczamy ustawieniami pola depth – wartość 1 oznacza, że crawler wyjdzie ze strony początkowej, przejdzie i sczyta strony, do których ona linkuje, ale nie będzie już pobierał z nich kolejnych linków.

Testując Squidwarc wybrałem ustawienia page-only i podałem bezpośrednio stronę główną serwisu rządowego (premier.gov.pl) wraz z głównymi podstronami. Pliki WARC zapisywane będą do katalogu copy. Moje ustawienia wyglądają tak:

{
  "mode": "page-only",
  "depth": 1,
  "seeds": [   "https://www.premier.gov.pl/","https://www.premier.gov.pl/wydarzenia.html","https://www.premier.gov.pl/ludzie.html","https://www.premier.gov.pl/expose.html","https://www.premier.gov.pl/multimedia.html","https://www.premier.gov.pl/kontakt.html","https://www.premier.gov.pl/dla-mediow.html"
  ],
  "warc": {
    "naming": "url",
    "output": "copy"	
  },
  "connect": {
    "launch": true,
    "host": "localhost",
    "port": 9222
  },
  "crawlControl": {
    "globalWait": 60000,
    "inflightIdle": 1000,
    "numInflight": 2,
    "navWait": 8000
  }
}

Oczywiście do różnych sesji możemy przygotować różne ustawienia w osobnych plikach – każdy z nich może nazywać się dowolnie, ważne jest tylko trzymanie się składni json oraz opcji dostępnych dla Squidwarc.

Teraz otwieram drugie okno terminalu, przechodzę do katalogu ze Squidwarc i uruchamiamy pierwszy program:

$ ./run-chrome.sh

Startuje przeglądarka Google Chrome, która będzie wykorzystywana przez crawler do wyświetlania stron. Wyświetlone strony zostaną następnie zapisane do WARC. Taka metoda pozwala zapisać także te strony, których treść generowana jest dynamicznie przez skrypty JavaScript. Mimo tego Squidwarc nie będzie przydatny np. przy archiwizowaniu wybranego konta na Twitterze.

Pozostaje stworzyć katalog copy, do którego zapisywane będą kopie stron, i uruchomić główny program. Opcja -c pozwala nam wskazać plik konfiguracji crowlingu (config.json).

$ mkdir copy
$ ./run-crawler.sh -c config.json

Zaczyna się sczytywanie. W terminalu na bieżąco pojawiają się informacje o tym, jaki adres URL jest przetwarzany.

Running Crawl From Config File config.json
Crawler Operating In page-only mode
Crawler Will Be Preserving 7 Seeds
Crawler Will Be Generating WARC Files Using the filenamified url
Crawler Generated WARCs Will Be Placed At copy
Crawler Is Connecting To Chrome On Host localhost
Crawler Is Connecting To Chrome On Port 9222
Crawler Will Be Waiting At Maximum For Navigation To Happen For 8s
Crawler Will Be Waiting After For 2 inflight requests
ws://[::1]:9222/devtools/browser/2932d882-3932-43fb-8d7c-b9d7c7321be6
Crawler Navigating To https://www.premier.gov.pl/
Crawler Navigated To https://www.premier.gov.pl/
https://www.premier.gov.pl/ loaded 
Crawler Generating WARC
Crawler Generated WARC
Crawler Has 6 Seeds Left To Crawl
Crawler Navigated To https://www.premier.gov.pl/wydarzenia.html
https://www.premier.gov.pl/wydarzenia.html loaded 
Crawler Generating WARC
Crawler Generated WARC
Crawler Has 5 Seeds Left To Crawl
Crawler Navigated To https://www.premier.gov.pl/ludzie.html
https://www.premier.gov.pl/ludzie.html loaded 
Crawler Generating WARC
Crawler Generated WARC
Crawler Has 4 Seeds Left To Crawl
Crawler Navigated To https://www.premier.gov.pl/expose.html
https://www.premier.gov.pl/expose.html loaded 
Crawler Generating WARC
Crawler Generated WARC
Crawler Has 3 Seeds Left To Crawl
Crawler Navigated To https://www.premier.gov.pl/multimedia.html
https://www.premier.gov.pl/multimedia.html loaded 
Crawler Generating WARC
Crawler Generated WARC
Crawler Has 2 Seeds Left To Crawl
Crawler Navigated To https://www.premier.gov.pl/kontakt.html
https://www.premier.gov.pl/kontakt.html loaded 
Crawler Generating WARC
Crawler Generated WARC
Crawler Has 1 Seeds Left To Crawl
Crawler Navigated To https://www.premier.gov.pl/dla-mediow.html
https://www.premier.gov.pl/dla-mediow.html loaded 
Crawler Generating WARC
Crawler Generated WARC
No More Seeds
Crawler Shutting Down
GoodBy

Zapisane pliki WARC można odtworzyć m.in. za pomocą programu Webrecorder Player, a ich kod częściowo podejrzeć np. przeglądarce Firefox (wybieramy opcję otwórz za pomocą).

Podsumowując, Squidwarc to łatwy w instalacji i konfiguracji program do sczytywania i archiwizowania stron WWW, pozwalający bez zaawansowanych umiejętności zbudować zgodną ze standardami kopię wybranej witryny czy sieci witryn.

Udostępnij na Twitterze | Udostępnij na Facebooku

Przeczytaj także