NAZWA
wget - nieinteraktywny program do pobierania z sieci
SKŁADNIA
wget [opcja]... [ URL ]...
OPIS
GNU Wget jest wolnym programem narzędziowym do pobierania plików z sieci. Obsługuje protokoły HTTP , HTTPS i FTP , a także pobieranie poprzez serwery proxy HTTP .
Wget jest nieinteraktywny, co pozwala mu działać w tle, w czasie gdy użytkownik nie jest zalogowany. Dzięki temu użytkownik może rozpocząć pobieranie i rozłączyć się z komputerem, pozwalając Wgetowi na zakończenie pracy. Większość przeglądarek WWW wymaga ciągłej obecności człowieka, co staje się uciążliwe przy pobieraniu dużej ilości danych.
Wget potrafi podążać za odnośnikami zawartymi w stronach HMTL , XHTML i CSS oraz tworzyć lokalne wersje zdalnych witryn, w pełni odtwarzając strukturę katalogów oryginalnej strony. Jest to czasami nazywane "pobieraniem rekurencyjnym". Podczas takiego działania Wget respektuje ustalenia Standardu Robot Exclusion (/robots.txt). Możliwe jest poinstruowanie programu, by w pobieranych plikach przekształcał odnośniki tak, aby wskazywały na lokalne kopie, do przeglądania bez połączenia.
Wget został zaprojektowany tak, by działać solidnie również przy powolnych bądź niestabilnych połączeniach. Jeżeli pobieranie nie udaje się z powodu problemów z siecią, ponawia próby aż do ściągnięcia całości pliku. Jeśli dany serwer obsługuje taką możliwość, Wget nakaże kontynuację pobierania od miejsca, w którym przerwano.
OPCJE
Składnia
opcji
Wget używa GNU getopt do przetwarzania
argumentów wiersza poleceń, więc każda
opcja ma długi i krótki format. Długie
opcje są łatwiejsze do zapamiętania, lecz
wpisuje się je dłużej. Można dowolnie
łączyć oba style zapisu lub podać opcje
po argumentach wiersza poleceń. Można więc
użyć:
wget -r --tries=10 http://fly.srk.fer.hr/ -o log
Spacja pomiędzy opcją akceptującą argument i argumentem może być pomięta. Zamiast -o log można wpisać -olog.
Można umieścić kilka opcji, które nie wymagają argumentów razem, tak jak poniżej:
wget -drc <URL>
Jest to równoważne zapisowi:
wget -d -r -c <URL>
Ponieważ opcje mogą być podane po argumentach, może być konieczne oddzielenie ich za pomocą --. Poniższe polecenie spróbuje pobrać URL -x, zapisując niepowodzenie do log:
wget -o log -- -x
Opcje, które akceptują listy oddzielone przecinkami, respektują konwencję podania pustej listy, która usuwa ich wartosć. Jest to przydatne do wyczyszczenia ustawień .wgetrc np. jeśli .wgetrc użytkownika ustawia "exclude_directories" na /cgi-bin, to poniższy przykład najpierw zresetuje wartość, a następnie ustawi ją na /~nobody i /~somebody. Można również wyczyścić listę w .wgetrc.
wget -X " -X /~nobody,/~somebody
Większość opcji, która nie akceptuje argumentów są opcjami logicznymi tzn. takimi, których stan można opisać zmienną zero-jedynkową ("logiczną"). Na przykład --follow-ftp mówi Wgetowi, aby podążał za linkami FTP z plików HTML , a --no-glob nakazuje nieprzeprowadzania rozwijania masek URL-i FTP . Opcje logiczną są albo pozytywne, albo negatywne (te zaczynają się od --no). Wszystkie takie opcje mają kilka własności.
Jeżeli nie zaznaczono inaczej, to przyjmuje się, że domyślne zachowanie jest przeciwne niż to, które zapewnia opcja. Na przykład udokumentowane istnienie --follow-ftp wskazuje, że domyślnie nie podąża się za linkami FTP ze stron HTML .
Działanie opcji pozytywnych można odwrócić dodając --no- do ich nazw; analogicznie w przypadku opcji negatywnych (wyłączających) - usuwając przedrostek --no-. Może to wyglądać na niepotrzebne -- skoro domyślnym działaniem opcji pozytywnych jest nie robienie czegoś, to po co zapewniać metodę jawnego wyłączania ich? Wynika to z działania pliku startowego, który może zmienić wartości domyślne. Przykładowo, skorzystanie z wpisu follow_ftp = on w pliku .wgetrc powoduje, że Wget domyślnie podąża (follow) za dowiązaniami FTP , natomiast opcja --no-follow-ftp jest jedynym sposobem na przywrócenie wartości pierwotnie domyślnych z wiersza poleceń.
Podstawowe opcje uruchamiania
-V |
--version
Wyświetla wersję Wgeta.
-h |
--help
Wypisuje komunikat pomocy, opisujący wszystkie opcje, jakie można przekazać Wgetowi w wierszu poleceń.
-b |
--background
Przechodzi w tło natychmiast po rozpoczęciu pracy. Jeśli nie podano pliku wyjściowego za pomocą -o, wyjście jest przekierowywane do wget-log.
-e polecenie
--execute polecenie
Wykonuje polecenie tak, jakby było częścią .wgetrc. Polecenie wywołane w ten sposób zostanie wykonane po poleceniach z .wgetrc, więc będzie mieć nad nimi priorytet. Aby podać kilka poleceń wgetrc, należy użyć opcji -e wielokrotnie.
Opcje
dziennika i pliku wejściowego
-o dziennik
--output-file=dziennik
Rejestruje wszystkie komunikaty w pliku dziennika. Normalnie są zgłaszane na standardowym wyjściu błędów.
-a dziennik
--append-output=dziennik
Dodaje komunikaty na końcu pliku dziennika. Jest to to samo, co -o, tyle że dopisuje do dziennika zamiast nadpisywać stary. Jeśli plik dziennik nie istnieje, jest tworzony.
-d |
--debug
Włącza wyjście diagnostyczne, czyli wypisywanie rozmaitych informacji ważnych dla twórców Wget, gdy nie działa on poprawnie. Administrator systemu mógł skompilować Wget bez obsługi trybu usuwania błędów, wówczas -d nie będzie działać. Należy zauważyć, że kompilacja z obsługą diagnostyki jest zawsze bezpieczna -- Wget skompilowany w ten sposób nie będzie wypisywał żadnych informacji diagnostycznych dopóki nie zażąda się tego opcją -d.
-q |
--quiet
Tryb cichy. Wyłącza wyjście Wget.
-v |
--verbose
Pełne wyjście, z wszystkimi dostępnymi danymi. Jest to opcja domyślna.
-nv |
--non-verbose
Niepełne wyjście -- wyłącza pełne wyjście, ale nie ucisza całkowicie (to robi się opcją -q); komunikaty o błędach i podstawowe informacje będą nadal wypisywane.
--report-speed=typ
Wypisuje przepustowość jako typ. Jedyną akceptowaną wartością są bity (bits).
-i plik
--input-file=plik
Odczytuje URL-e z lokalnego lub zewnętrznego pliku. Jeśli jako plik podano -, to URL-e są czytane ze standardowego wejścia (aby czytać z pliku nazwanego -, należy użyć zapisu ./-).
Czyta URL-e z pliku wejściowego plik, w związku z czym nie trzeba ich podawać w wierszu poleceń. Jeśli URL-e podano zarówno w wierszu poleceń, jak i w pliku wejściowym, to pierwsze zostaną pobrane pliki wymienione w wierszu poleceń. Jeśli nie podano opcji --force-html, to plik powinien składać się z zestawu URL-i - po jednym na wiersz.
Jednakże jeśli zostanie podana opcja --force-html, to plik będzie traktowany jak dokument html. Mogą się wówczas pojawić kłopoty z odnośnikami względnymi, które można rozwiązać dodając "<base href="url">" do pliku lub podając --base=url w wierszu poleceń.
Jeśli plik jest plikiem zewnętrznym, to dokument zostanie potraktowany automatycznie jako html, jeśli jego Content-Type pasuje do text/html. Co więcej, położenie pliku zostanie użyte jako href, jeśli nie podano innego.
-F |
--force-html
Kiedy wejście jest czytane z pliku, wymusza aby było traktowane jako plik HTML . Pozwala to na pobieranie względnych odnośników z istniejących plików HTML znajdujących się na lokalnym dysku naszego komputera, przez dodanie znacznika "<base href="url">" do pliku HTML lub użycie opcji --base.
-B
URL
--base= URL
Przekształca linki względne używając URL -i jako punktu odniesienia, przy odczytywaniu linków z pliku HTML określonego opcją -i/--input-file (razem z --force-html lub gdy plik został pobrany z serwera zewnętrznego, opisującego go jako HTML ). Jest to odpowiednik obecności znacznika BASE w pliku wejściowym HTML , z wartością URL jako wartość atrybutu href.
Na przykład przy podaniu http://foo/bar/a.html do URL i odczytaniu przez Wgeta ../baz/b.html z pliku wejściowego, zostanie on przekształcony do http://foo/baz/b.html.
--config= plik
Domyślne położenie pliku startowego, który ma być użyty.
Opcje
pobierania
--bind-address=adres
Podczas tworzenia klienckich połączeń TCP/IP , wiąże z lokalnym komputerem, przez "bind()", zadany adres. Adres można podać jako nazwę hosta lub adres IP . Może się przydać jeśli dany komputer ma przypisane kilka adresów IP .
-t liczba
--tries=liczba
Ustawia liczbę prób na liczbę. 0 lub inf oznacza próbowanie bez końca. Domyślna wartość wynosi 20, z wyjątkiem błędów krytycznych, takich jak "connection refused" (odrzucono połączenie) lub "not found" (nie znaleziono - 404), gdy nie podejmuje się ponownych prób.
-O plik
--output-document=plik
Dokumenty nie będą zapisywane do odpowiednich plików, ale wszystkie zostaną sklejone i zapisane do pliku. Jeśli jako plik podano -, dokumenty będą zapisane na standardowe wyjście, wyłączając konwersję linków (proszę użyć ./-, aby zapisać do pliku o nazwie -).
Użycie -O nie jest przeznaczone jako "użyj nazwy pliku zamiast tej z URL -a", lecz jest to odpowiednik przekierowania powłoki: wget -O plik http://foo jest zaprojektowane do działania jak wget -O - http://foo > plik; plik zostanie natychmiast przycięty, i cała zawartość pobierania zostanie do niego zapisana.
Z tego powodu, -N (sprawdzanie znacznika czasowego) nie jest obsługiwane w połączeniu z -O: ponieważ plik jest zawsze nowo tworzony, będzie miał on zawsze całkiem nowy znacznik czasowy. Przy użyciu tej kombinacji wyświetlane jest ostrzeżenie.
Podobnie, używanie -r lub -p z -O może nie działać zgodnie z przewidywaniami: Wget nie będzie pobierał pierwszego pliku do pliku, a reszty do zwykłych plików; cała zawartość pobierania zostanie umieszczona w pliku. Zostało to wyłączone w wersji 1.11, lecz powróciło (z ostrzeżeniem) w 1.11.2, ponieważ są przypadki, gdzie takie zachowanie może mieć sens.
Proszę zauważyć, że kombinacja z -k jest dozwolona tylko przy pobieraniu pojedynczego dokumentu, ponieważ w takim przypadku, wszystkie relatywne URI zostaną przekształcone w URI zewnętrzne. Opcja -k nie ma sensu przy wielu URI, które zostały pobrane do pojedynczego pliku, stąd -k może być użyte tylko, jeśli wyjściem jest zwykły plik.
-nc |
--no-clobber
Jeśli plik jest pobierany więcej niż raz do tego samego katalogu, zachowanie Wgeta zależy od kilku opcji, między innymi -nc. W pewnych przypadkach istniejący lokalny plik będzie nadpisany lub przebity (ang. clobbered), przy powtórzeniu ściągania. W innych przypadkach zostanie zachowany.
Przy uruchomieniu Wget bez opcji -N, -nc, -r lub -p pobranie tego samego pliku do tego samego katalogu spowoduje pozostawienie pierwotnego egzemplarza pliku i nadanie drugiemu nazwy plik.1. Gdy plik będzie ściągany kolejny raz, trzeci egzemplarz otrzyma nazwę file.2, i tak dalej (jest tak również z opcją -nd, nawet jeśli działa równocześnie -r lub -p). Przy podanej opcji -nc, zachowanie takie jest wstrzymywane, a Wget odmawia pobrania nowszych kopii pliku. Dlatego też, "no-clobbe" jest w rzeczywistości złą nazwą dla tego trybu -- nie chroni on przed nadpisywaniem (gdyż temu zapobiegają już numeryczne przyrostki), ale przed zachowywaniem wielu wersji pliku.
Przy uruchomieniu Wget z -r lub -p, ale bez -N, -nd czy -nc, ponowne ściągnięcie pliku powoduje, że nowa kopia po prostu nadpisuje starą. Dodanie -nc zapobiega takiemu zachowaniu, skutkując zamiast tego zachowaniem pierwotnej wersji i ignorowaniem ewentualnych nowych kopii z serwera.
Przy uruchomieniu Wget z -N, z opcją -r lub -p albo bez niej, decyzja, czy ściągać nową wersję pliku czy też nie, zależy od znaczników czasu (dat modyfikacji) i rozmiarów lokalnego i zdalnego pliku. -nc nie można podawać równocześnie z -N.
Proszę zauważyć, że jeśli podano -nc, pliki z przyrostkami .html lub .htm będą odczytywane z dysku i przetwarzane tak, jakby zostały pobrane z sieci.
--backups=kopia-zapasowa
Przed nadpisaniem pliku, istniejący jest zachowywany poprzez dodanie przyrostka .1 (_1 w VMS ) do nazwy pliku. Przy kolejnym przebiegu kolejne kopie zapasowe mają nazwy zmieniane na .2, .3 itd., aż do osiągnięcia liczby kopii-zapasowych (gdy ją przekroczą są usuwane).
-c |
--continue
Kontynuuje pobieranie częściowo ściągniętego pliku. Przydatne, gdy chcemy dokończyć ściąganie rozpoczęte w poprzednim przebiegu Wgeta lub przez inny program. Przykład:
wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
Jeśli w bieżącym katalogu istnieje plik ls-lR.Z, Wget przyjmie, że jest to początkowy fragment zdalnego pliku i zażąda od serwera kontynuacji pobierania od przesunięcia równego długości lokalnego pliku.
Proszę zauważyć, że nie ma potrzeby podawania tej opcji jeśli chcemy tylko, by aktualnie wywołany Wget ponownie próbował ściągać plik, w połowie którego zostało zerwane połączenie. Jest to zachowanie domyślne. Opcja -c wpływa tylko na wznawianie pobrań zaczętych przed bieżącym wywołaniem Wget i tylko dla tych plików, których lokalne kopie nadal istnieją.
Bez -c, polecenie z poprzedniego przykładu pobrałby po prostu zdalny plik do ls-lR.Z.1, zostawiając w spokoju obcięty plik ls-lR.Z.
Począwszy od Wget 1.7, jeśli użyjemy -c dla niepustego pliku, a okaże się, że serwer nie obsługuje kontynuacji ściągania, to program odmówi rozpoczęcia ściągania od zera, które prowadziłoby do zniszczenia istniejącej zawartości. Jeśli naprawdę chcemy ściągać od początku, powinniśmy usunąć taki plik.
Również od wersji 1.7, jeśli użyjemy -c dla pliku, którego rozmiar jest taki sam, jak na serwerze, to Wget odmówi ściągnięcia pliku i wypisze komunikat objaśniający. Tak samo dzieje się, gdy plik jest mniejszy na serwerze niż lokalnie (prawdopodobnie dlatego, że został zmieniony na serwerze od czasu naszej ostatniej próby ściągania) -- ponieważ "kontynuacja" jest bezsensowna, pobieranie nie zachodzi.
Z drugiej strony, przy stosowaniu -c, każdy plik, który jest większy na serwerze niż lokalnie będzie uważany za nie w pełni ściągnięty. Wówczas pobranych i doczepionych na koniec pliku lokalnego zostanie tylko "(wielkość(zdalny) - wielkośc(lokalny))" bajtów. W pewnych przypadkach takie zachowanie jest pożądane -- na przykład, można skorzystać z wget -c do ściągnięcia tylko nowej porcji danych, dopisanej na końcu zbioru danych czy pliku dziennika.
Jednakże, jeśli plik na serwerze jest większy dlatego, że został zmieniony, a nie tylko doklejono do niego dane, to w efekcie otrzymamy zniekształcony plik. Wget w żaden sposób nie może sprawdzić, czy lokalny plik jest poprawną częścią początkową zdalnego. Należy na to szczególnie uważać stosując -c w połączeniu z -r, gdyż każdy plik będzie uważany za kandydata na "nieukończone ściąganie".
Inną sytuacja, w której przy korzystaniu z -c uzyskuje się zniekształcony plik, zachodzi, gdy mamy do czynienia z ułomnym serwerami pośredniczącymi HTTP , wstawiającym łańcuch "transfer interrupted" do lokalnego pliku. W przyszłości będzie może dodana opcja "rollback", obsługująca ten przypadek.
Proszę zauważyć, że -c działa tylko z serwerami FTP i HTTP , które obsługują nagłówek "Range".
--progress=typ
Umożliwia wskazanie typu wskaźnika postępu. Dozwolonymi rodzajami wskaźnika są "dot" (kropka) i "bar" (pasek).
Domyślnie stosowany jest wskaźnik "bar". Rysowany jest wówczas pasek postępu złożony ze znaków graficznych ASCII (zwany czasem wskaźnikiem "termometrowym"), wskazujący stan pobierania. Jeżeli wyjściem programu nie jest TTY , to domyślnie zostanie użyty wskaźnik typu "dot".
Aby przełączyć się na zapis kropkowy należy użyć opcji --progres=dot. Śledzi on pobieranie wypisując kropki, a każda oznacza określoną ilość pobranych danych.
Przy korzystaniu z tego wskaźnika, można także ustalić styl. Wykonuje się to podając typ wskaźnika w postaci dot:styl. W różnych stylach pojedynczej kropce przypisuje się różne znaczenie. W stylu "default" każda kropka oznacza 1K (tysiąc), grupa liczy dziesięć kropek, a wiersz 50 kropek. Styl "binary" jest bardziej "komputerowy" -- 8K dla kropki, 16-kropkowe grupy i 48 kropek w wierszu (co daje 384K na wiersz). Przy pobieraniu dużych plików odpowiedni jest styl "mega" -- każda kropka symbolizuje pobrane 64K, w grupie jest osiem kropek, a w wierszu 48 (więc każdy wiersz zawiera 3M). Jeśli "mega" jest niewystarczające, można użyć "giga" - każda kropka symbolizuje 1M, w grupie jest osiem kropek, a w wierszu 32 (co daje 32M na wiersz).
Proszę zauważyć, że domyślny styl można ustawić za pomocą polecenia "progress" w swoim pliku .wgetrc. Ustawienie można przesłonić w wierszu poleceń. Wyjątkiem jest tu wyjście nie będące TTY , gdy pasek kropkowy jest faworyzowany w stosunku do paska kreskowego. Aby wymusić pasek kreskowy, należy użyć polecenia --progress=bar:force.
-N |
--timestamping
Włącza stosowanie znaczników czasu (time-stamping).
--no-use-server-timestamps
Nie ustawia znacznika czasu pliku lokalnego na podstawie znacznika z serwera.
Domyślnie, gdy plik jest pobierany, używany jest znacznik czasu pliku zdalnego. Pozwala to na użycie opcji --timestamping w kolejnych wywołaniach wgeta. Czasem korzystniej jest ustawić znacznik czasu na podstawie rzeczywistego czasu pobierania; w tym celu powstała opcja --no-use-server-timestamps.
-S |
--server-response
Wypisuje nagłówki wysyłane przez serwery HTTP i odpowiedzi wysyłane przez serwery FTP .
--spider
Wywołany z tą opcją, Wget będzie zachowywał się jak sieciowy pająk (Web spider), to znaczy, że nie będzie pobierał stron, a jedynie sprawdzał, czy tam są. Można to wykorzystać to sprawdzenia zakładek (bookmarks), na przykład tak:
wget --spider --force-html -i bookmarks.html
Ta funkcja wymaga jeszcze wiele pracy, by Wget osiągnął możliwości zbliżone do prawdziwych pająków WWW .
-T seconds
--timeout=sekundy
Ustawia sieciowy czas oczekiwania na sekundy sekund. Jest to odpowiednik jednoczesnego podania --dns-timeout, --connect-timeout i --read-timeout.
Podczas interakcji z siecią, Wget może sprawdzić czas oczekiwania i przerwać operację, gdy zabiera zbyt dużo czasu. Zapobiega to takim anomaliom jak zawieszenie odczytu i niekończące się łączenie. Jedynym domyślnym czasem oczekiwania jest 900 sekundowe oczekiwanie na odczyt. Ustawienie "0", wyłączy go. Nie poleca się zmian domyślnych ustawień, chyba że wie się, co się robi.
Wszystkie opcje związane z czasami oczekiwania akceptują wartości dziesiętne oraz ułamki sekundowe, np. 0.1 jest poprawną (choć bezsensowną) wartością czasu oczekiwania. Wartości mniejsze od sekundy są przydatne do sprawdzania czasu odpowiedzi serwera lub w celu testowania opóźnienia sieciowego.
--dns-timeout=sekundy
Ustawia czas translacji adresów DNS na sekundy sekund. Jeśli translacja DNS nie zostanie ukończona w podanym czasie, zakończy się błędem. Domyślnie, nie ma ograniczeń czasowych innych niż wynikających z implementacji bibliotek systemowych.
--connect-timeout=sekundy
Ustawia czas oczekiwania połączenia na sekundy sekund. Połączenia TCP , które potrzebują więcej czasu do poprawnego nawiązania, zostaną przerwane. Domyślnie, czas oczekiwania połączenia nie jest zdefiniowany, z wyłączeniem rozwiązań zaimplementowanych w bibliotekach systemowych.
--read-timeout=sekundy
Ustawia czasy oczekiwania odczytu (i zapisu) na sekundy sekund. "Czas" odnosi się tu do czasu bezczynności, tzn. jeśli w dowolnej chwili pobierania, dane nie są otrzymywane przez więcej niż podana liczba sekund, to odczyt zwraca błąd, a pobieranie jest restartowane. Opcja ta nie wpływa bezpośrednio na czas trwania samego pobierania.
Zdalny serwer może oczywiście przerwać połączenie wcześniej, niż wynika to z wymagań tej opcji. Domyślny czas oczekiwania odczytu wynosi 900 sekund.
--limit-rate=wielkość
Ogranicza prędkość pobierania do wielkość bajtów na sekundę. Wielkość może być wyrażona w bajtach, kilobajtach (z przyrostkiem k lub megabajtach (z przyrostkiem m. Na przykład --limit-rate=20k ograniczy prędkość pobierania do 20 KB/s. Jest to przydatne, gdy z jakiegoś powodu nie chce się pozwolić Wgetowi na zajęcie całej przepustowości łącza.
Opcja wymaga liczb dziesiętnych, połączonych z reguły z odpowiednim przyrostkiem; poprawną wartością jest na przykład --limit-rate=2.5k.
Proszę zauważyć, że implementację Wgeta jest wstrzymywanie transferu na pewny czas po tym, gdy odczyt sieciowy zabiera mniej czasu niż wynikałoby to z żądanej przepustowości. Ta strategia skutkuje ostatecznie spowolnieniem transferu TCP do wartości przybliżonej do podanej. Osiągnięcie zbalansowanego poziomu może chwilę potrwać, dlatego proszę się nie dziwić, że ograniczanie przepustowości nie działa zbyt dobrze w przypadku bardzo małych plików.
-w sekundy
--wait=sekundy
Odczekuje zadaną liczbę sekund pomiędzy kolejnymi pobraniami. Zaleca się używanie tej opcji, gdyż zmniejsza obciążenie serwera dzięki rzadszym żądaniom. Czas, zamiast w sekundach, można podać w minutach dodając przyrostek "m", w godzinach - dodając "h" lub w dniach - dodając "d".
Określanie dużej wartości tej opcji przydaje się jeśli sieć lub komputer docelowa są wyłączone. Wówczas Wget może odczekać wystarczająco długo, by rozsądnie spodziewać się, że przed ponowną próbą błąd sieci został naprawiony. Na czas oczekiwania określony przez tę opcję wpływa --random-wait.
--waitretry=sekundy
Opcję tę stosujemy jeśli nie chcemy, by Wget czekał pomiędzy każdym pobraniem, a tylko pomiędzy ponawianymi próbami nieudanych pobrań. Wget zastosuje odczekiwanie liniowe (linear backoff), czekając 1 sekundę po pierwszym niepowodzeniu z danym plikiem, następnie 2 sekundy po drugim niepowodzeniu z tym plikiem, aż do maksymalnej liczby sekund, jaką podano. Zatem, wartość 10 faktycznie spowoduje, że Wget będzie odczekiwał łącznie do (1 + 2 + ... + 10) = 55 sekund na każdy plik.
Domyślna wartość jaka zostanie przyjęta, wynosi 10 sekund.
--random-wait
W niektórych z ośrodków wykonywana jest analiza plików dziennikowych (tzw. logów), która ma na celu zidentyfikowanie programów do pobierania, takich jak Wget. Polega ona na wyszukiwaniu statystycznie znaczących podobieństw między różnicami czasu, jaki upłynął pomiędzy kolejnymi żądaniami. Ta opcja powoduje, że dla zamaskowania przed takimi analizami obecności Wgeta czas pomiędzy żądaniami będzie się wahać od 0,5 do 1,5 * sekundy, gdzie sekundy podano opcją --wait (-w).
W artykule z 2001, w pewnej publikacji poświęconej rozwijaniu oprogramowania na popularnych platformach klienckich, podano kod wykonujący taką analizę na bieżąco. Autor sugerował blokowanie na poziomie adresu klasy C, co ma gwarantować, że programy pobierające zostaną zablokowane niezależnie od zmiany adresów przedzielanych przez DHCP .
Opcja --random-wait powstała z powodu tej właśnie nierozważnej porady, zalecającej blokowanie wielu postronnych użytkowników ośrodka z powodu działań jednego z nich.
--no-proxy
Wyłącza używanie serwerów pośredniczących, nawet jeśli zdefiniowano odpowiednią zmienną środowiskową *_proxy.
-Q
wielkość
--quota=wielkość
Określa ograniczenie wielkości pobieranych danych przy ściąganiu automatycznym. Limit podawany jest w bajtach (domyślnie), kilobajtach (z przyrostkiem k) lub megabajtach (z przyrostkiem m).
Warto pamiętać, że ograniczenie to nigdy nie dotyczy pobierania pojedynczego pliku. Tak więc, jeśli podamy wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz, to zostanie ściągnięty cały plik ls-lR.gz. Tak samo dzieje się nawet wówczas, gdy w wierszu poleceń zostanie wyszczególnionych kilka URL-i. Ograniczenie wielkości jest jednak przestrzegane podczas pobierania rekurencyjnego lub według pliku wejściowego. Zatem, można spokojnie napisać wget -Q2m -i witryny -- po przekroczeniu ograniczenia ściąganie zostanie przerwane.
Ustawienie limitu na 0 lub na inf znosi ograniczenie pobierania.
--no-dns-cache
Wyłącza buforowanie translacji DNS . Wget zwykle zapamiętuje przetłumaczone adresy IP z DNS , dzięki czemu nie musi odpytywać ponownie serwera DNS w sprawie tego samego (zwykle małego) zestawu hostów, z których następuje pobieranie. Bufor istnieje wyłącznie w pamięci; nowa kopia Wgeta ponownie odpyta serwery DNS .
W niektórych przypadkach zostało zgłoszone, że buforowanie nazw hostów nie jest pożądane nawet, gdy trwa to tylko tyle, ile działanie Wgeta. Po użyciu tej opcji, Wget wysyła nowe żądanie translacji DNS (bardziej precyzyjnie: nowe wywołanie gethostbyname lub getaddrinfo) przy każdym zestawianiu nowego połączenia. Proszę zauważyć, że opcja ta nie wpływa na buforowanie, które może być wykonywane przez odpowiednią bibliotekę lub w zewnętrznej warstwie buforowania, takiej jak NSCD .
Jeśli przeznaczenie tej opcji nie jest całkowicie jasne, prawdopodobnie nie ma potrzeby jej stosowania.
--restrict-file-names=tryby
Zmienia znaki, które mają być cytowane w odnośnikach zewnętrznych podczas tworzenia lokalnych nazw plików. Znaki, które są ograniczone przez tę opcję, są cytowane - tzn. zastępowane przez %HH, gdzie HH jest liczbą szesnastkową odpowiadającą ograniczonemu znakowi. Opcję można wykorzystać również do wymuszenia określonej wielkości liter.
Domyślnie, Wget cytuje znaki, które nie są prawidłowe lub bezpieczne jako część nazwy pliku w danym systemie operacyjnym, jak również znaki kontrolne, które zwykle nie są wyświetlane. Opcja jest przydatna do zmiany wartości domyślnych, np. ponieważ plik został pobrany na partycję nienatywną, aby wyłączyć cytowanie znaków kontrolnych lub aby jeszcze bardziej ograniczyć zestaw znaków, do wartości ASCII .
Tryby są zestawem wartości tekstowych, oddzielonych przecinkiem. Akceptowanymi wartościami są: unix, windows, nocontrol, ascii, lowercase i uppercase. Wartości unix i windows są wzajemnie sprzeczne (jedna przesłoni drugą), podobnie jak lowercase i uppercase. Dwie ostatnie są wartościami specjalnymi, ponieważ nie zmieniają one zestawu znaków do cytowania, lecz wymuszają przekształcenie ścieżek plików lokalnych na, odpowiednio, małe litery i duże litery.
Jeśli użyje się trybu unix, to Wget będzie cytował znak / oraz znaki kontrolne z przedziałów 0-31 i 128-159. Jest to domyślne zachowanie w systemach uniksowych.
Przy podaniu trybu windows, Wget cytuje znaki \, |, /, :, ?, ", *, <, > oraz znaki kontrolne w przedziałach 0-31 i 128-159. Dodatkowo, w lokalnych nazwach plików, w trybie windowsowym Wget oddziela nazwę komputera i port znakiem + zamiast :, oraz używa @ zamiast ? do oddzielenia części zapytania w nazwie pliku od reszty. Dlatego, URL który w trybie uniksowym zostałby zachowany jako www.xemacs.org:4300/search.pl?input=blah, w trybie windowsowym zostanie zapisany jako www.xemacs.org+4300/search.pl@input=blah. Jest to domyślny tryb w systemie Windows.
Tryb nocontrol wyłącza cytowanie znaków kontrolnych. Opcja ta ma sens, gdy pobierane są URL-e zawierające znaki UTF-8 w systemie, który może zapisywać i wyświetlać nazwy plików w UTF-8 (część możliwych wartości bajtów używanych w sekwencjach UTF-8 mieści się w zakresie wartości opisywanych przez Wgeta jako "kontrolne".
Tryb ascii cytuje wszystkie bajty spoza zakresu znaków ASCII (czyli większe niż 127). Przydatne, gdy kodowanie nazw plików nie pasuje do tego używanego lokalnie.
-4 |
--inet4-only
-6 |
--inet6-only
Wymusza połączenia z adresami IPv4 lub IPv6. Z opcją --inet4-only lub -4, Wget połączy się wyłącznie z adresami IPv4, ignorując rekordy AAAA w DNS i odmawiając połączenia z adresami IPv6 podanymi w URL-u. Analogicznie, opcja --inet6-only lub -6 spowoduje łączenie się wyłącznie z adresami IPv6 i ignorowanie rekordów A i adresów IPv4.
Nie powinno się zwykle używać żadnej z tych opcji. Domyślnie, Wget obsługujący adresy IPv6 będzie używał rodziny adresów określonych przez rekord DNS hosta. Jeśli DNS odpowie zarówno adresem IPv4 jak i IPv6, to Wget spróbuje połączyć się z nimi po kolei, dopóki mu się to nie uda (zob. też opcja --prefer-family opisana poniżej).
Opcje te mogą posłużyć do celowego wymuszenia użycia rodzin adresów IPv4 lub IPv6 w systemach o podwójnej rodzinie adresów, zwykle w celu pomocy w debugowaniu lub do obsługi nieprawidłowej konfiguracji sieci. W tym samym czasie można użyć tylko jednej z opcji --inet6-only i --inet4-only. Żadna z nich nie jest dostępna we Wgecie skompilowanym bez obsługi IPv6.
--prefer-family=none/IPv4/IPv6
Gdy do wyboru będzie kilka adresów, łączy się najpierw z adresami z podanej rodziny. Kolejność adresów zwrócona przez DNS domyślnie jest używana bez zmian.
Zapobiega się w ten sposób fałszywym błędom i próbom łączenia przy dostępnie do hostów, które obsługują zarówno adresy IPv6 jak i IPv4 z sieci IPv4. Na przykład www.kame.net tłumaczy się na 2001:200:0:8002:203:47ff:fea5:3085 i 203.178.141.194. Jeśli preferowaną rodziną adresów jest "IPv4", to one są używane jako pierwsze; jeśli preferowaną rodziną jest "IPv6", adresy IPv6 mają pierwszeństwo. Jeśli podaną wartością jest "none", to używana jest kolejność adresów zwracana przez DNS .
W przeciwieństwie do opcji -4 i -6, ta opcja nie wyklucza dostępu do którejś rodziny adresów - zmienia jedynie kolejność wykorzystania adresów. Proszę również zauważyć, że zmiana kolejności wykonywana za pomocą tej opcji jest stabilna - nie dotyka kolejności adresów w tej samej rodzinie. Oznacza to, że względna kolejność adresów IPv4 i adresów IPv6, we wszystkich przypadkach pozostaje bez zmian.
--retry-connrefused
Uznaje "odrzucenie połączenia" za błąd przejściowy i próbuje ponownie. Zwykle Wget poddaje się w przypadku URL -i, przy których nie może się połączyć, ponieważ taki błąd uznawany jest za znak całkowitego niedziałania serwera i ponowne próby zwykle nie przyniosłyby rezultatu. Opcja jest przeznaczona do tworzenia kopii lustrzanych stron na niestabilnych serwerach, które mają tendencję do znikania na krótki czas z sieci.
--user=użytkownik
--password=hasło
Określa użytkownika użytkownik i hasło hasło do pobierania plików za pomocą FTP i HTTP . Można przesłonić te parametry za pomocą opcji --ftp-user i --ftp-password w przypadku połączeń FTP oraz --http-user i --http-password w przypadku połączeń HTTP .
--ask-password
Pyta o hasło po zestawieniu każdego połączenia. Nie można użyć tej opcji z --password, ponieważ wzajemnie się wykluczają.
--no-iri
Wyłącza obsługę URI ze znakami narodowymi ( IRI ). Opcja --iri włącza ją. Obsługa IRI jest domyślnie włączona.
Można ustawić domyślną wartość obsługi IRI za pomocą polecenia iri w .wgetrc, które może być przesłonięte z wiersza poleceń.
--local-encoding=kodowanie
Wymusza użycie kodowania jako domyślnego kodowania systemowego. Wpływa to na sposób, w jaki Wget przekształca URL-e podane jako argumenty do kodowania UTF-8 , w celu obsługi IRI .
Wget używa funkcji nl_langinfo(), a następnie zmiennej środowiskowej CHARSET w celu ustalenia kodowania. Jeśli nie powiedzie się to, używane jest ASCII .
Można ustawić domyślne kodowanie lokalne za pomocą polecenia local_encoding w .wgetrc, które może być przesłonięte z wiersza poleceń.
--remote-encoding=kodowanie
Wymusza użycie kodowania jako domyślnego kodowania serwera zdalnego. Wpływa to na sposób tłumaczenia URI znajdowanych w plikach, z kodowania zdalnego na UTF-8 podczas pobierania rekurencyjnego.Opcja jest przydatna tylko do obsługi IRI , w celu interpretacji znaków spoza ASCII.
W przypadku HTTP , kodowanie zdalne można znaleźć w nagłówku HTTP Content-Type i w metaznaczniku Content-Type http-equiv.
Można ustawić domyślne kodowanie za pomocą polecenia remoteencoding w .wgetrc, które może być przesłonięte z wiersza poleceń.
--unlink
Wymusza wykonywanie unlink na plikach, zamiast przebijania plików istniejących. Opcja jest przydatna w przypadku pobierania do katalogu zawierającego dowiązania zwykłe (twarde).
Opcje katalogów
-nd |
--no-directories
Nie tworzy hierarchii katalogów przy pobieraniu rekurencyjnym. Po włączeniu tej opcji wszystkie pliki będą zapisywane do bieżącego katalogu bez przebijania (jeśli nazwa pojawi się więcej niż raz, nazwy plików otrzymają rozszerzenie .n).
-x |
--force-directories
Przeciwieństwo -nd. Wymusza utworzenie hierarchii katalogów nawet jeśli nie miałaby być stworzona. Np. wget -x http://fly.srk.fer.hr/robots.txt zapisze ściągnięty plik jako fly.srk.fer.hr/robots.txt.
-nH |
--no-host-directories
Wyłącza tworzenie katalogów z nazwą hosta jako przedrostkiem. Domyślnie, -r http://fly.srk.fer.hr/ spowoduje utworzenie struktury katalogów zaczynającej się od fly.srk.fer.hr/, gdzie trafi cała reszta. Ta opcja wyłącza takie zachowanie.
--protocol-directories
Używa nazwy protokołu jako części nazwy katalogu plików lokalnych. Na przykład, po użyciu tej opcji wget -r http://host zostanie zapisane do katalogu http/host/... zamiast do host/....
--cut-dirs=liczba
Ignoruje podaną liczbę składowych katalogu. Przydatne do precyzyjnego sterowania katalogami, w których będą składowane pliki z pobierania rekurencyjnego.
Weźmy, na przykład, katalog ftp://ftp.xemacs.org/pub/xemacs/. Jeżeli pobierzemy go z -r, to lokalnie zostanie zachowany jako ftp.xemacs.org/pub/xemacs/. Mimo że opcja -nH pozwala na usunięcie części ftp.xemacs.org/, nadal utkniemy z pub/xemacs. Tu właśnie z pomocą przychodzi --cut-dirs. Powoduje, że Wget "nie widzi" zadanej liczby składowych zdalnego katalogu. Oto kilka przykładów pokazujących, jak działa opcja --cut-dirs.
Brak opcji -> ftp.xemacs.org/pub/xemacs/ -nH -> pub/xemacs/ -nH --cut-dirs=1 -> xemacs/ -nH --cut-dirs=2 -> . --cut-dirs=1 -> ftp.xemacs.org/xemacs/ ...
Jeśli chcemy po prostu pozbyć się struktury katalogów, to opcja ta jest podobna do kombinacji -nd i -P. Jednak --cut-dirs, w przeciwieństwie do -nd, nie pozbywa się podkatalogów -- na przykład, przy -nH --cut-dirs=1, podkatalog beta/ będzie, zgodnie z oczekiwaniami, umieszczony w xemacs/beta.
-P prefiks
--directory-prefix=prefiks
Ustawia przedrostek katalogów na prefiks. Przedrostek katalogów oznacza katalog, zostaną zapisane wszystkie inne pliki i katalogi, tzn. wierzchołek drzewa pobierania. Domyślnym przedrostkiem jest ., katalog bieżący.
Opcje HTTP
--default-page=nazwa
Używa nazwy jako domyślnej nazwy pliku, gdy nie jest ona znana (np. w przypadku URL-ów kończących się ukośnikiem), zamiast index.html.
-E |
--adjust-extension
Jeśli pobierany jest plik typu application/xhtml+xml lub text/html a jego URL nie kończy się wyrażeniem regularnym \.[Hh][Tt][Mm][Ll]?, to opcja ta spowoduje dodanie przyrostka .html do lokalnej nazwy pliku. Przydatne, na przykład, gdy tworzymy kopię lustrzaną witryny, która używa stron .asp, ale chcemy, by pozyskane strony dawały się przeglądać za pomocą własnego serwera Apache. Innym dobrym zastosowaniem jest pobieranie wyjścia generowanego przez skrypty CGI. URL typu http://site.com/article.cgi?25 zostanie zachowany jako article.cgi?25.html.
Proszę zauważyć, że pliki o zmienionych w ten sposób nazwach będą ponownie pobierane za każdym razem gdy będziemy odświeżać kopię lustrzaną witryny. Dzieje się tak, ponieważ Wget nie potrafi stwierdzić, że lokalny plik X.html odpowiada zdalnemu URL-owi X (gdyż nie wie, że ten URL tworzy wyjście typu text/html lub application/xhtml+xml).
Wget upewni się też (stan na wersję 1.12), że pobierane pliki typu text/css kończą się przyrostkiem .css. Zmieniono nazwę tej opcji z --html-extension, aby lepiej oddać to nowe zachowanie. Stara nazwa opcji jest wciąż akceptowana, ale jest przestarzała.
W przyszłości, opcja może zostać poszerzona, aby objąć również przyrostki innych typów zawartości, w tym takich, które nie są przetwarzane przez Wget.
--http-user=użytkownik
--http-password=hasło
Określa nazwę użytkownika i hasło, które Wget prześle serwerowi HTTP . W zależności od rodzaju protokołu wezwanie-odpowiedź, Wget koduje je stosując albo uwierzytelnianie podstawowe (basic, niechronione), albo w oparciu o skrót (digest) lub też korzystając z metody Windowsa (NTLM).
Inną metodę podania nazwy i hasła użytkownika jest wyszczególnienie ich w samym URL-u. Obie te metody ujawniają hasło każdemu, kto zechce uruchomić ps. Żeby uchronić hasła przed podpatrzeniem, należy przechowywać je w pliku .wgetrc lub .netrc i, za pomocą chmod, zapewnić tym plikom ochronę przed innymi użytkownikami. Jeżeli hasła są naprawdę ważne, w tych plikach też nie należy trzymać ich na stałe -- proszę usunąć je z plików zaraz po rozpoczęciu pobierania przez Wgeta.
--no-http-keep-alive
Wyłącza funkcję "keep-alive" pobierań HTTP . Wget zwykle prosi serwer o utrzymywanie otwartego połączenia, dzięki czemu, jeśli pobiera się więcej niż jeden dokument z tego samego serwera, są przesyłane tym samym połączeniem TCP . Oszczędza to czas i redukuje obciążenie serwera.
Opcja jest przydatna, gdy połączenia stałe (keep-alive) nie działają poprawnie, np. z powodu błędu serwera lub niemożności obsługi takich połączeń przez skrypty po stronie serwera.
--no-cache
Wyłącza buforowanie po stronie serwera. W takim przypadku Wget wysyła zdalnemu serwerowi odpowiednią komendę (Pragma: no-cache), dzięki której plik zostanie pobrany z usługi zdalnej, a nie zwrócona zostanie wersja buforowana. Jest to szczególnie przydatne do pobierania i wymiatania przeterminowanych dokumentów z serwerów proxy.
Domyślnie, buforowanie jest dozwolone.
--no-cookies
Wyłącza używanie ciasteczek (cookies). Ciasteczka są mechanizmem do przechowywania stanu po stronie serwera. Serwer przesyła klientowi ciasteczko stosując nagłówek Set-Cookie, a klient przy późniejszych żądaniach odpowiada tym samym ciasteczkiem. Ponieważ ciasteczka umożliwiają właścicielom serwera prowadzenie rejestrów gości i wymianę się tymi informacjami z innymi ośrodkami, niektórzy uważają je za pogwałcenie prywatności. Domyślnie cookies są używane, jednak ich zapisywanie nie jest domyślnie włączone.
--load-cookies plik
Przed pierwszym pobraniem HTTP wczytuje ciasteczka z pliku. Plik jest plikiem tekstowym w formacie, jaki pierwotnie zastosowano dla pliku cookies.txt przeglądarki Netscape.
Na ogół korzysta się z tej opcji przy tworzeniu kopii lustrzanych tych ośrodków, które do skorzystania z części lub całości zasobów wymagają zalogowania się. Proces logowania się zwykle polega na tym, że po otrzymaniu od nas informacji uwierzytelniającej i jej zweryfikowaniu serwer WWW wysyła ciasteczko HTTP . Następnie, gdy przeglądarka sięga do zasobów, odsyła serwerowi otrzymane ciasteczko, potwierdzając w ten sposób naszą tożsamość.
Utworzenie
kopii tego rodzaju witryny wymaga wysyłania przez Wget
takich samych ciasteczek, jakie podczas komunikowania
się z tym ośrodkiem przesyła nasza
przeglądarka. Osiąga się to za pomocą
--load-cookies -- wystarczy wskazać programowi
lokalizację pliku cookies.txt, a on wyśle
te same ciasteczka, które w tej samej sytuacji
wysłałaby przeglądarka. Poszczególne
przeglądarki przechowują tekstowe pliki ciasteczek
w różnych miejscach:
"Netscape 4.x."
Ciasteczka są w ~/.netscape/cookies.txt.
"Mozilla and Netscape 6.x."
Plik ciasteczek Mozilli nazywa się również cookies.txt, jest położony gdzieś w ~/.mozilla, w katalogu właściwym dla profilu użytkownika. Pełna ścieżka zazwyczaj kończy się czymś w rodzaju ~/.mozilla/default/coś-dziwnego/cookies.txt.
"Internet Explorer."
Ciasteczko, jakiego mógłby użyć Wget, można utworzyć korzystając z menu "Plik" i opcji "Importuj i Eksportuj", "Eksportuj pliki cookie". Zostało to przetestowane z Internet Explorerem 5 -- nie ma gwarancji, że będzie działać z wcześniejszymi wersjami.
"Other browsers."
Jeżeli do tworzenia ciasteczek korzysta się z innej przeglądarki, --load-cookies będzie działać tylko wtedy, gdy uda się je zlokalizować lub utworzyć plik ciasteczek w formacie Netscape, jakiego oczekuje Wget.
Jeśli nie można skorzystać z --load-cookies, jest jeszcze inna możliwość. Jeśli używana przeglądarka udostępnia "menedżera plików cookie", można z niego skorzystać, żeby podglądnąć ciasteczka, jakie zostały wykorzystane podczas uzyskiwania dostępu do witryny, której kopię chce się utworzyć. Proszę zapisać nazwę i wartość ciasteczka, a następnie ręcznie nakazać Wgetowi wysłanie ciasteczka o zadanej postaci, obchodząc równocześnie "oficjalny" kod odpowiedzialny za obsługę ciasteczek:
wget --no-cookies --header "Cookie:I<nazwa>=I<wartość>"
--save-cookies plik
Zachowuje ciasteczka do pliku przed wyjściem. Nie zostaną zapisane ciasteczka przeterminowane lub nieposiadające daty ważności (zwane "ciasteczkami sesyjnymi"); por. --keep-session-cookies.
--keep-session-cookies
Po podaniu, powoduje że --save-cookies zachowuje również ciasteczka sesyjne, które zwykle nie są zapisywane, ponieważ są przeznaczone do zachowania w pamięci i usunięcia z niej po zamknięciu przeglądarki. Zachowywanie ich może być przydatne na stronach, które wymagają logowania lub odwiedzenia strony głównej przed uzyskaniem dostępu do innych stron. Po skorzystaniu z tej opcji, różne przebiegi Wgeta mogą być traktowane jako jedna sesja przeglądarki, w zależności od strony internetowej.
Ponieważ format pliku ciasteczek nie przechowuje zwykle ciasteczek sesyjnych, Wget oznacza je znacznikiem czasowym przedawnienia równym 0. Opcja --load-cookies rozpoznaje je jako ciasteczka sesyjne, lecz może to zmylić inne przeglądarki. Proszę zwrócić uwagę, że tak załadowane ciasteczka będą traktowane jak inne ciasteczka sesji, co oznacza, że trzeba użyć opcji --keep-session-cookies ponownie, aby zachować je za pomocą opcji --save-cookies.
--ignore-length
Niestety, niektóre serwery HTTP (dokładniej mówiąc, programy CGI ) wysyłają błędne nagłówki Content-Length, co powoduje, że Wget głupieje, sądząc, że nie została pobrana całość dokumentu. Syndrom ten można uchwycić, gdy Wget próbuje w kółko pobierać ten sam dokument, za każdym razem twierdząc, że (inaczej niż zwykle) połączenie zostało zamknięte na dokładnie tym samym bajcie.
Wywołany z tą opcją, Wget będzie ignorował nagłówek Content-Length, tak jakby nie istniał.
--header=wiersz-nagłówka
Wysyła wiersz-nagłówka razem z pozostałą częścią nagłówka w każdym żądaniu HTTP . Podany nagłówek jest wysyłany bez zmian, tak więc musi zawierać nazwę i wartość (po dwukropku) i nie może zawierać znaku nowego wiersza.
Możliwe jest określenie więcej niż jednego dodatkowego nagłówka przez kilkakrotne podanie opcji --header.
wget --header='Accept-Charset: iso-8859-2' \ --header='Accept-Language: hr' \ http://fly.srk.fer.hr/
Podanie pustego łańcucha jako nagłówka kasuje wszystkie uprzednio zdefiniowane przez użytkownika nagłówki.
Od Wgeta 1.10, można użyć tej opcji do przesłonięcia nagłówków, które byłyby wygenerowane automatycznie. Oto przykład nakazania Wgetowi połączenie z komputerem lokalnym, jednak podając foo.bar w nagłówku Host:
wget --header="Host: foo.bar" http://localhost/
W wersjach poniżej 1.10, takie użycie opcji --header powodowało wysyłanie zduplikowanych nagłówków.
--max-redirect=liczba
Określa maksymalną liczbę przekierowań w celu dotarcia do zasobu. Domyślnie jest to 20, czyli znaczniej więcej niż z reguły potrzeba. Opcja może się przydać, jeśli zajdzie potrzeba pozwolenia na więcej (lub mniej) przekierowań.
--proxy-user=użytkownik
--proxy-passwd=hasło
Określają nazwę użytkownika i hasło, które zostaną użyte do uwierzytelnianiana serwerze pośredniczącym. Wget koduje je stosując podstawowy (basic) schemat uwierzytelniania.
Odnoszą się do tego podobne zagadnienia związane z bezpieczeństwem, jak w przypadku opcji --http-password.
--referer=url
Zamieszcza nagłówek "Referer: url" w żądaniu HTTP . Przydatne do pobierania dokumentów z takim przetwarzaniem po stronie serwera, które zakłada, że są one zawsze pobierane przez interaktywne przeglądarki internetowe i uznawane za poprawne tylko wtedy, gdy Referer jest ustawione na jedną ze stron, które na nie wskazują.
--save-headers
Zapisuje nagłówki wysyłane przez serwer HTTP do pliku, przed właściwą zawartością, z pustym wierszem jako separatorem.
-U nazwa-agenta
--user-agent=nazwa-agenta
Serwerowi HTTP przedstawia się jako agent o podanej nazwie.
Protokół HTTP pozwala klientom na podanie, za pomocą pola User-Agent nagłówka swojej tożsamości. Umożliwia to rozróżnianie oprogramowania WWW , zwykle do celów statystycznych lub śledzenia naruszeń protokołu. Wget normalnie przedstawia się jako Wget/wersja, gdzie wersja jest aktualnym numerem wersji programu.
Znane są jednak pewne witryny narzucające politykę przykrawania wyników stosownie do informacji dostarczonej im w polu User-Agent. Mimo iż koncepcyjnie nie jest to taki zły pomysł, zaczął być nadużywany przez serwery odmawiające informacji klientom innym niż (kiedyś) Netscape lub, częściej, Internet Explorer. Ta opcja umożliwia zmianę linii User-Agent wysyłanej przez Wget. Nie zachęcamy do używania tej opcji, chyba że z pełną świadomością.
Podanie pustego łańcucha za pomocą --user-agent="" powoduje, że Wget nie będzie wysyłał nagłówka User-Agent w żądaniach HTTP .
--post-data=łańcuch
--post-file=plik
Używa metody POST do wszystkich żądań HTTP i wysyła podane dane w ciele żądania. --post-data wysyła łańcuch jako dane, podczas gdy --post-file wysyła zawartość pliku. W pozostałych aspektach ich działanie jest identyczne. W szczególności obie opcje oczekują zawartości w postaci klucz=wartość&klucz2=wartość2, kodowaniem znaków specjalnych w postaci procentowej; jedyną różnicą jest, że jedna oczekuje zawartości jako parametru wiersza polecenia, a druga akceptuje swą treść z pliku. W szczególności, --post-file nie przysyła plików w postaci załączników, muszą być to dane w postaci klucz=wartość (z właściwym kodowaniem "procentowym"), jak zaznaczono wyżej. Wget nie obsługuje obecnie multipart/form-data przy przesyłaniu danych POST , a jedynie application/x-www-form-urlencoded. Proszę użyć jedynie jednej z opcji --post-data i --post-file.
Proszę zauważyć, że wget nie wymaga aby zawartość była w postaci "klucz1=wartość1&klucz2=wartość2" ani nie sprawdza tego. Wget przesyła takie dane, jakie mu dostarczono. Większość serwerów oczekuje jednak, aby dane POST występowały w powyższej postaci przy przetwarzaniu formularzy HTML .
Proszę zwrócić uwagę, że Wget musi znać rozmiar danych POST z góry. W związku z tym, argumentem do opcji --post-file musi być zwykły plik; przekazanie potoku FIFO lub czegoś takiego jak /dev/stdin nie zadziała. Nie jest do końca jasne, jak obejść to ograniczenie wpisane w protokół HTTP/1 .0. Choć HTTP/1 .1 wprowadza transfer fragmentaryczny, który nie wymaga wiedzy o długości żądania z góry, to klient nie może go używać, dopóki nie wie, że komunikuje się z serwerem HTTP/1 .1. Nie może tego wiedzieć, dopóki nie otrzyma odpowiedzi, która wymaga pełnego żądania...
Uwaga: Według stanu na wersję 1.15 przy przekierowaniu Wgeta po sfinalizowaniu żądania POST , zachowanie programu będzie zależało od kodu zwróconego przez serwer. Jeśli będzie to 301 Moved Permanently, 302 Moved Temporarily lub 307 Temporary Redirect, Wget, zgodnie z RFC2616, , będzie kontynuował wysyłanie żądania POST . Jeśli serwer chce zmienić metodę żądań klienta przy przekierowaniu powinien wysłać kod 303 See Other.
Przykład pokazuje, jak zalogować się do serwera używającego POST , a następnie przejść do pobierania żądanych stron, dostępnych prawdopodobnie tylko dla użytkowników uwierzytelnionych:
# Logowanie do serwera. Można to zrobić tylko raz. wget --save-cookies cookies.txt \ --post-data ’user=foo&password=bar’ \ http://server.com/auth.php # Teraz przechwytujemy stronę lub strony o które nam chodzi. wget --load-cookies cookies.txt \ -p http://server.com/interesting/article.php
Jeśli serwer używa ciasteczek sesji do śledzenia uwierzytelnienia użytkownika, to powyższy przykład nie zadziała, ponieważ --save-cookies nie zachowa ich (podobnie jak przeglądarki), a plik cookies.txt będzie pusty. W takim przypadku, oprócz --save-cookies należy użyć również --keep-session-cookies.
--method=metoda-HTTP
Do skryptów "restowych" (RESTfull, gdzie REST oznacza Representational State Transfer) Wget pozwala na wysłanie innych metod HTTP bez konieczności jawnego ustawiania ich przy pomocy opcji --header=Header-Line. Wget użyje takiego łańcucha, jaki jest mu podany po --method jako metoda HTTP do serwera.
--body-data=łańcuch-danych
--body-file=plik-danych
Opcja musi być ustawiona gdy konieczne jest wysłanie dodatkowych danych do serwera przy użyciu metody podanej w --method. --body-data wysyła łańcuch-danych jako dane, a --body-file wysyła zawartość pliku-danych. Poza tym obie opcje działają tak samo.
Obecnie --body-file nie służy do transmisji plików jako całości. Wget nie obsługuje w tej chwili "multipart/form-data" do transmisji danych, a jedynie "application/x-www-form-urlencoded". W przyszłości może się to zmienić tak, aby wget wysyłał --body-file jako cały plik zamiast wysyłania jego zawartości na serwer. Proszę zauważyć, że Wget musi znać wpierw zawartość danych BODY , dlatego argument do opcji --body-file powinien być zwykłym plikiem. Więcej szczegółów znajduje się w opisie opcji --post-file. Powinno się podawać albo opcję --body-data albo --body-file.
Jeśli Wget zostanie przekierowany po sfinalizowaniu żądania, wznowi bieżącą metodę i będzie wysyłał żądanie GET aż do zakończenia przekierowania. Jest tak w przypadku wszystkich kodów z wyjątkiem 307 Temporary Redirect, który służy do bezpośredniego wskazania, ze metoda nie powinna się zmienić. Inny wyjątek ma miejsce gdy metoda jest ustawiona na "POST", ponieważ wówczas przestrzegane są zasady określone przez --post-data.
--content-disposition
Opcja włącza eksperymentalną (niepełną) obsługę nagłówka Content-Disposition. Może to obecnie spowodować dodatkowe kluczenie serwera związane z żądaniami HEAD, znane jest również kilka błędów, co powoduje, że opcja ta domyślnie nie jest włączona.
Opcja jest przydatna niektórym programom CGI pobierającym pliki, które używają nagłówków Content-Disposition do opisania nazwy pobieranego pliku.
--content-on-error
Jeśli ta opcja jest włączona, to wget nie będzie pomijał zawartości gdy serwer odpowie kodem statusu http wskazującym na błąd.
--trust-server-names
Jeśli jest włączona, przy przekierowaniu ostatnia część przekierowującego URL -a będzie używana jako lokalna nazwa pliku. Domyślnie korzysta się z ostatniej części URL -a pierwotnego.
--auth-no-challenge
Jeśli opcja jest podana, Wget będzie wysyłał proste (Basic) informacje uwierzytelniające HTTP (nazwa użytkownika i hasło w jawnym tekście) przy wszystkich żądaniach, tak jak domyślnie robił to Wget w wersjach 1.10.2 i wcześniejszych.
Używanie tej opcji nie jest zalecane, jako że została przeznaczona jedynie do obsługiwania kilku zapomnianych serwerów, które nigdy nie wysyłają pytań o uwierzytelnienie HTTP , lecz akceptują nieżądane informacje uwierzytelniające, oprócz uwierzytelnienia opartego na formularzu.
Opcje (
SSL/TLS ) HTTPS
W celu obsługi szyfrowanych pobierań
HTTP ( HTTPS ), Wget musi
być skompilowany z dodatkową biblioteką
SSL - obecnie OpenSSL. Jeśli Wget jest
skompilowany bez obsługi SSL ,
żadna z tych opcji nie będzie dostępna.
--secure-protocol=protokół
Wybiera protokół zabezpieczeń. Poprawnymi wartościami są auto, SSLv2, SSLv3, TLSv1 i PFS . Jeśli używane jest auto, automatycznego wyboru protokołu dokonuje biblioteka SSL , co jest osiągane przez wysłanie pozdrowienia SSLv2 z informacją o obsłudze SSLv3 i TLSv1. Tak jest domyślnie.
Podanie SSLv2, SSLv3 lub TLSv1 wymusza użycie odpowiedniego protokołu. Jest to przydatne przy komunikacji ze starymi i błędnymi implementacjami SSL serwera, które nie pozwalają na łatwy wybór poprawnej wersji protokołu przez bibliotekę SSL . Na szczęście, takie serwery są rzadkością.
Określenie PFS wymusza używanie zestawów kluczy Perfect Forward Security (PFS). W skrócie, PFS zwiększa bezpieczeństwo tworząc jednorazowy klucz do każdego połączenia. Używa też nieco więcej mocy CPU zarówno na kliencie jak i na serwerze. Używamy kluczy, które są uznawane za bezpieczne (tzn. np nie jest to MD4 ) oraz protokołu TLS .
--https-only
W trybie rekurencyjnym podąża wyłącznie za odnośnikami HTTPS .
--no-check-certificate
Nie sprawdza certyfikatu serwera pod kątem dostępnego ośrodka certyfikacji. Nie wymaga również tego, aby nazwa hosta URL-a pasowała do nazwy ogólnej w certyfikacie.
Od wersji 1.10, Wget domyślnie weryfikuje certyfikat serwera w odniesieniu do znanych ośrodków certyfikacji, przerywając nawiązanie połączenia SSL (handshaking) i pobieranie pliku, jeśli weryfikacja się nie powiedzie. Choć zwiększa się w ten sposób bezpieczeństwo pobierań, zrywa to jednak kompatybilność z niektórymi stronami, które działały z poprzednimi wersjami Wgeta, szczególnie korzystającymi z podpisanych przez siebie, wygasłych lub niepoprawnych z innego powodu certyfikatów. Opcja ta wymusza "niebezpieczny" tryb działania, który zmienia błędy weryfikacji certyfikatów w ostrzeżenia i pozwala kontynuować.
Jeśli wystąpią błędy "weryfikacji certyfikatu" lub błąd o treści "nazwa w certyfikacie nie pasuje do żądanej nazwy hosta", można użyć tej opcji aby ominąć weryfikację i kontynuować pobieranie. Proszę używać tej opcji tylko wtedy, gdy jest się przekonanym o wiarygodności strony lub gdy kompletnie nie dba się o poprawność jej certyfikatu. Przy przesyłaniu poufnych lub ważnych danych, niesprawdzanie certyfikatu jest zwykle bardzo złym pomysłem.
--certificate=plik
Używa certyfikatu klienta z pliku. Jest to konieczne w przypadku serwerów wymagających certyfikatów od klientów, którzy się z nimi łączą. Zwykle taki certyfikat nie jest wymagany, a ten przełącznik jest opcjonalny.
--certificate-type=typ
Określa typ certyfikatu klienta. Poprawnymi wartościami są PEM (zakładany domyślnie) i DER, znany również jako ASN1.
--private-key=plik
Odczytuje klucz prywatny z pliku. Pozwala to na dostarczenie klucza prywatnego w oddzielnym od certyfikatu pliku.
--private-key-type=typ
Określa typ klucza prywatnego. Akceptowanymi wartościami są PEM (domyślnie) i DER .
--ca-certificate=plik
Używa pliku jako pliku z zestawem ośrodków certyfikacji (" CA" ) do weryfikacji pośredników. Certyfikaty muszą być w formacie PEM .
Bez tej opcji, Wget szuka certyfikatów CA w lokalizacji systemowej, wybranej podczas instalacji OpenSSL.
--ca-directory=katalog
Określa katalog zawierający certyfikaty CA w formacie PEM . Każdy plik zawiera certyfikat CA , a nazwa pliku jest oparta o wartości skrótu wyliczonego na podstawie certyfikatu. Osiąga się to przetwarzając katalog certyfikatów narzędziem rehash pochodzącego z OpenSSL. Używanie --ca-directory jest efektywniejsze od --ca-certificate w przypadku, gdy zainstalowanych jest wiele certyfikatów, ponieważ pozwala Wgetowi pobierać certyfikaty na żądanie.
Bez tej opcji, Wget szuka certyfikatów CA w lokalizacji systemowej, wybranej podczas instalacji OpenSSL.
--random-file=plik
Używa pliku jako źródła losowych danych służących za ziarno do generatora liczb pseudolosowych, w systemach pozbawionych /dev/random.
W takich systemach biblioteka SSL wymaga zewnętrznego źródła losowości do rozpoczęcia pracy. Może być EGD (por. --egd-file poniżej) lub odczyt z zewnętrznego źródła podanego przez użytkownika. Jeśli nie poda się tej opcji, Wget poszuka losowych danych w $RANDFILE lub, jeśli zmienna nie jest ustawiona, w $HOME/.rnd. Jeśli żadna z metod się nie powiedzie, prawdopodobnie nie będzie się dało zastosować szyfrowania SSL .
Pojawienie się błędu "Could not seed OpenSSL PRNG ; disabling SSL ." oznacza, że należy zapewnić losowe dane korzystając z jednej z powyższych metod.
--egd-file=plik
Używa pliku jako gniazda EGD . EGD to skrót od Entropy Gathering Daemon (demon pozyskujący entropię), programu działającemu w przestrzeni użytkownika, który zbiera dane z różnych nieprzewidywalnych źródeł w systemie i udostępnia je innym programom, które mogą ich potrzebować. Oprogramowanie szyfrujące, takie jak biblioteka SSL wymaga źródeł niepowtarzającej się losowości, do wykorzystania jako ziarno generatora liczb losowych, używanego do tworzenia kluczy silnych kryptograficznie.
OpenSSL pozwala użytkownikowi podać swoje źródło entropii za pomocą zmiennej środowiskowej RAND_FILE. Jeśli pozostanie ona nieustawiona lub podany plik nie tworzy wystarczającej losowości, OpenSSL odczyta dane losowe z gniazda EGD podanego za pomocą opisywanej opcji.
Jeśli nie poda się tej opcji (ani nie użyje się równoważnego polecenia uruchomieniowego), EGD nigdy nie zostanie użyte. Mechanizm ten nie jest potrzebny w nowoczesnych systemach uniksowych, obsługujących /dev/random.
--warc-file=plik
Używa pliku jako celu pliku WARC .
--warc-header=łańcuch
Używa łańcucha jako rekordu warcinfo.
--warc-max-size=rozmiar
Ustawia maksymalny rozmiar plików WARC na rozmiar.
--warc-cdx
Zapisuje pliku indeksu CDX .
--warc-dedup=pliku
Nie przechowuje rekordów wyszczególnionych w danym pliku CDX .
--no-warc-compression
Nie kompresuje plików WARC za pomocą GZIP .
--no-warc-digests
Nie oblicza sum SHA1 .
--no-warc-keep-log
Nie przechowuje pliku dziennika w rekordzie WARC .
--warc-tempdir=katalog
Określa położenie plików tymczasowych tworzonych przy zapisie WARC .
Opcje
FTP
--ftp-user=użytkownik
--ftp-password=hasło
Określa nazwę użytkownika i hasło serwera FTP . Bez tej opcji (i równoważnej opcji uruchomieniowej) używane jest domyślne hasło -wget@, używane zwykle do anonimowych FTP .
Inną metodę podania nazwy i hasła użytkownika jest wyszczególnienie ich w samym URL-u. Obie te metody ujawniają hasło każdemu, kto zechce uruchomić ps. Żeby uchronić hasła przed podpatrzeniem, należy przechowywać je w pliku .wgetrc lub .netrc i, za pomocą chmod, zapewnić tym plikom ochronę przed innymi użytkownikami. Jeżeli hasła są naprawdę ważne, w tych plikach też nie należy trzymać ich na stałe -- proszę usunąć je z plików zaraz po rozpoczęciu pobierania przez Wgeta.
--no-remove-listing
Nie usuwa tymczasowych plików .listing generowanych przez odczyty FTP . Normalnie, pliki te zawierają nieprzetworzone listingi katalogów otrzymane z serwerów FTP . Pozostawienie ich może się przydać do celów diagnostycznych lub łatwego sprawdzenia zawartości katalogów zdalnego serwera (np. do sprawdzenia, że tworzona kopia lustrzana jest kompletna).
Proszę zauważyć, że mimo iż Wget zapisuje w tym przypadku do pliku o znanej nazwie, nie jest to dziura w zabezpieczeniach w sytuacji, gdy użytkownik stworzy .listing jako dowiązanie symboliczne do /etc/passwd czy innego pliku i poprosi superużytkownika (roota) o uruchomienie Wget w tym katalogu. W zależności od użytych opcji, Wget albo odmówi zapisu do .listing (co spowoduje niepowodzenie operacji na maskach, rekurencyjnej czy zależnej od znaczników czasu), albo dowiązanie symboliczne zostanie usunięte i zastąpione faktycznym plikiem .listing, albo też listing zostanie zapisany do pliku .listing.numer.
Choć ta sytuacja nie stwarza kłopotów, jednak root nie powinien nigdy uruchamiać Wget w katalogu niezaufanego użytkownika. Użytkownik taki mógłby na przykład dowiązać index.html do /etc/passwd i poprosić "root"a o uruchomienie Wget z opcjami -N lub -r, tak że plik ten zostałby nadpisany.
--no-glob
Wyłącza obsługę masek w przypadku FTP . Obsługa masek oznacza, że można używać znaków specjalnych, uogólniających (wieloznaczników), takich jak *, ?, [ i ], do pobrania większej liczby plików z tego samego katalogu naraz, np.
wget ftp://gnjilux.srk.fer.hr/*.msg
Domyślnie obsługa masek będzie włączona jeśli URL zawiera znaki uogólniające. Tej opcji można użyć do włączenia bądź wyłączenia obsługi masek na stałe.
Może zajść potrzeba ujęcia URL-a w znaki cudzysłowu, by uchronić go przed rozwinięciem przez powłokę. Obsługa masek powoduje, że Wget oczekuje listingu katalogu, którego postać jest zależna od systemu. Z tego powodu obecnie działa tylko z uniksowymi serwerami FTP (i z tymi, które potrafią emulować wyjście uniksowego ls).
--no-passive-ftp
Wyłącza użycie pasywnego trybu transferu FTP . Pasywny FTP nakazuje klientowi łączącemu się z serwerem zestawić połączenie, zamiast wykorzystywać inne rozwiązania.
Jeśli komputer ma bezpośrednie połączenie z Internetem, to zarówno pasywne jak i aktywne FTP powinny działać tak samo dobrze. Za większością zapór sieciowych i konfiguracji NAT , pasywny FTP ma większą szansę działania. Jednak w niektórych rzadkich konfiguracjach zapór, aktywny FTP działa, a pasywny FTP nie. Jeśli zachodzi prawdopodobieństwo, że ma miejsce ta sytuacja, proszę użyć opisywanej opcji lub ustawić w swym pliku konfiguracyjnym passive_ftp=off.
--preserve-permissions
Zachowuje uprawnienia zdalnych plików zamiast uprawnień wynikających z umask.
--retr-symlinks
Zwykle przy rekurencyjnym pobieraniu katalogów FTP , gdy program natknie się na dowiązanie symboliczne, plik docelowy nie jest pobierany, natomiast tworzone jest odpowiednie dowiązanie w lokalnym systemie plików. Plik docelowy nie jest pobierany, chyba że pobieranie rekurencyjne dosięgło go bezpośrednio.
Przy opcji --retr-symlinks Wget podąża za dowiązaniem symbolicznym i pobiera plik, na który ono wskazuje. Obecnie opcja ta nie powoduje tłumaczenia dowiązań symbolicznych katalogów i dalszego pobierania rekurencyjnego w nim, lecz w przyszłości powinna otrzymać taką możliwości.
Proszę zauważyć, że przy pobieraniu pliku (nie katalogu) podanego w wierszu poleceń, a nie osiągniętego z powodu pobierania rekurencyjnego, opcja nie odnosi skutku. W takich przypadkach plik docelowy dowiązania jest zawsze pobierany.
Opcje pobierania rekurencyjnego
-r |
--recursive
Włącza pobieranie rekurencyjne. Domyślny maksymalny poziom wynosi 5.
-l
głębokość
--level=głębokość
Podaje maksymalny poziom głębokości rekurencji.
--delete-after
Ta opcja nakazuje Wget usunięcie każdego z plików, jaki pobiera, po wykonaniu ściągania. Jest przydatna do pobierania wstępnego (prefetching) popularnych stron poprzez serwer pośredniczący, np.:
wget -r -nd --delete-after http://whatever.com/~popular/page/
Opcja -r nakazuje pobieranie rekurencyjne, a -nd nietworzenie katalogów.
Proszę zauważyć, że --delete-after usuwa pliki z lokalnego komputera. Nie wydaje polecenia DELE , na przykład zdalnym ośrodkom FTP . Także jeśli podano --delete-after, to --convert-links jest ignorowane, więc przede wszystkim pliki .orig po prostu nie są tworzone.
-k |
--convert-links
Po zakończeniu pobierania konwertuje odnośniki w dokumencie tak, by nadawały się do lokalnego przeglądania. Dotyczy to nie tylko widzialnych odnośników hipertekstowych, ale każdej części dokumentu, która prowadzi do zewnętrznych materiałów, jak osadzone obrazki, odnośniki do arkuszy stylów, odnośniki hipertekstowe do zawartości innej niż HTML , itp.
Każdy odnośnik będzie zmieniony na jeden z dwu sposobów:
• |
Odnośniki do plików, które zostały ściągnięte przez Wget zostaną zmienione tak, by odwoływały się do pliku, na jaki wskazują, jako odnośniki względne. |
Przykład: jeśli ściągnięty plik /foo/doc.html jest powiązany z z /bar/img.gif, również ściągniętym, to odnośnik w doc.html zostanie zmieniony tak, by wskazywał na ../bar/img.gif. Ten rodzaj przekształcenia działa bezproblemowo dla dowolnej kombinacji katalogów.
• |
Odnośniki do plików, które nie zostały ściągnięte przez Wget zostaną zmienione tak, by zawierały nazwę hosta i ścieżkę bezwzględną miejsca, na które wskazują. |
Przykład: jeśli ściągnięty plik /foo/doc.html jest powiązany z z /bar/img.gif (lub z ../bar/img.gif), to odnośnik w doc.html zostanie zmieniony tak, by wskazywał na http://hostname/bar/img.gif.
Z tego powodu, przeglądanie lokalne działa niezawodnie: jeśli powiązany plik był ściągnięty, to odnośnik wskazuje na jego lokalną nazwę, jeśli nie był -- to na pełny adres internetowy, a nie pojawia się popsuty odnośnik. Konwersja pierwotnych odnośników na odnośniki względne zapewnia nam możliwość przesuwania pobranej hierarchii katalogów do innego katalogu.
Proszę zauważyć, że dopiero na samym końcu pobierania Wget może rozpoznać, które odnośniki zostały ściągnięte. Z tego powodu, opcja -k wykonuje swoją pracę po zakończeniu wszystkich pobrań.
-K |
--backup-converted
Podczas konwersji pliku zachowuje kopię zapasową pierwotnej wersji z przyrostkiem .orig. Wpływa na zachowanie opcji -N.
-m |
--mirror
Włącza opcje odpowiednie do tworzenia kopii lustrzanych. Ta opcja włącza rekurencję, stosowanie znaczników czasu, ustawia nieograniczony poziom rekurencji i zachowuje wypisania zawartości katalogów FTP . Obecnie jest równoważna użyciu -r -N -l inf --no-remove-listing.
-p |
--page-requisites
Opcja powoduje, że Wget ściągnie wszystkie pliki niezbędne do poprawnego wyświetlenia danej strony HTML . Obejmuje to takie rzeczy jak grafikę, dźwięki i powiązane arkusze stylów.
Przy zwykłym trybie pracy, podczas pobierania pojedynczej strony HTML , ewentualne powiązane dokumenty, które mogą być potrzebne do poprawnego jej wyświetlenia, nie są pobierane. Pomóc może użycie opcji -r z -l, ale ponieważ Wget normalnie nie odróżnia dokumentów zewnętrznych od włączonych, na ogół pozostaje się z "oskubanymi dokumentami", którym brakuje potrzebnych elementów towarzyszących.
Na przykład, powiedzmy, że dokument 1.html zawiera znacznik <IMG> odnoszący się do 1.gif i znacznik <A> wskazujący na zewnętrzny dokument 2.html. Powiedzmy, że 2.html jest podobny, tyle, że jego obrazkiem jest 2.gif a odnośnik wskazuje na 3.html. Załóżmy, że kontynuujemy takie zależności aż do jakiejś dowolnie dużej liczby.
Jeśli wykona się polecenie:
wget -r -l 2 http://I<strona>/1.html
to zostaną pobrane 1.html, 1.gif, 2.html, 2.gif i 3.html. Jak widać, 3.html nie posiada towarzyszącego mu elementu, gdyż Wget w celu określenia miejsca, gdzie powinien przerwać rekurencję po prostu zlicza liczbę skoków (aż do 2) od początkowego 1.html. Jednak przy takim poleceniu:
wget -r -l 2 -p http://I<strona>/1.html
zostaną ściągnięte wszystkie powyższe pliki oraz wymagany przez 3.html plik 3.gif. Podobnie,
wget -r -l 1 -p http://<strona>/1.html
spowoduje pobranie 1.html, 1.gif, 2.html i 2.gif. Można by sądzić, że:
wget -r -l 0 -p http://I<strona>/1.html
pobrałoby tylko 1.html i 1.gif, ale niestety tak nie jest, gdyż -l 0 jest równoważnikiem -l inf -- czyli nieskończonej rekurencji. Do pobrania pojedynczej strony HTML (lub ich grupy, wszystkich podanych w wierszu poleceń lub w pliku wejściowym URL-i -i) i towarzyszących jej (lub im) elementów, wystarczy pominąć -r i -l:
wget -p http://<strona>/1.html
Proszę zauważyć, że Wget zachowa się tak, jakby podano opcję -r, ale zostanie pobrana tylko pojedyncza strona i jej elementy. Program nie będzie podążał za odnośnikami z tej strony do zewnętrznych dokumentów. Faktycznie, do ściągania pojedynczej strony i wszystkich towarzyszących jej elementów (nawet jeśli leżą one na odrębnych serwerach WWW ) i upewnienia się, że całość lokalnie poprawnie się wyświetla, autor oprócz -p korzysta z kilku dodatkowych opcji:
wget -E -H -k -K -p http://<strona>/<dokument>
Kończąc ten temat, warto wiedzieć, że Wget uważa za odnośnik do dokumentu zewnętrznego każdy URL podany w znaczniku <A>, <AREA> lub <LINK>, oprócz <LINK REL="stylesheet">.
--strict-comments
Włącza ścisłe przetwarzanie komentarzy HTML . Domyślnie, komentarze są przerywane po pierwszym wystąpieniu -->.
Zgodnie ze specyfikacją, komentarze HTML są wyrażone jako deklaracje SGML . Deklaracja jest specjalnym znacznikiem, rozpoczynającym się <! i kończącym się >, np. <!DOCTYPE ...>, która może zawierać dodatkowe komentarze, między parą ograniczników --. Komentarze HTML są "pustymi deklaracjami", bez tekstu niebędącego komentarzem. Stąd <!--foo--> jest poprawnym komentarzem, jak również <!--one-- --two-->, lecz <!--1--2--> nim nie jest.
Z drugiej strony, większość piszącym HTML nie odczytuje komentarzy jako cokolwiek innego poza tekstem ograniczonym <!-- i -->, co nie jest tym samym. Np. coś takiego: <!------------> jest poprawnym komentarzem o ile liczba minusów jest wielokrotnością czterech (sic!). Jeśli tak nie jest, to ściśle mówiąc komentarz kończy się dopiero po następnym wystąpieniu --, które może nastąpić np. na końcu dokumentu. Z tego powodu, wiele popularnych przeglądarek internetowych całkowicie ignoruje specyfikację i implementuje coś, czego użytkownicy mogą się spodziewać: komentarze ograniczone <!-- i -->.
Do wersji 1.9 Wget interpretował komentarze w sposób ścisły, co powodowało wybrakowanie wielu linków w stronach internetowych wyświetlających się poprawnie w przeglądarkach, lecz mających nieszczęście w postaci niezgodnych z normą komentarzy. Począwszy od wersji 1.9, Wget dołączył do grona klientów implementujących "naiwne" komentarze, zamykając każdy komentarz po pierwszym wystąpieniu -->.
Jeśli zajdzie potrzeba ścisłego parsowania komentarzy, ta opcja je włączy.
Opcje
rekurencyjnego akceptowania/odrzucania
-A lista-akc --accept lista-akc
-R lista-odrz --reject
lista-odrz
Określa oddzieloną przecinkami listę przyrostków lub wzorców nazw plików do, odpowiednio, zaakceptowania lub odrzucenia. Proszę pamiętać, że maski (wieloznaczniki) tzn. *, ?, [ lub ], które pojawią się jako element listy-akc lub listy-odrz, zostaną potraktowane jako wzorzec, a nie przyrostek. W takim przypadku, aby uniknąć rozwinięcia nazwy przez powłokę należy ująć wzorzec w cudzysłowy, jak w przykładach -A "*.mp3" lub -A ’*.mp3’.
--accept-regex
url-wyr-reg
--reject-regex url-wyr-reg
Określa wyrażenie regularne do zaakceptowania lub odrzucenia całego URL -a.
--regex-type typ-wyr-reg
Określa typ wyrażenia regularnego. Dozwolonymi wartościami są posix i pcre. Proszę zauważyć, że w celu użycia typu pcre wget musi mieć wkompilowaną obsługę libpcre.
-D lista-domen
--domains=lista-domen
Ustala domeny, do których program może przechodzić. Lista-domen jest listą separowaną przecinkami. Proszę zauważyć, że ta opcja nie włącza -H.
--exclude-domains lista-domen
Podaje domeny, do których program ma nie przechodzić.
--follow-ftp
Podąża za odnośnikami FTP z dokumentów HTML . Bez tej opcji Wget będzie ignorował wszelkie odnośniki do FTP .
--follow-tags=lista
Wget ma wewnętrzną tablicę par: znacznik HTML /atrybut, którą posługuje się przy poszukiwaniu powiązanych dokumentów podczas pobierania rekurencyjnego. Aby brany był pod uwagę tylko pewien podzbiór tych znaczników, należy użyć tej opcji, podając je w postaci listy separowanej przecinkami.
--ignore-tags=lista
Jest to przeciwieństwo opcji --follow-tags. Dzięki podaniu listy rozdzielonych przecinkami znaczników HTML można pominąć je podczas rekurencyjnego szukania dokumentów do pobrania.
Niegdyś, ta opcja była najlepszym wyborem do ściągania pojedynczej strony razem z jej elementami, użyta w wierszu poleceń:
wget --ignore-tags=a,area -H -k -K -r http://<strona>/<dokument>
Jednak autor tej opcji przeszedł przez stronę ze znacznikami typu <LINK REL="home" HREF="/"> i uświadomił sobie, że -G nie wystarcza. Nie można po prostu nakazać Wget ignorowania <LINK>, gdyż wówczas nie będą ściągane arkusze stylów. Obecnie najlepszym sposobem pobierania pojedynczej strony razem z jej elementami jest specjalnie przeznaczona do tego opcja --page-requisites.
--ignore-case
Ignoruje wielkość znaków przy dopasowywaniu plików i katalogów. Wpływa to na zachowanie opcji -R, -A, -I i -X, podobnie jak przy stosowaniu masek przy pobieraniu stron FTP . Na przykład, po zastosowaniu tej opcji -A "*.txt" dopasuje plik1.txt, lecz również plik.TXT, plik3.TxT itd. Cudzysłowy w przykładzie powodują, że powłoka nie rozwija wzorca.
-H |
--span-hosts
Włącza przechodzenie pomiędzy hostami przy pobieraniu rekurencyjnym.
-L |
--relative
Podąża tylko za odnośnikami względnymi. Przydatne do pobierania konkretnej strony bez żadnych odwracających uwagę dodatków, nawet z tego samego hosta.
-I lista
--include-directories=lista
Określa listę rozdzielonych przecinkami katalogów, do których ma przechodzić program podczas pobierania. Elementy listy mogą zawierać znaki uogólniające (maski).
-X lista
--exclude-directories=lista
Określa listę rozdzielonych przecinkami katalogów, które chcemy wykluczyć z pobierania. Elementy listy mogą zawierać znaki uogólniające (maski).
-np |
--no-parent
Powoduje, że Wget przy pobieraniu rekurencyjnym nigdy nie wchodzi do katalogu nadrzędnego. Przydatna opcja, gdyż gwarantuje, że ściągane będą tylko pliki poniżej pewnego poziomu.
ŚRODOWISKO
Wget
obsługuje serwery pośredniczące do
pobierań przez HTTP i FTP
. Standardową metodą podawania położenia
serwera pośredniczącego w przypadku Wgeta, są
poniższe zmienne środowiskowe:
http_proxy
https_proxy
Gdy ustawione, zmienne http_proxy i https_proxy powinny zawierać URL-e serwerów pośredniczących w, odpowiednio, połączeniach HTTP i HTTPS .
ftp_proxy
Zmienna powinna zawierać URL serwera pośredniczącego w połączeniach FTP . Dość często spotyka się sytuację, gdy http_proxy i ftp_proxy zawierają ten sam URL .
no_proxy
Zmienna powinna zawierać listę rozszerzeń domen (separatorem jest przecinek), do których nie będą stosowane serwery pośredniczące. Jeśli na przykład wartość no_proxy wynosi .mit.edu, to serwery pośredniczące nie będą stosowane do pobierania dokumentów z MIT .
KOD ZAKOŃCZENIA
W przypadku wystąpienia problemów Wget może zwrócić jeden z poniższych kodów zakończenia.
0 |
Nie wystąpiły żadne problemy. | ||
1 |
Podstawowy kod błędu. | ||
2 |
Błąd przetwarzania danych -- np. przy przetwarzaniu opcji wiersza polecenia, .wgetrc lub .netrc... | ||
3 |
Błąd wejścia/wyjścia pliku. | ||
4 |
Błąd sieci. | ||
5 |
Błąd weryfikacji SSL . | ||
6 |
Błąd uwierzytelnienia nazwy użytkownika/hasła. | ||
7 |
Błędy protokołów. | ||
8 |
Serwer zwrócił błędną odpowiedź. |
Oprócz kodów 0 i 1, kody zakończenia o mniejszej wartości liczbowej mają pierwszeństwo w sytuacji, gdy wystąpi wiele typów błędów.
W wersjach Wgeta do 1.12, kody zakończenia były niespójne i niezbyt pomocne. Pobierania rekurencyjne zawsze zwracały 0 (powodzenie) bez względu na wystąpienie ewentualnych błędów, a nierekurencyjne zwracały zawsze kod zakończenia odpowiadający ostatniej próbie pobierania.
PLIKI
/etc/wgetrc
Domyślne położenie globalnego pliku startowego.
.wgetrc
Plik startowy użytkownika.
BŁĘDY
Zachęcamy do zamieszczania zgłoszeń błędów dotyczących GNU Wget w systemie błędów (więcej szczegółów pod adresem <http://wget.addictivecode.org/BugTracker>).
Przed faktycznym przedłożeniem zgłoszenia błędu, proszę spróbować zastosować się do kilku prostych wskazówek.
1. |
Proszę upewnić się, że obserwowane zachowanie jest rzeczywiście błędem. Jeśli Wget się wywala, jest to błąd. Jeśli nie zachowuje się zgodnie z dokumentacją, jest to błąd. Jeśli coś działa dziwnie, ale nie ma pewności jak powinno to wyglądać, również może być to błąd, ale proszę dwa razy sprawdzić dokumentację i listy dyskusyjne. | ||
2. |
Proszę spróbować powtórzyć ten błąd w możliwie najprostszych warunkach. Np. jeśli Wget pada podczas ściągania wget -rl0 -kKE -t5 -Y0 http://yoyodyne.com -o /tmp/log, należy spróbować sprawdzić, czy to wywalanie się jest powtarzalne i czy pojawia się przy prostszym zestawie opcji. Można nawet spróbować zacząć pobieranie od strony, przy której wystąpiła awaria i sprawdzić, czy to nie ta strona w jakiś sposób ją powoduje. |
Ponadto, choć co prawda prawdopodobnie autor będzie zainteresowany zawartością pliku .wgetrc użytkownika, zwykłe skopiowanie go do wiadomości o błędzie jest raczej złym pomysłem. Zamiast tego, należy najpierw sprawdzić, czy błąd powtarza się przy .wgetrc przeniesionym w inne miejsce. Proszę przesłać odpowiednie fragmenty tego pliku tylko wtedy, gdy okaże się, że błąd zależy od ustawień .wgetrc.
3. |
Proszę uruchomić Wget z opcją -d i przesłać uzyskany wynik (lub związane z błędem jego części). Jeśli Wget został skompilowany bez obsługi debugowania, proszę go przekompilować. Dużo łatwiej jest śledzić błędy z udostępnioną diagnostyką. |
Uwaga: proszę upewnić się, że usunęło się wszystkie potencjalnie prywatne dane z dziennika debugowania, przed wysłaniem go na adres zgłoszeń błędów. Opcja -d nie będzie starała się zbierać danych prywatnych, lecz dziennik będzie zawierał dość kompletny zapis komunikacji Wgeta z serwerem, co może obejmować także hasła i część pobranych danych. Zgłoszenia błędów są archiwizowane publicznie, tak więc należy uznać, że zgłoszenia błędów są również dostępne publicznie.
4. |
Jeśli Wget się wywala, proszę uruchomić go w debuggerze, np. gdb ’which wget’ core i wpisać where, by otrzymać stos wywołania (backtrace). Może się to nie powieść, jeśli administrator systemu wyłączył pliki core, ale zawsze można spróbować. |
ZOBACZ TAKŻE
Nie jest to kompletny podręcznik GNU Wgeta. Więcej informacji, w tym pełniejszy opis niektórych opcji oraz wiele poleceń możliwych do zastosowania w plikach .wgetrc i z opcją -e znajduje się we wpisie wget w GNU Info.
AUTOR
Pierwotnie napisane przez Hrvojego Nikšicia <hniksic [AT] arsdigita.com>.
PRAWA AUTORSKIE
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Zezwala się na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu na warunkach Licencji Wolnej Dokumentacji GNU ( GNU Free Documentation License) w wersji 1.3 lub jakiejkolwiek nowszej wersji opublikowanej przez Fundację Wolnego Oprogramowania, przy czym Sekcjami niezmiennymi są "GNU General Public License" i "GNU Free Documentation License", bez treści przedniej lub tylnej strony okładki. Egzemplarz licencji zamieszczono w sekcji zatytułowanej "GNU Free Documentation License".
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Wojtek Kotwica (PTM) <wkotwica [AT] post.pl> i Michał Kułach <michal.kulach [AT] gmail.com>.
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 1.15 oryginału.