| WGET(1) | GNU Wget | WGET(1) |
wget - instrumentul de descărcare din rețea neinteractiv
wget [opțiune]... [URL]...
GNU wget este un instrument gratuit pentru descărcarea non-interactivă de fișiere din Internet. Acceptă protocoalele HTTP, HTTPS și FTP, precum și preluarea prin proxy-uri HTTP.
wget este non-interactiv, ceea ce înseamnă că poate funcționa în fundal, în timp ce utilizatorul nu este conectat. Acest lucru vă permite să începeți o recuperare și să vă deconectați de la sistem, lăsându-l pe wget să termine munca. În schimb, majoritatea navigatoarelor web necesită prezența constantă a utilizatorului, ceea ce poate fi un mare impediment atunci când se transferă o mulțime de date.
wget poate urmări legăturile din paginile HTML, XHTML și CSS, pentru a crea versiuni locale ale siturilor web de la distanță, recreând complet structura de directoare a sitului original. Acest lucru este denumit uneori „descărcare recursivă”. În timp ce face acest lucru, wget respectă Standardul de excludere a roboților (/robots.txt). wget poate fi instruit să convertească legăturile din fișierele descărcate pentru a indica fișierele locale, pentru vizualizare în modul deconectat.
wget a fost conceput pentru a fi robust în cazul conexiunilor de rețea lente sau instabile; dacă o descărcare eșuează din cauza unei probleme de rețea, va continua să încerce până când fișierul va fi recuperat în întregime. În cazul în care serverul acceptă reluarea, acesta va instrui serverul să continue descărcarea din punctul în care a fost întreruptă.
Deoarece wget folosește GNU getopt pentru a procesa argumentele din linia de comandă, fiecare opțiune are o formă lungă alături de cea scurtă. Opțiunile lungi sunt mai ușor de reținut, dar necesită timp pentru a fi tastate. Puteți amesteca în mod liber diferite stiluri de opțiuni sau puteți specifica opțiuni după argumentele liniei de comandă. Astfel, puteți scrie:
wget -r --tries=10 http://fly.srk.fer.hr/ -o jurnal
Spațiul dintre opțiunea care acceptă un argument și argument poate fi omis. În loc de -o jurnal se poate scrie -ojurnal.
Puteți pune împreună mai multe opțiuni care nu necesită argumente, cum ar fi:
wget -drc <URL>
Acest lucru este complet echivalent cu:
wget -d -r -c <URL>
Deoarece opțiunile pot fi specificate după argumente, puteți să le terminați cu --. Astfel, următoarea comandă va încerca să descarce URL-ul -x, raportând eșecul în jurnal:
wget -o jurnal -- -x
Toate opțiunile care acceptă liste separate prin virgule respectă convenția conform căreia specificarea unei liste goale șterge valoarea acesteia. Acest lucru poate fi util pentru a șterge parametrii .wgetrc. De exemplu, dacă .wgetrc definește parametrul "exclude_directories" la /cgi-bin, exemplul următor îl va reinițializa mai întâi și apoi îl va defini pentru a exclude /~nobody și /~somebody. De asemenea, puteți curăța listele din .wgetrc.
wget -X "" -X /~nobody,/~somebody
Majoritatea opțiunilor care nu acceptă argumente sunt opțiuni booleane, denumite astfel deoarece starea lor poate fi captată cu o variabilă de tip da-sau-nu („boolean”). De exemplu, --follow-ftp îi indică lui wget să urmărească legăturile FTP din fișierele HTML și, pe de altă parte, --no-glob îi indică să nu efectueze căutarea de fișiere la adresele URL FTP folosind modele cu caractere joker. O opțiune booleană este fie afirmativă, fie negativă (începând cu --no). Toate aceste opțiuni au în comun câteva proprietăți.
Cu excepția cazului în care se specifică altfel, se presupune că comportamentul implicit este opusul celui pe care îl realizează opțiunea. De exemplu, existența documentată a opțiunii --follow-ftp presupune că opțiunea implicită este de a nu urmări legăturile FTP din paginile HTML.
Opțiunile afirmative pot fi negate prin adăugarea prefixului --no- la numele opțiunii; opțiunile negative pot fi negate prin omiterea prefixului --no-. Acest lucru ar putea părea superfluu - dacă valoarea implicită a unei opțiuni afirmative este de a nu face ceva, atunci de ce să oferim o modalitate de a o dezactiva în mod explicit? Dar fișierul de configurare poate, de fapt, să schimbe valoarea implicită. De exemplu, utilizarea „follow_ftp = on” în .wgetrc face ca wget să urmeze în mod implicit legăturile FTP, iar utilizarea --no-follow-ftp este singura modalitate de a restabili valoarea implicită din fabrică din linia de comandă.
Dacă se utilizează această funcție, nu este necesar să fie prezente adrese URL în linia de comandă. În cazul în care există adrese URL atât în linia de comandă, cât și într-un fișier de intrare, cele din linia de comandă vor fi primele care vor fi recuperate. Dacă --force-html nu este specificat, atunci fișier trebuie să fie format dintr-o serie de adrese URL, una pe linie.
Cu toate acestea, dacă specificați --force-html, documentul va fi considerat ca fiind html. În acest caz, este posibil să aveți probleme cu legăturile relative, pe care le puteți rezolva fie adăugând „<base href="url">” în documente, fie specificând „--base=url” în linia de comandă.
Dacă fișier este un fișier extern, documentul va fi tratat automat ca html dacă Content-Type se potrivește cu text/html. În plus, locația fișierului va fi utilizată implicit ca bază href dacă nu a fost specificată niciuna.
Dacă fișier este un fișier local, pe sistemele care îl acceptă, acesta va fi deschis cu fanionul "O_NONBLOCK" pentru a permite citiri fără blocare din fișier. wget va încerca să continue citirea din fișier până când se ajunge la EOF sau acesta este închis. Acest lucru permite transmiterea în flux a unei liste de fișiere pentru recuperare, lista fiind generată dinamic în timpul executării procesului. În prezent, această caracteristică nu este disponibilă pe platformele Windows.
Rețineți că adresa URL poate conține informații private, cum ar fi jetoane de acces sau acreditări.
De exemplu, dacă specificați http://foo/bar/a.html pentru adresa URL, iar wget citește ../baz/b.html din fișierul de intrare, acesta va fi rezolvat ca http://foo/baz/b.html.
Utilizarea lui -O nu înseamnă pur și simplu „utilizează numele fișier în locul celui din URL”; mai degrabă, este analogă cu redirecționarea shell-ului: «wget -O fișier http://foo» este menit să funcționeze ca «wget -O - http://foo > fișier»; fișier va fi trunchiat imediat, iar tot conținutul descărcat va fi scris acolo.
Din acest motiv, -N (pentru verificarea mărcii temporale) nu este acceptată în combinație cu -O: deoarece fișier este întotdeauna nou creat, acesta va avea întotdeauna o marcă temporală foarte nouă. În cazul în care se utilizează această combinație, se va emite un avertisment.
În mod similar, este posibil ca utilizarea -r sau -p cu -O să nu funcționeze așa cum vă așteptați: wget nu va descărca doar primul fișier în fișier și apoi va descărca restul în numele lor normal: tot conținutul descărcat va fi plasat în fișier. Acest lucru a fost dezactivat în versiunea 1.11, dar a fost reintrodus (cu un avertisment) în versiunea 1.11.2, deoarece există unele cazuri în care acest comportament poate avea într-adevăr o anumită utilitate.
O combinație cu -nc este acceptată numai în cazul în care fișierul de ieșire dat nu există.
Rețineți că o combinație cu -k este permisă numai atunci când se descarcă un singur document, deoarece în acest caz se vor converti toate adresele URI relative în externe; -k nu are sens pentru mai multe adrese URI atunci când toate sunt descărcate într-un singur fișier; -k poate fi utilizată numai atunci când rezultatul este un fișier obișnuit.
Atunci când se execută wget fără -N, -nc, -r sau -p, descărcarea aceluiași fișier în același director va avea ca rezultat păstrarea copiei originale a fișierului și numirea celei de-a doua copii ca fișier.1. Dacă fișierul respectiv este descărcat din nou, a treia copie se va numi fișier.2, și așa mai departe. Acesta este, de asemenea, comportamentul cu -nd, chiar dacă -r sau -p sunt în vigoare. Atunci când se specifică -nc, acest comportament este suprimat, iar wget va refuza să descarce copii mai noi ale fișierului. Prin urmare, „no-clobber” este de fapt o denumire greșită în acest mod - aceasta nu împiedică suprascrierea (deoarece sufixele numerice împiedicau deja suprascrierea), ci mai degrabă salvarea mai multor versiuni este operația ce este împiedicată.
Atunci când se execută wget cu -r sau -p, dar fără -N, -nd sau -nc, re-descărcarea unui fișier va avea ca rezultat faptul că noua copie o va suprascrie pur și simplu pe cea veche. Adăugarea lui -nc va împiedica acest comportament, făcând în schimb ca versiunea originală să fie păstrată, iar orice copie mai nouă de pe server să fie ignorată.
Atunci când se execută wget cu -N, cu sau fără -r sau -p, decizia de a descărca sau nu o copie mai nouă a unui fișier depinde de data și ora locală și de cea de la distanță și de dimensiunea fișierului. -nc nu poate fi specificată în același timp cu -N.
O combinație cu -O/--output-document este acceptată numai în cazul în care fișierul de ieșire dat nu există.
Rețineți că atunci când se specifică -nc, fișierele cu sufixele .html sau .htm vor fi încărcate de pe discul local și analizate ca și cum ar fi fost preluate de pe Web.
wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
Dacă există un fișier numit ls-lR.Z în directorul curent, wget va presupune că acesta este prima porțiune a fișierului de la distanță și va cere serverului să continue recuperarea de la o poziție egală cu lungimea fișierului local.
Rețineți că nu este necesar să specificați această opțiune dacă doriți doar ca apelarea curentă a wget să reîncerce descărcarea unui fișier în cazul în care conexiunea se pierde la jumătatea drumului. Acesta este comportamentul implicit. Opțiunea -c afectează doar reluarea descărcărilor începute înainte de această invocare a wget și ale căror fișiere locale sunt încă în așteptare.
Fără opțiunea -c, exemplul anterior ar fi descărcat doar fișierul de la distanță în ls-lR.Z.1, lăsând în pace fișierul trunchiat ls-lR.Z.
Dacă utilizați opțiunea -c pe un fișier care nu este gol, iar serverul nu acceptă continuarea descărcării, wget va reporni descărcarea de la zero și va suprascrie în întregime fișierul existent.
Începând cu wget 1.7, dacă utilizați opțiunea -c pe un fișier care are aceeași dimensiune ca și cel de pe server, wget va refuza să descarce fișierul și va afișa un mesaj explicativ. Același lucru se întâmplă și atunci când fișierul este mai mic pe server decât cel local (probabil din cauză că a fost modificat pe server de la ultima încercare de descărcare) --- deoarece „continuarea” nu are sens, nu are loc nicio descărcare.
Pe de altă parte, în timp ce se utilizează opțiunea -c, orice fișier care este mai mare pe server decât la nivel local va fi considerat o descărcare incompletă și doar „(lungimea(de la distanță) - lungimea(locală))” octeți vor fi descărcați și adăugați la sfârșitul fișierului local. Acest comportament poate fi de dorit în anumite cazuri - de exemplu, puteți utiliza wget -c pentru a descărca doar noua porțiune care a fost adăugată la o colecție de date sau la un fișier jurnal.
Cu toate acestea, dacă fișierul este mai mare pe server pentru că a fost modificat, spre deosebire de doar adăugat, veți obține un fișier deformat. wget nu are nicio modalitate de a verifica dacă fișierul local este într-adevăr un prefix valid al fișierului de la distanță. Trebuie să fiți deosebit de atenți la acest aspect atunci când utilizați -c împreună cu -r, deoarece fiecare fișier va fi considerat drept candidat la „descărcare incompletă”.
Un alt caz în care veți obține un fișier deformat dacă încercați să utilizați opțiunea -c este dacă aveți un proxy HTTP deficitar care inserează un șir „transfer întrerupt” în fișierul local. În viitor, ar putea fi adăugată o opțiune „rollback” (revenire la starea precedentă) pentru a rezolva acest caz.
Rețineți că opțiunea -c funcționează numai cu servere FTP și cu servere HTTP care acceptă antetul „Range”.
Opțiunea --start-pos are prioritate mai mare decât opțiunea --continue. Atunci când opțiunile --start-pos și --continue sunt amândouă specificate, wget va emite un avertisment, apoi va continua ca și cum opțiunea --continue ar fi absentă.
Este necesar suportul serverului pentru continuarea descărcării, altfel opțiunea --start-pos nu poate fi de ajutor. A se vedea opțiunea -c pentru detalii.
Indicatorul „bar” este utilizat în mod implicit. Acesta desenează o bară de progres ASCII (cunoscută și ca afișare „termometru”) care indică starea de recuperare. În cazul în care ieșirea nu este un terminal TTY, se va utiliza în mod implicit bara „dot”.
Utilizați --progres=dot pentru a trece la afișarea „dot”. Acesta urmărește recuperarea prin imprimarea de puncte pe ecran, fiecare punct reprezentând o cantitate fixă de date descărcate.
Tipul de progres poate primi, de asemenea, unul sau mai mulți parametri. Parametrii variază în funcție de tipul selectat. Parametrii pentru tip sunt trecuți prin adăugarea lor la tipul sperat prin două puncte (:), astfel: --progress=tip:parametru1:parametru2.
Atunci când se utilizează recuperarea cu puncte, puteți configura stilul (style) prin specificarea tipului ca dot:style. Stiluri diferite atribuie semnificații diferite unui punct. Cu stilul „default”, fiecare punct reprezintă 1K, există zece puncte într-un grup și 50 de puncte într-o linie. Stilul „binary” are o orientare mai apropiată de cea a unui „calculator” - 8K pe punct, grupuri de 16 puncte și 48 de puncte pe linie (ceea ce face 384K pe linie). Stilul „mega” este potrivit pentru descărcarea de fișiere mari --- fiecare punct reprezintă 64K recuperați, există opt puncte într-un grup și 48 de puncte pe fiecare linie (astfel încât fiecare linie conține 3M). În cazul în care „mega” nu este suficient, puteți utiliza stilul „giga” --- fiecare punct reprezintă 1M recuperat, există opt puncte într-un grup și 32 de puncte pe fiecare linie (deci fiecare linie conține 32M).
Cu --progres=bar, există în prezent doi parametri posibili, force și noscroll.
Când ieșirea nu este un terminal TTY, bara de progres revine întotdeauna la stilul „dot”, chiar dacă opțiunea --progress=bar a fost transmisă către wget în timpul invocării. Acest comportament poate fi anulat, iar ieșirea „bar” poate fi forțată prin utilizarea parametrului „force” ca --progress=bar:force.
În mod implicit, bara de progres în stil bară derulează numele fișierului de la stânga la dreapta pentru fișierul în curs de descărcare dacă numele fișierului depășește lungimea maximă alocată pentru afișarea acestuia. În anumite cazuri, cum ar fi cu --progress=bar:force, este posibil să nu se dorească defilarea numelui fișierului în bara de progres. Prin trecerea parametrului „noscroll”, wget poate fi forțat să afișeze cât mai mult din numele fișierului fără a derula prin el.
Rețineți că puteți configura stilul implicit utilizând comanda «progress» din .wgetrc. Această configurare poate fi anulată din linia de comandă. De exemplu, pentru a forța ieșirea barei fără defilare, utilizați --progress=bar:force:noscroll.
În mod implicit, wget afișează bara de progres doar în modul de ieșire descriptivă. Cu toate acestea, se poate dori ca wget să afișeze bara de progres pe ecran împreună cu orice alt mod de nivel de detaliere, cum ar fi --no-verbose sau --quiet. Aceasta este adesea o proprietate dorită atunci când se invocă wget pentru a descărca mai multe fișiere mici/mari. Într-un astfel de caz, wget ar putea fi invocat pur și simplu cu acest parametru pentru a obține o ieșire mult mai curată pe ecran.
Această opțiune va forța, de asemenea, ca bara de progres să fie afișată la ieșirea de eroare standard atunci când este utilizată împreună cu opțiunea --output-file.
În mod implicit, atunci când un fișier este descărcat, marcajele de timp ale acestuia sunt definite pentru a se potrivi cu cele din fișierul de la distanță. Acest lucru permite utilizarea lui --timestamping la invocările ulterioare ale wget. Cu toate acestea, uneori este util să se bazeze data și ora fișierului local pe data la care acesta a fost descărcat efectiv; în acest scop, a fost furnizată opțiunea --no-use-server-timestamps.
wget --spider --force-html -i marcaje.html
Această caracteristică necesită mult mai multă muncă pentru ca wget să se apropie de funcționalitatea roboților de indexare Web reali.
Când interacționează cu rețeaua, wget poate să verifice dacă există un timp de așteptare și să întrerupă operațiunea dacă durează prea mult. Acest lucru previne anomalii precum citirile suspendate și conexiunile infinite. Singurul timp de așteptare activat în mod implicit este un timp de așteptare pentru citire de 900 de secunde. Stabilirea unui timp de așteptare la 0 îl dezactivează complet. Dacă nu știți ce faceți, cel mai bine este să nu modificați configurările implicite de temporizare.
Toate opțiunile legate de temporizare acceptă valori zecimale, precum și valori de zecimi de secunde. De exemplu, 0,1 secunde este o alegere legală (deși nechibzuită) pentru timpul de așteptare. Timpii de așteptare de sub o secundă sunt utili pentru verificarea timpilor de răspuns ai serverului sau pentru testarea latenței rețelei.
Desigur, serverul de la distanță poate alege să încheie conexiunea mai devreme decât cere această opțiune. Timpul de citire implicit este de 900 de secunde.
Această opțiune permite utilizarea numerelor zecimale, de obicei în combinație cu sufixe de putere; de exemplu, --limit-rate=2.5k este o valoare legală.
Rețineți că wget implementează limitarea prin dormirea timpului indicat după o citire în rețea care a durat mai puțin timp decât cel specificat de rată. În cele din urmă, această strategie face ca transferul TCP să încetinească până la aproximativ rata specificată. Cu toate acestea, este posibil să dureze ceva timp pentru a se ajunge la acest echilibru, așa că nu fiți surprins dacă limitarea ratei nu funcționează bine cu fișiere foarte mici.
Specificarea unei valori mari pentru această opțiune este utilă în cazul în care rețeaua sau gazda de destinație nu funcționează, astfel încât wget să poată aștepta suficient de mult timp pentru a se aștepta în mod rezonabil ca eroarea de rețea să fie remediată înainte de o nouă încercare. Intervalul de așteptare specificat de această funcție este influențat de opțiunea „--random-wait”, care monitorizează.
În mod implicit, wget va adopta o valoare de 10 secunde.
Un articol din 2001 dintr-o publicație dedicată dezvoltării pe o platformă populară între pasionații de software a furnizat codul pentru a efectua această analiză din mers. Autorul său a sugerat blocarea la nivelul adreselor de clasă C pentru a se asigura că programele de recuperare automată erau blocate în ciuda schimbării adreselor furnizate de DHCP.
Opțiunea --random-wait a fost inspirată de această recomandare nepotrivită de a bloca mulți utilizatori fără legătură cu un sit web din cauza acțiunilor unui singur utilizator.
Rețineți că această cotă nu va afecta niciodată descărcarea unui singur fișier. Astfel, dacă specificați wget -Q10k https://example.com/ls-lR.gz, toate fișierele ls-lR.gz vor fi descărcate. Același lucru este valabil chiar și atunci când sunt specificate mai multe adrese URL în linia de comandă. Cota este verificată numai la sfârșitul fiecărui fișier descărcat, astfel încât nu va rezulta niciodată un fișier descărcat parțial. Astfel, puteți tasta în siguranță wget -Q2m -i sites -- descărcarea va fi întreruptă după ce fișierul care epuizează cota este complet descărcat.
Stabilirea cotei la 0 sau la inf elimină limitarea cotei de descărcare.
Cu toate acestea, s-a raportat că, în anumite situații, nu este de dorit să se stocheze în memoria cache numele gazdelor, chiar și pe durata unei aplicații cu durată scurtă de funcționare, cum ar fi wget. Cu această opțiune, wget efectuează o nouă căutare DNS (mai precis, un nou apel la „gethostbyname” sau „getaddrinfo” de fiecare dată când face o nouă conexiune. Vă rugăm să rețineți că această opțiune nu va afecta memoria cache care ar putea fi efectuată de biblioteca de rezolvare sau de un strat extern de memorie cache, cum ar fi NSCD.
Dacă nu înțelegeți exact ce face această opțiune, probabil că nu aveți nevoie de ea.
În mod implicit, wget eludează caracterele care nu sunt valide sau sigure ca parte a numelor de fișiere în sistemul dumneavoastră de operare, precum și caracterele de control care sunt de obicei neimprimabile. Această opțiune este utilă pentru a modifica aceste valori implicite, poate pentru că descărcați pe o partiție non-nativă, pentru că doriți să dezactivați eludarea caracterelor de control sau pentru că doriți să restricționați în continuare caracterele doar la cele din intervalul de valori ASCII.
modurile sunt un set de valori text separate prin virgulă. Valorile acceptabile sunt unix, windows, nocontrol, ascii, lowercase și uppercase. Valorile unix și windows se exclud reciproc (una se suprapune celeilalte), la fel ca și lowercase și uppercase. Ultimele sunt cazuri speciale, deoarece nu modifică setul de caractere care ar trebui să fie eludate, ci mai degrabă forțează rutele locale ale fișierelor să fie convertite fie în minuscule, fie în majuscule.
Când se specifică „unix”, wget eludează caracterul / și caracterele de control din intervalele 0--31 și 128--159. Aceasta este valoarea implicită pe sistemele de operare de tip Unix.
Când se specifică „windows”, wget eludează caracterele \, |, /, :, ?, ", *, <, >, precum și caracterele de control din intervalele 0--31 și 128--159. În plus, wget în modul „windows” utilizează + în loc de : pentru a separa gazda și portul în numele de fișiere locale și utilizează @ în loc de ? pentru a separa porțiunea de interogare a numelui de fișier de restul. Prin urmare, o adresă URL care ar fi salvată ca www.xemacs.org:4300/search.pl?input=blah în modul Unix va fi salvată ca www.xemacs.org+4300/search.pl@input=blah în modul „windows”. Acest mod este cel implicit pe Windows.
Dacă specificați nocontrol, atunci se dezactivează și eludarea caracterelor de control. Această opțiune poate avea sens atunci când descărcați adrese URL ale căror nume conțin caractere UTF-8, pe un sistem care poate salva și afișa nume de fișiere în UTF-8 (unele valori posibile ale octeților utilizate în secvențele de octeți UTF-8 se încadrează în intervalul de valori desemnate de wget ca „controale”).
Modul ascii este utilizat pentru a specifica faptul că toți octeții ale căror valori se află în afara intervalului de caractere ASCII (adică mai mari de 127) trebuie să fie eludați. Acest lucru poate fi util atunci când se salvează nume de fișiere a căror codificare nu se potrivește cu cea utilizată local.
Niciuna dintre aceste opțiuni nu ar trebui să fie necesară în mod normal. În mod implicit, un wget compatibil cu IPv6 va utiliza familia de adrese specificată de înregistrarea DNS a gazdei. Dacă DNS răspunde cu adrese IPv4 și IPv6, wget le va încerca în succesiune până când găsește una la care se poate conecta; (a se vedea, de asemenea, opțiunea „--prefer-family” descrisă mai jos.
Aceste opțiuni pot fi utilizate pentru a forța în mod deliberat utilizarea familiilor de adrese IPv4 sau IPv6 pe sistemele cu două familii, de obicei pentru a ajuta la depanare sau pentru a rezolva probleme de configurare a rețelei. Se poate specifica în același timp doar una dintre --inet6-only și --inet4-only. Niciuna dintre aceste opțiuni nu este disponibilă în wget compilat fără suport IPv6.
Astfel se evită erorile false și încercările de conectare atunci când se accesează gazde care se rezolvă atât la adrese IPv6, cât și la adrese IPv4 din rețele IPv4. De exemplu, www.kame.net se rezolvă la 2001:200:0:8002:203:47ff:fea5:3085 și la 203.178.141.194. Atunci când familia preferată este „IPv4”, adresa IPv4 este utilizată mai întâi; atunci când familia preferată este „IPv6”, adresa IPv6 este utilizată mai întâi; dacă valoarea specificată este „none”, ordinea adreselor returnată de DNS este utilizată fără modificări.
Spre deosebire de -4 și -6, această opțiune nu inhibă accesul la nici o familie de adrese, ci doar modifică ordinea în care sunt accesate adresele. De asemenea, rețineți că reordonarea efectuată de această opțiune este stabilă -- nu afectează ordinea adreselor din aceeași familie. Altfel spus, ordinea relativă a tuturor adreselor IPv4 și a tuturor adreselor IPv6 rămâne intactă în toate cazurile.
Puteți stabili comanda implicită pentru „use-askpass” în fișierul .wgetrc. Această configurare poate fi suprascrisă din linia de comandă.
Puteți stabili starea implicită a suportului IRI utilizând comanda „iri” din .wgetrc. Această configurare poate fi suprascrisă din linia de comandă.
wget utilizează funcția nl_langinfo() și apoi variabila de mediu „CHARSET” pentru a obține configurația regională (codificarea caracterelor). Dacă nu reușește, se utilizează ASCII.
Puteți defini codificarea locală implicită folosind comanda „local_encoding” din .wgetrc. Această configurare poate fi suprascrisă din linia de comandă.
Pentru HTTP, codificarea la distanță poate fi găsită în antetul HTTP „Content-Type” și în metaeticheta HTML „Content-Type http-equiv”.
Puteți stabili codificarea implicită utilizând comanda „remoteencoding” din .wgetrc. Această configurare poate fi suprascrisă din linia de comandă.
Să luăm, de exemplu, directorul de la ftp://ftp.xemacs.org/pub/xemacs/. Dacă îl preluați cu opțiunea -r, acesta va fi salvat local sub ftp.xemacs.org/pub/xemacs/. În timp ce opțiunea -nH poate elimina partea ftp.xemacs.org/, rămâneți blocat cu pub/xemacs. Aici este unde opțiunea --cut-dirs este utiă; aceasta face ca wget să nu „vadă” componentele directoarelor la distanță numărul. Iată câteva exemple de funcționare a opțiunii --cut-dirs.
Fără opțiuni -> ftp.xemacs.org/pub/xemacs/
-nH -> pub/xemacs/
-nH --cut-dirs=1 -> xemacs/
-nH --cut-dirs=2 -> .
--cut-dirs=1 -> ftp.xemacs.org/xemacs/
...
Dacă doriți doar să scăpați de structura directoarelor, această opțiune este similară cu o combinație între -nd și -P. Cu toate acestea, spre deosebire de -nd, --cut-dirs nu se pierde cu subdirectoarele - de exemplu, cu -nH --cut-dirs=1, un subdirector beta/ va fi plasat în xemacs/beta, așa cum ar fi de așteptat.
Rețineți că numele de fișiere schimbate în acest mod vor fi descărcate din nou de fiecare dată când veți reface o oglindă a unui sit, deoarece wget nu poate spune că fișierul local X.html corespunde adresei URL de la distanță X (deoarece nu știe încă dacă adresa URL produce o ieșire de tip text/html sau application/xhtml+xml.
Începând cu versiunea 1.12, wget se va asigura, de asemenea, că toate fișierele descărcate de tip text/css se termină cu sufixul .css, iar opțiunea a fost redenumită din --html-extension, pentru a reflecta mai bine noul comportament. Vechiul nume al opțiunii este încă acceptabil, dar ar trebui considerat acum ca fiind depreciat.
Începând cu versiunea 1.19.2, wget se va asigura, de asemenea, că toate fișierele descărcate cu un „Content-Encoding\[u201D] de br, compress, deflate sau gzip se termină cu sufixul .br, .Z, .zlib și, respectiv, .gz.
La un moment dat în viitor, această opțiune ar putea fi extinsă pentru a include sufixe pentru alte tipuri de conținut, inclusiv tipuri de conținut care nu sunt analizate de wget.
Un alt mod de a specifica numele de utilizator și parola este în adresa URL însăși. Oricare dintre cele două metode dezvăluie parola oricui se deranjează să ruleze ps. Pentru a preveni ca parolele să fie văzute, utilizați --use-askpass sau stocați-le în .wgetrc sau .netrc și asigurați-vă că protejați aceste fișiere de alți utilizatori cu chmod. Dacă parolele sunt foarte importante, nu le lăsați nici în acele fișiere -- editați fișierele și ștergeți-le după ce wget a început descărcarea.
Această opțiune este utilă atunci când, din anumite motive, conexiunile persistente (keep-alive) nu funcționează, de exemplu, din cauza unei erori a serverului sau din cauza incapacității scripturilor din partea serverului de a face față conexiunilor.
Stocarea în cache este permisă în mod implicit.
De obicei, veți utiliza această opțiune atunci când oglindiți situri care necesită conectare pentru a accesa o parte sau tot conținutul lor. Procesul de conectare funcționează de obicei prin emiterea de către serverul web a unui modul cookie HTTP la primirea și verificarea acreditărilor dumneavoastră. Cookie-ul este apoi retrimis de către navigator atunci când accesați acea parte a sitului, dovedind astfel identitatea dumneavoastră.
Oglindirea unui astfel de sit necesită ca wget să trimită aceleași cookie-uri pe care navigatorul dvs. le trimite atunci când comunicați cu situl respectiv. Acest lucru se realizează prin --load-cookies --- simplu direcționați wget către locația fișierului cookies.txt, iar acesta va trimite aceleași cookie-uri pe care le-ar trimite și navigatorul dvs. în aceeași situație. Diferite navigatoare păstrează fișierele cookie textuale în locații diferite:
Dacă nu puteți utiliza --load-cookies, ar putea exista totuși o alternativă. Dacă navigatorul dvs. acceptă un „ administrator de cookie-uri”, îl puteți utiliza pentru a vedea cookie-urile utilizate la accesarea sitului pe care îl oglindiți. Notați numele și valoarea cookie-ului și indicați-i manual lui wget să trimită acele cookie-uri, ocolind suportul „oficial” pentru cookie-uri:
wget --no-cookies --header "Cookie: <nume>=<valoare>"
Deoarece formatul fișierelor cookie nu conține în mod normal cookie-uri de sesiune, wget le marchează cu o dată de expirare de 0. Opțiunea --load-cookies a lui wget le recunoaște ca fiind cookie-uri de sesiune, dar ar putea deruta alte navigatoare. Rețineți, de asemenea, că cookie-urile astfel încărcate vor fi tratate ca alte cookie-uri de sesiune, ceea ce înseamnă că, dacă doriți ca --save-cookies să le păstreze din nou, trebuie să folosiți din nou --keep-session-cookies.
Cu această opțiune, wget va ignora antetul „Content-Length” --- ca și cum nu ar fi existat niciodată.
Puteți defini mai mult de un antet suplimentar specificând --header de mai multe ori.
wget --header='Accept-Charset: iso-8859-2' \
--header='Accept-Language: hr' \
http://fly.srk.fer.hr/
Specificarea unui șir gol ca valoare a antetului va șterge toate anteturile anterioare definite de utilizator.
Începând cu Wget 1.10, această opțiune poate fi utilizată pentru a anula anteturile generate automat. Acest exemplu îi indică lui wget să se conecteze la localhost, dar să specifice foo.bar în antetul „Host”:
wget --header="Host: foo.bar" http://localhost/
În versiunile de Wget anterioare versiunii 1.10, o astfel de utilizare a --header a cauzat trimiterea de anteturi duplicate.
Dacă se specifică auto sau gzip, wget solicită serverului să comprime fișierul folosind formatul de comprimare gzip. Dacă serverul comprimă fișierul și răspunde cu câmpul de antet „Content-Encoding” definit în mod corespunzător, fișierul va fi decomprimat automat.
Dacă se specifică none, wget nu va cere serverului să comprime fișierul și nu va decomprima niciun răspuns al serverului. Aceasta este valoarea implicită.
Suportul pentru comprimare este în prezent experimental. În cazul în care este activat, vă rugăm să raportați orice eroare la „bug-wget@gnu.org”.
Considerațiile de securitate similare cu cele din cazul --http-password se aplică și aici.
Protocolul HTTP permite clienților să se identifice cu ajutorul unui câmp de antet „User-Agent”. Acest lucru permite distingerea software-ului WWW, de obicei în scopuri statistice sau pentru urmărirea încălcărilor de protocol. wget se identifică în mod normal ca Wget/versiune, versiune fiind numărul versiunii curente a wget.
Cu toate acestea, se știe că unele siteuri au impus politica de adaptare a rezultatului în funcție de informațiile furnizate de „User-Agent”. Deși, în teorie, nu este o idee atât de rea, aceasta a fost abuzată de servere care au refuzat informații pentru alți clienți decât (istoric) Netscape sau, mai frecvent, Microsoft Internet Explorer. Această opțiune vă permite să modificați linia „User-Agent” emisă de wget. Utilizarea acestei opțiuni este descurajată, cu excepția cazului în care știți cu adevărat ce faceți.
Specificarea unui agent utilizator gol cu --user-agent="" îi indică lui wget să nu trimită antetul „User-Agent” în cererile HTTP.
Vă rugăm să rețineți că wget nu solicită ca respectivul conținut să fie de forma "cheie1=valoare1&cheie2=valoare2" și nici nu testează acest lucru. wget va transmite pur și simplu orice date care îi sunt furnizate. Cu toate acestea, majoritatea serverelor se așteaptă ca datele POST să fie în formatul de mai sus atunci când procesează formulare HTML.
Când se trimite o cerere POST utilizând opțiunea --post-file, wget tratează fișierul ca pe un fișier binar și va trimite fiecare caracter din cererea POST fără a elimina caracterele de linie nouă sau salt de pagină. Orice alte caractere de control din text vor fi, de asemenea, trimise ca atare în cererea POST.
Vă rugăm să rețineți că wget trebuie să cunoască în prealabil dimensiunea datelor POST. Prin urmare, argumentul pentru „-post-file” trebuie să fie un fișier obișnuit; specificarea unei FIFO (conducte cu nume) sau a ceva precum /dev/stdin nu va funcționa. Nu este foarte clar cum se poate evita această limitare inerentă la HTTP/1.0. Deși HTTP/1.1 introduce transferul chunked (în bucăți) care nu necesită cunoașterea în avans a lungimii cererii, un client nu poate utiliza transferul în bucăți decât dacă știe că vorbește cu un server HTTP/1.1. Și nu poate ști acest lucru până când nu primește un răspuns, care la rândul său necesită ca cererea să fi fost finalizată - o problemă de tipul „oul și găina”.
Notă: Începând cu versiunea 1.15, în cazul în care wget este redirecționat după ce cererea POST este finalizată, comportamentul său va depinde de codul de răspuns returnat de server. În cazul unei redirecționări 301 Moved Permanently (mutat permanent), 302 Moved Temporarily (mutat temporar) sau 307 Temporary Redirect (redirecționare temporară), wget va continua, în conformitate cu RFC2616, să trimită o cerere POST. În cazul în care un server dorește ca clientul să schimbe metoda de solicitare la redirecționare, acesta trebuie să trimită un cod de răspuns 303. A se vedea secțiunea „Alt cod de răspuns”.
Acest exemplu arată cum să vă conectați la un server folosind POST și apoi să descărcați paginile dorite, probabil accesibile doar utilizatorilor autorizați:
# Se conectează la server. Acest lucru se poate face doar o singură dată.
wget --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://example.com/auth.php
# Acum ia pagina sau paginile care ne interesează.
wget --load-cookies cookies.txt \
-p http://example.com/interesting/article.php
Dacă serverul utilizează cookie-uri de sesiune pentru a urmări autentificarea utilizatorului, cele de mai sus nu vor funcționa, deoarece --save-cookies nu le va salva (și nici navigatoarele nu le vor salva), iar fișierul cookies.txt va fi gol. În acest caz, utilizați --keep-session-cookies împreună cu --save-cookies pentru a forța salvarea cookie-urilor de sesiune.
În prezent, opțiunea --body-file nu este pentru transmiterea fișierelor ca un întreg. wget nu acceptă în prezent „multipart/form-data” pentru transmiterea de date; doar „application/x-www-form-urlencoded”. În viitor, acest lucru poate fi modificat astfel încât wget să trimită --body-file ca fișier complet, în loc să trimită conținutul său către server. Vă rugăm să fiți conștienți de faptul că wget trebuie să cunoască în prealabil conținutul datelor BODY și, prin urmare, argumentul pentru --body-file trebuie să fie un fișier obișnuit. Pentru o explicație mai detaliată, consultați --post-file. Trebuie specificată doar una dintre opțiunile --body-data și --body-file.
În cazul în care wget este redirecționat după ce cererea este finalizată, wget va suspenda metoda curentă și va trimite o cerere GET până la finalizarea redirecționării. Acest lucru este valabil pentru toate codurile de răspuns de redirecționare, cu excepția 307 Temporary Redirect (Redirecționare temporară), care este utilizat pentru a specifica în mod explicit că metoda de solicitare nu trebuie să se schimbe. O altă excepție este atunci când metoda este stabilită „POST”, caz în care se respectă regulile de redirecționare specificate la --post-data.
Această opțiune este utilă pentru unele programe CGI de descărcare de fișiere care utilizează antetele „Content-Disposition” pentru a descrie numele unui fișier descărcat.
Când este combinată cu opțiunile --metalink-over-http și --trust-server-names, un fișier Content-Type: application/metalink4+xml este denumit utilizând câmpul de nume de fișier „Content-Disposition”, dacă este disponibil.
Utilizarea acestei opțiuni nu este recomandată și este destinată doar pentru a permite utilizarea unor servere obscure, care nu trimit niciodată provocări de autentificare HTTP, dar acceptă informații de autentificare nesolicitate, adică, în plus față de autentificarea bazată pe formular.
Utilizarea acestei opțiuni este destinată doar pentru cazuri speciale de utilizare și, în general, nu este recomandată, deoarece poate forța reîncercări chiar și în cazurile în care serverul încearcă de fapt să își reducă sarcina. Vă rugăm să o utilizați cu înțelepciune și numai dacă știți ce faceți.
Pentru a asigura suportul pentru descărcări HTTP (HTTPS) criptate, wget trebuie compilat cu o bibliotecă SSL externă. Cea implicită actuală este GnuTLS. În plus, wget acceptă și HSTS (HTTP Strict Transport Security). Dacă wget este compilat fără suport SSL, niciuna dintre aceste opțiuni nu este disponibilă.
Specificarea SSLv2, SSLv3, TLSv1, TLSv1_1, TLSv1_2 sau TLSv1_3 forțează utilizarea protocolului corespunzător. Acest lucru este util atunci când se vorbește cu implementări de servere SSL vechi și cu erori care fac dificilă alegerea versiunii corecte de protocol de către biblioteca SSL de bază. Din fericire, astfel de servere sunt destul de rare.
Specificarea PFS impune utilizarea așa-numitelor suite de coduri „Perfect Forward Security”. Pe scurt, PFS adaugă securitate prin crearea unei chei unice pentru fiecare conexiune SSL. Aceasta are un impact ceva mai mare asupra CPU-ului clientului și serverului. Utilizăm cifrări cunoscute ca fiind sigure (de exemplu, fără MD4) și protocolul TLS. De asemenea, acest mod exclude în mod explicit metodele de schimb de chei non-PFS, cum ar fi RSA.
Începând cu Wget 1.10, opțiunea implicită este de a verifica certificatul serverului în raport cu autoritățile de certificare recunoscute, întrerupând negocierea SSL și întrerupând descărcarea dacă verificarea eșuează. Deși acest lucru oferă descărcări mai sigure, rupe interoperabilitatea cu unele situri care funcționau cu versiunile anterioare ale wget, în special cele care utilizează certificate auto-semnate, expirate sau nevalide în alt mod. Această opțiune forțează un mod de operare „nesigur” care transformă erorile de verificare a certificatelor în avertismente și vă permite să continuați.
Dacă întâmpinați erori de „verificare a certificatului” sau erori care spun că „numele comun nu corespunde cu numele de gazdă solicitat” puteți utiliza această opțiune pentru a ocoli verificarea și a continua descărcarea. Utilizați această opțiune numai dacă sunteți convins de autenticitatea sitului sau dacă nu vă pasă de validitatea certificatului acestuia. Este aproape întotdeauna o idee proastă să nu verificați certificatele atunci când transmiteți date confidențiale sau importante. Pentru certificatele interne/auto-semnate, ar trebui să descărcați certificatul și să îl verificați în loc să forțați acest mod nesigur. Dacă sunteți foarte sigur că nu doriți nicio verificare a certificatului, puteți specifica „--check-certificate=quiet” pentru a-i spune lui wget să nu afișeze niciun avertisment cu privire la certificatele nevalide, deși în majoritatea cazurilor acesta este un lucru greșit de făcut.
Fără această opțiune, wget caută certificate CA în locațiile specificate de sistem, alese în momentul instalării OpenSSL.
Fără această opțiune, wget caută certificate CA în locațiile specificate de sistem, alese în momentul instalării OpenSSL.
La negocierea unei conexiuni TLS sau SSL, serverul trimite un certificat care indică identitatea sa. Din acest certificat se extrage o cheie publică, iar dacă aceasta nu se potrivește exact cu cheia (cheile) publică (publice) furnizată (furnizate) pentru această opțiune, wget va întrerupe conexiunea înainte de a trimite sau primi date.
Pe astfel de sisteme, biblioteca SSL are nevoie de o sursă externă de date aleatorii pentru a se inițializa. Datele aleatorii pot fi furniza de EGD (a se vedea opțiunea --egd-file mai jos) sau citite dintr-o sursă externă specificată de utilizator. Dacă această opțiune nu este specificată, wget caută date aleatorii în $RANDFILE sau, dacă aceasta nu este definită, în $HOME/.rnd.
Dacă primiți eroarea „Could not seed OpenSSL PRNG; disabling SSL.” (Nu s-a putut însămânța PRNG OpenSSL; se dezactivează SSL.), ar trebui să furnizați date aleatorii folosind unele dintre metodele descrise mai sus.
OpenSSL permite utilizatorului să își specifice propria sursă de entropie folosind variabila de mediu „RAND_FILE”. Dacă această variabilă nu este definită sau dacă fișierul specificat nu produce suficiente date aleatorii, OpenSSL va citi date aleatorii din soclul EGD specificat folosind această opțiune.
Dacă această opțiune nu este specificată (și nu este utilizată comanda de pornire echivalentă), EGD nu este contactat niciodată. EGD nu este necesar pe sistemele Unix moderne care oferă suport pentru /dev/urandom.
Baza de date HSTS a wget este un fișier text simplu. Fiecare linie conține o intrare HSTS (adică un sit care a emis un antet „Strict-Transport-Security” și care, prin urmare, a specificat o politică HSTS concretă care urmează să fie aplicată). Liniile care încep cu un simbol („#”)) sunt ignorate de către wget. Vă rugăm să rețineți că, în ciuda acestei facilități de citire de către om, modificarea manuală a bazei de date HSTS nu este, în general, o idee bună.
O linie de intrare HSTS constă din mai multe câmpuri separate prin unul sau mai multe spații albe:
"<hostname> SP [<port>] SP <include subdomains> SP <created> SP <max-age>"
Câmpurile hostname și port indică numele de gazdă și portul la care se aplică politica HSTS dată. Câmpul port poate fi zero și va fi, în majoritatea cazurilor. Aceasta înseamnă că numărul portului nu va fi luat în considerare atunci când se decide dacă o astfel de politică HSTS ar trebui aplicată unei anumite cereri (va fi evaluat doar numele de gazdă). Atunci când port este diferit de zero, atât numele de gazdă țintă, cât și portul vor fi evaluate, iar politica HSTS va fi aplicată numai dacă ambele corespund. Această caracteristică a fost inclusă numai în scopuri de testare/dezvoltare. Suita de testare a wget (în testenv/) creează baze de date HSTS cu porturi explicite cu scopul de a asigura comportamentul corect al wget. Aplicarea politicilor HSTS la alte porturi decât cele implicite este descurajată de RFC 6797 (a se vedea apendicele B „Differences between HSTS Policy and Same-Origin Policy”). Prin urmare, această funcționalitate nu ar trebui utilizată în mediile de producție, iar port va fi de obicei zero. Ultimele trei câmpuri fac ceea ce se așteaptă de la ele. Câmpul include_subdomains poate fi 1 sau 0 și indică dacă subdomeniile domeniului țintă ar trebui să facă și ele parte din politica HSTS dată. Câmpurile created și max-age conțin valorile temporale ale momentului în care a fost creată o astfel de intrare (văzută prima dată de wget) și valoarea „max-age” definită de HSTS, care stabilește cât timp ar trebui să rămână activă politica HSTS respectivă, măsurată în secunde scurse de la momentul stocat în created. Odată ce acest timp a trecut, politica HSTS respectivă nu va mai fi valabilă și va fi în cele din urmă eliminată din baza de date.
Dacă vă furnizați propria bază de date HSTS prin --hsts-file, trebuie să știți că wget poate modifica fișierul furnizat în cazul în care apare vreo schimbare între politicile HSTS solicitate de serverele de la distanță și cele din fișier. Când wget iese, actualizează efectiv baza de date HSTS prin rescrierea fișierului bazei de date cu noile intrări.
Dacă fișierul furnizat nu există, wget va crea unul. Acest fișier va conține noile intrări HSTS. Dacă nu a fost generată nicio intrare HSTS (niciun antet „Strict-Transport-Security” nu a fost trimis de niciunul dintre servere), atunci nu va fi creat niciun fișier, nici măcar unul gol. Acest comportament se aplică și fișierului implicit al bazei de date (~/.wget-hsts): acesta nu va fi creat până când un server nu aplică o politică HSTS.
Se are grijă să nu se anuleze eventualele modificări efectuate de alte procese wget în același timp asupra bazei de date HSTS. Înainte de a transfera intrările HSTS actualizate în fișier, wget îl va citi din nou și va fuziona modificările.
Utilizarea unei baze de date HSTS personalizate și/sau modificarea uneia existente este descurajată. Pentru mai multe informații despre potențialele amenințări la adresa securității care decurg dintr-o astfel de practică, consultați secțiunea 14 „Security Considerations” din RFC 6797, în special secțiunea 14.9 „Creative Manipulation of HSTS Policy Store”.
O altă modalitate de a specifica numele de utilizator și parola este chiar în URL. Oricare dintre aceste metode dezvăluie parola oricărei persoane care se obosește să ruleze «ps». Pentru a preveni vizualizarea parolelor, stocați-le în .wgetrc sau .netrc și asigurați-vă că protejați aceste fișiere de alți utilizatori cu «chmod». Dacă parolele sunt foarte importante, nu le lăsați nici în aceste fișiere - editați fișierele și ștergeți-le după ce wget a început descărcarea.
Rețineți că, deși wget scrie într-un nume de fișier cunoscut pentru acest fișier, aceasta nu este o breșă de securitate în scenariul în care un utilizator face din .listing o legătură simbolică către /etc/passwd sau ceva asemănător și cere ca „root” să ruleze wget în directorul său. În funcție de opțiunile utilizate, fie wget va refuza să scrie în .listing, făcând ca operația de globalizare/recursiune/marcaj-temporal să eșueze, fie legătura simbolică va fi ștearsă și înlocuită cu fișierul .listing real, fie lista va fi scrisă într-un fișier .listing.număr.
Chiar dacă această situație nu este o problemă, „root” nu ar trebui să ruleze niciodată wget în directorul unui utilizator care nu este de încredere. Un utilizator ar putea face ceva la fel de simplu ca legarea index.html la /etc/passwd și să ceară ca „root\[u201D] să ruleze wget cu -N sau -r astfel încât fișierul să fie suprascris.
wget ftp://gnjilux.srk.fer.hr/*.msg
În mod implicit, globalizarea va fi activată dacă adresa URL conține un caracter de globalizare. Această opțiune poate fi utilizată pentru activarea sau dezactivarea permanentă a globalizării.
Este posibil să fie necesar să puneți între ghilimele adresa URL pentru a o proteja de extinderea de către shell. Globalizarea face ca wget să caute o listă de directoare, care este specifică sistemului. Acesta este motivul pentru care funcționează în prezent numai cu serverele FTP Unix (și cele care emulează ieșirea «ls» Unix).
Dacă mașina este conectată direct la internet, atât FTP pasiv, cât și FTP activ ar trebui să funcționeze la fel de bine. În majoritatea configurațiilor cu paravan de protecție și NAT, FTP pasiv are mai multe șanse să funcționeze. Cu toate acestea, în unele configurații rare de paravan de protecție, FTP activ funcționează atunci când FTP pasiv nu funcționează. Dacă bănuiți că acesta este cazul, utilizați această opțiune sau configurați „passive_ftp=off” în fișierul de inițiere (init).
Atunci când se specifică --retr-symlinks=no, fișierul legat nu este descărcat. În schimb, este creată o legătură simbolică corespunzătoare pe sistemul de fișiere local. Fișierul indicat nu va fi recuperat decât dacă această recuperare recursivă l-ar fi întâlnit separat și l-ar fi descărcat oricum. Această opțiune prezintă un risc de securitate în cazul în care un server FTP rău intenționat poate determina ca wget să scrie în fișiere din afara directoarelor vizate printr-un fișier „.LISTING” special creat.
Rețineți că atunci când se recuperează un fișier (nu un director) pentru că a fost specificat în linia de comandă, mai degrabă decât pentru că a fost apelat, această opțiune nu are niciun efect. Legăturile simbolice sunt întotdeauna traversate în acest caz.
wget -r -l 0 http://<sit>/1.html
În mod ideal, ne-am aștepta ca aceasta să descarce doar 1.html. dar, din păcate, nu este cazul, deoarece -l 0 este echivalent cu -l inf - adică, recursiune infinită. Pentru a descărca o singură pagină HTML (sau o mână de pagini), specificați-le pe toate în linia de comandă și lăsați deoparte -r și -l. Pentru a descărca elementele esențiale pentru vizualizarea unei singure pagini HTML, consultați opțiunea --page-requisites.
wget -r -nd --delete-after http://whatever.com/~popular/page/
Opțiunea -r este pentru recuperarea recursivă, iar -nd pentru a nu crea directoare.
Rețineți că --delete-after șterge fișierele de pe mașina locală. Aceasta nu emite comanda DELE către siturile FTP de la distanță, de exemplu. De asemenea, rețineți că atunci când se specifică opțiunea --delete-after, opțiunea --convert-links este ignorată, astfel încât fișierele .orig pur și simplu nu sunt create în primul rând.
Fiecare legătură va fi modificată în unul dintre cele două moduri:
Exemplu: dacă fișierul descărcat /foo/doc.html are legătură cu /bar/img.gif, de asemenea descărcat, atunci legătura din doc.html va fi modificată pentru a indica către ../bar/img.gif. Acest tip de transformare funcționează fiabil pentru combinații arbitrare de directoare.
Exemplu: dacă fișierul descărcat /foo/doc.html trimite la /bar/img.gif (sau la ../bar/img.gif), atunci legătura din doc.html va fi modificată pentru a trimite la http://hostname/bar/img.gif.
Din acest motiv, navigarea locală funcționează fiabil: dacă un fișier vinculat (către care se indică) a fost descărcat, legătura se va referi la numele său local; dacă nu a fost descărcat, legătura se va referi la adresa sa completă de internet, în loc să prezinte o legătură întreruptă. Faptul că legăturile anterioare sunt convertite în legături relative asigură faptul că puteți muta ierarhia descărcată într-un alt director.
Rețineți că numai la încheierea descărcării wget poate ști ce legături au fost descărcate. Din această cauză, activitatea efectuată de -k va fi realizată la sfârșitul tuturor descărcărilor.
Funcționează deosebit de bine în combinație cu --adjust-extension, deși această asociere nu este impusă. Se dovedește utilă pentru popularea cache-lor Internet cu fișiere descărcate de la diferite gazde.
Exemplu: dacă o legătură trimite la //foo.com/bar.cgi?xyz cu --adjust-extension declarată și destinația sa locală este ./foo.com/bar.cgi?xyz.css, atunci legătura va fi convertită în //foo.com/bar.cgi?xyz.css. Observați că numai partea cu numele fișierului a fost modificată. Restul adresei URL a fost lăsat neatins, inclusiv ruta netă („//”') care altfel ar fi prelucrată de wget și convertită în schema efectivă (adică „http://”).
În mod normal, atunci când se descarcă o singură pagină HTML, nu sunt descărcate toate documentele necesare pentru afișarea corectă a acesteia. Utilizarea opțiunii -r împreună cu opțiunea -l poate ajuta, dar deoarece wget nu face în mod normal distincție între documentele externe și cele incluse, rămânem în general cu „documente frunză” cărora le lipsesc elementele necesare.
De exemplu, să spunem că documentul 1.html conține o etichetă „<IMG>” care face referire la 1.gif și o etichetă „<A>” care trimite la documentul extern 2.html. Să spunem că 2.html este similar, dar că imaginea sa este 2.gif și se leagă de 3.html. Să spunem că acest lucru continuă până la un număr arbitrar de mare.
Dacă cineva execută comanda:
wget -r -l 2 http://<sit>/1.html
atunci 1.html, 1.gif, 2.html, 2.gif și 3.html vor fi descărcate. După cum puteți vedea, 3.html nu are 3.gif necesar, deoarece wget numără pur și simplu numărul de salturi (până la 2) de la 1.html pentru a determina unde să oprească recursiunea. În schimb, cu această comandă:
wget -r -l 2 -p http://<sit>/1.html
vor fi descărcate toate fișierele de mai sus și imaginea 3.gif cerută de 3.html. În mod similar,
wget -r -l 1 -p http://<sit>/1.html
va face ca 1.html, 1.gif, 2.html și 2.gif să fie descărcate. S-ar putea crede că:
wget -r -l 0 -p http://<sit>/1.html
ar descărca doar 1.html și 1.gif, dar, din păcate, acesta nu este cazul, deoarece -l 0 este echivalent cu -l inf - adică, recursiune infinită. Pentru a descărca o singură pagină HTML (sau o mână de pagini HTML, toate specificate în linia de comandă sau într-un fișier de intrare cu adrese URL ca argument al opțiunii -i) și cerințele acesteia (sau ale acestora), este suficient să renunțați la -r și -l:
wget -p http://<sit>/1.html
Rețineți că wget se va comporta ca și cum -r ar fi fost specificată, dar vor fi descărcate numai pagina respectivă și cerințele sale. Legăturile din pagina respectivă către documente externe nu vor fi urmărite. De fapt, pentru a descărca o singură pagină și toate cerințele sale (chiar dacă acestea există pe situri web separate) și pentru a se asigura că lotul se afișează corect la nivel local, acestui autor îi place să utilizeze câteva opțiuni în plus față de -p:
wget -E -H -k -K -p http://<sit>/<document>
Pentru a încheia acest subiect, merită să știți că ideea lui wget de legătură externă a unui document este orice adresă URL specificată într-o etichetă „<A>”, o etichetă „<AREA>”, sau o etichetă „<LINK>” alta decât „<LINK REL="stylesheet">”.
Conform specificațiilor, comentariile HTML sunt exprimate ca declarații SGML. Declarația este un marcaj special care începe cu <! și se termină cu >, cum ar fi <!DOCTYPE ...>, care poate conține comentarii între o pereche de delimitatori --. Comentariile HTML sunt „declarații goale”, declarații SGML fără niciun text non-comentariu. Prin urmare, <!--foo--> este un comentariu valid, la fel și <!--unu-- --doi-->, dar <!--1--2--> nu este.
Pe de altă parte, majoritatea celor ce scriu pagini HTML nu percep comentariile ca fiind altceva decât text delimitat cu <!-- și -->, ceea ce nu este chiar același lucru. De exemplu, ceva de genul <!------------> funcționează ca un comentariu valid atât timp cât numărul de liniuțe este multiplu de patru (!). În caz contrar, comentariul durează tehnic până la următorul --, care poate fi la celălalt capăt al documentului. Din această cauză, mulți navigatori web populari ignoră complet specificația și implementează ceea ce utilizatorii se așteaptă: comentarii delimitate cu <!-- și -->.
Până la versiunea 1.9, wget a interpretat comentariile în mod strict, ceea ce a dus la lipsa legăturilor în multe pagini web care se afișau bine în navigatori, dar aveau ghinionul de a conține comentarii neconforme. Începând cu versiunea 1.9, wget a intrat în rândul clienților care implementează comentarii „naive”, terminând fiecare comentariu la prima apariție a lui -->.
Dacă, din orice motiv, doriți o analiză strictă a comentariilor, utilizați această opțiune pentru a o activa.
În trecut, această opțiune era cea mai bună opțiune pentru descărcarea unei singure pagini și a cerințelor sale, utilizând o linie de comandă precum:
wget --ignore-tags=a,area -H -k -K -r http://<sit>/<document>
Cu toate acestea, autorul acestei opțiuni a dat peste o pagină cu etichete precum „<LINK REL="home" HREF="/">” și și-a dat seama că specificarea etichetelor de ignorat nu era suficientă. Nu se poate spune pur și simplu lui wget să ignore „<LINK>”, pentru că atunci foile de stil nu vor fi descărcate. Acum, cel mai bun pariu pentru a descărca o singură pagină și cerințele acesteia este opțiunea dedicată --page-requisites.
wget acceptă proxy-uri atât pentru preluările HTTP, cât și pentru FTP. Modul standard de a specifica locația proxy-ului, recunoscut de wget, este prin utilizarea următoarelor variabile de mediu:
wget poate returna unul dintre mai multe coduri de eroare în cazul în care întâmpină probleme.
Cu excepția codurilor 0 și 1, codurile de ieșire cu numere mai mici au prioritate față de cele cu numere mai mari, atunci când sunt întâlnite mai multe tipuri de erori.
În versiunile de wget anterioare versiunii 1.12, starea de ieșire a wget tindea să fie nefolositoare și inconsecventă. Descărcările recursive returnau practic întotdeauna 0 (succes), indiferent de problemele întâmpinate, iar descărcările nerecursive returnau doar starea corespunzătoare celei mai recente încercări de descărcare.
Vă invităm să trimiteți rapoarte de erori prin intermediul sistemului de urmărire a erorilor GNU Wget (consultați <https://savannah.gnu.org/bugs/?func=additem&group=wget>) sau pe lista noastră de corespondență <bug-wget@gnu.org>.
Vizitați <https://lists.gnu.org/mailman/listinfo/bug-wget> pentru a obține mai multe informații (cum să vă abonați, arhivele listei, ...).
Înainte de a trimite un raport de eroare, vă rugăm să încercați să urmați câteva reguli simple.
De asemenea, deși probabil voi fi interesat să cunosc conținutul fișierului dvs. .wgetrc, este probabil o idee proastă să îl introduceți direct în mesajul de depanare. În schimb, ar trebui să încercați mai întâi să vedeți dacă problema se repetă cu .wgetrc mutat din loc. Doar dacă se dovedește că parametrii .wgetrc afectează problema, trimiteți-mi prin e-mail părțile relevante din fișier.
Notă: vă rugăm să vă asigurați că eliminați orice informație potențial sensibilă din jurnalul de depanare înainte de a-l trimite la adresa sistemului de urmărire a erorilor. Opțiunea „-d”' nu se va strădui să colecteze informații sensibile, dar jurnalul va conține o transcriere destul de completă a comunicării lui wget cu serverul, care poate include parole și bucăți de date descărcate. Deoarece adresa sistemului de urmărire a erorilor este arhivată public, puteți presupune că toate rapoartele de erori sunt vizibile pentru public.
Acesta nu este manualul complet pentru GNU Wget. Pentru informații mai complete, inclusiv explicații mai detaliate ale unora dintre opțiuni și o serie de comenzi disponibile pentru utilizarea cu fișierele .wgetrc și opțiunea -e, consultați intrarea GNU Info pentru wget.
Consultați și wget2(1), versiunea actualizată a GNU Wget cu suport și mai bun pentru descărcarea recursivă și protocoale moderne precum HTTP/2.
Scris inițial de Hrvoje Nikšić <hniksic@xemacs.org>. Menținut în prezent de Darshit Shah <darnir@gnu.org> și Tim Rühsen <tim.ruehsen@gmx.de>.
Drepturi de autor © 1996--2011, 2015, 2018--2024 Free Software Foundation, Inc.
Se acordă permisiunea de a copia, distribui și/sau modifica acest document în conformitate cu termenii Licenței GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioară publicată de Free Software Foundation; fără secțiuni invariante, fără texte de copertă și fără texte de contra copertă. O copie a licenței este inclusă în secțiunea intitulată „GNU Free Documentation License”.
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
| 8 martie 2025 | GNU Wget 1.25.0 |