Wget
GNU Wget (ili skraćeno Wget, bivši Geturl) je kompjuterski program koji sakuplja sadržinu sa web servera. GNU Wget je kao takav deo GNU projekta. Ime potiče od World Wide Web i get. Program podržava preuzimanje preko HTTP-a, HTTPS-a i FTP protokola.
Karakteristike ovog programa uključuju i samostalni (rekurzivni) download, konverziju linkova za oflajn pregledanje HTML sadržaja. Program poseduje podršku za proksije i još mnogo toga. Program se pojavio 1996. u isto vreme kada je popularnost Web-a doživljavala svoju ekspanziju. To je izazvalo široku upotrebu ovog programa među korisnicima Unix-a i širenje primene kod većine Linux distribucija. Program je napisan u portabilnoj verziji C-a. Wget se sa lakoćom može instalirati na svakom “Unix-olikom” sistemu i importovati u brojna okruženja koja uključuju , Microsoft Windows, Mac OS X, OpenVMS, MorphOS i AmigaOS.
Program se koristi kao osnova za grafičke programe poput GWget za GNOME Desktop.
Istorija
Wget je naslednik Geturl programa, istog autora, čiji razvoj je krenuo krajem 1995. Program je preimenovan u Wget nakon sto je autor saznao da postoji Amiga program pod imenom GetURL, koji je napisao James Burton iz AREXX-a.
Wget je svojim prisustvom sredinom 90-ih činio značajan udeo u zastupljenosti među softverima namenjenim preuzimanju sa weba. Ni jedan program nije imao tu mogućnost pouzdanog preuzimanja ni preko HTTP-a ni FTP protokola. Raniji programi su samo podržavali ili FTP (poput NcFTP i dl[мртва веза]) ili su bili napisani u Perl-u, koji u to vreme još uvek nije bio prisutan. Wget je nastao iz ideje postojećih programa koji je imao za cilj da podrži rad HTTP-a i FTP-a i da omogući korisnicima izdradu koristeći postojeće pakete programa prisutne u svim Unix sistemima.
U to vreme mnogi korisnici Unix-a su imali problema sa izuzetno sporim univerzitetskim i dial-up Internet konekcijama. Ovo je dovelo do potrebe za programom za preuzimanje sa interneta (agentom) koji može izaći na kraj sa periodičnim grečkama na mreži bez pomoći prisutnog operatera.
Karakteristike
Robusnost
Wget je projektovan kako bi savladao spore i nestabilne internet konekcije. Ukoliko se preuzimanje ne obavi zbog gubitka veze, Wget će automatski pokušati da nastavi preuzimanje i ponavljaće ovaj proces sve dok se datoteka ne preuzme u svojoj celosti. Bio je to jedan od prvih klijenata (clients) koji je koristio tada novi Range
HTTP zaglavlje za ispunjavanje ove funkcije.
Rekurzivno preuzimanje
Wget može da radi i kao web crawler (veb popisivač) ” uzimajući resurse povezane sa HTML stranama i preuzimajući ih jedan za drugim. Ovaj proces se ponavlja rekurzivno dok se sve strane ne preuzmu ili određeni broj stranica prethodno naznačen od strane korisnika. Preuzete strane se čuvaju u direktorijumskoj strukturi sličnoj onoj na serveru. Ovo rekurzivno preuzimanje omogućava kopiranje dela ili celog sadržaja veb sajt-a preko HTTP-a. Linkovi u preuzetim HTML stranama se mogu podesiti da pokazuju na lokalno preuzeti materijal za offline pregled. Kada se vrši ovaj vid automatskog kopiranja (mirroring ) veb sajtova, Wget podržava Robots Exclusion Standard (isključujući kada je opcija -e robots=off
aktivna).
Rekurzivni download radi i sa FTP-om. Tada Wget poziva LIST
komandu kako bi pronašao dodatne fajlove za preuzimanje. Program ponavlja ovu komandu za direktorujume i fajlove pod onom u naznačenom korenom URL-u. Školjkoliki džokeri su podržani kada se traži preuzimanje FTP-a URL-a.
Kada se koristi rekurzivno preuzimanje preko HTTP-a ili FTP-a, Wget se može programirati da ispituje vremena timestamps dokumentovana vremena (timestamps) lokalnih i udaljenih fajlova (fajlova na serveru). Time program se može podesiti tako da preuzima samo nove fajlove. Ovo omogućava lakse kopiranje HTTP-a i FTP-a sajtova, ali se takođe smatra neefikasnim i sklonim greškama u poređenju sa programima poput rsync-a koji radi kopiranje od nule. S druge strane, Wget ne zahteva poseban softver na serverskoj strani za obavljanje ovog zadatka.
Neinteraktivnost
Wget nije interaktivan u tom smislu da, jednom poktenutm, ne traži podešavanje od strane korisnika, da ne traži kontrolu TTY-a, kao i da je u stanju da prati proces u zasebnom fajlu koji se naknadno može proveriti. Ovim, korisnik može da pokrene Wget i da se izloguje, ostavljajući program bez nadzora. S druge strane, većina grafičkih ili tekstualnih korisničkih interfejsa veb pregledača zahteva od korisnika da ostane ulogovan i da iznova manuelno pokrene fajlove koji su naišli na grešku. Ovo se moze shvatiti kao velika mana u operacijama kada se vrši transfer velike količine podataka.
Portabilnost
Program je napisan u veoma portabilnoj verziji C-a sa minimalnom zavisnosti od biblioteka treće strane. Wget zahteva nesto više od C kompajlera i BSD-ovog interfejsa TCP/IP mreže. Projektovan kao Unix program pod kapom Unix shell-a, ovaj program je eksportovan u brojne Unix-olika okruženja i sisteme, uključujući Microsoft Windows preko Cygwin, i Mac OS X. Takođe ovaj program postoji i u verziji gde su koreni ovog programa u Microsoft Windows-u kao jedan od GnuWin paketa.
Ostale karakteristike
- Wget podržava download preko proksija, koji su u velikoj meri rasprostranjeni kako bi omogućili pristup internetu kroz Firewall-ove kompanija, i veoma brzo dostavljaju traženi sadrzaj.
- Koristi stalne HTTP konekcije gde su one raspoložive.
- IPv6 je podržan na sistemima koji uključuju odgovarajuće interfejse.
- SSL/TLS je podržan za enkriptovanje preuzimanja korišćenjem OpenSSL biblioteke.
- Podaci veći od 2 GiB su podržani na 32-bitnim sistemima koji uključuju odgovarajući interfejs.
- Brzina download-a moze biti ograničena kako bi se izbeglo prekoračenje potrošnje.
Korišćenje Wget-a
Osnovno korišćenje
Osnovno korišćenje GNU Wget-a se sastoji iz pozivanja sa komandne linije, davajući jedan ili više URL-a kao argument.
# Preuzeti naslovnu stranu sa veb strane example.com u fajl # pod imenom "index.html". wget http://www.example.com/
# Preuzeti Wget-ov izvršni kod sa GNU ftp veb strane. wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz
Nešto komplikovanija upotreba uključuje automatski download sa većeg broja URL-a u direktorijsku hijerarhiju.
# Preuzeti *.gif sa veb strane # (globbing, like "wget http://www.server.com/dir/*.gif", only works with ftp) wget -e robots=off -r -l1 --no-parent -A.gif ftp://www.example.com/dir/
# Preuzeti naslovnu stranu sa veb strane example.com, sa pratećim # slikama i kaskadnim stilovima neophodnim za prikazivanje strane, i konvertovati # unutrašnje URL-ove tako da referišu na sadržaj koji je lokalno dostupan. wget -p -k http://www.example.com/
# Preuzeti sve sadržaje sa veb strane example.com wget -r -l 0 http://www.example.com/
Napredni primeri
Preuzeti vernu kopiju štamparskih grešaka u knjizi koju je upravo kupljena, pratiti sve lokalne linkove rekurzivno i učiniti fajlove pogodnim za pregled van mreže. Koristiti slučajno čekanje do 5 sekundi između svakog preuzimanja fajla i upisati rezultate pristupa u fajl „myLog.log". Ako se javi greška, pokušati ponovo do najviše 7 puta, sa 14 sekundi pauze između svakog pokušaja. (Komanda mora biti u jednoj liniji.)
wget -t 7 -w 5 --waitretry=14 --random-wait -m -k -K -e robots=off http://www.oreilly.com/catalog/upt3/errata/ -o ./myLog.log
Prikupiti samo specifične linkove koji su poređani linija po linija u lokalnom fajlu "my_movies.txt". Koristiti slučajno čekanje od 0 do 33 sekunde između fajlova, i koristiti 512 kilobajta u sekundi za bandwidth throttling (propisani opseg prigušivanja). Kada se javi greška, pokušati ponovo do 22 puta sa 48 sekundi pauze između svakog pokušaja. Poslati korisnički agent (en. user agent) bez praćenja ili HTTP referrer na restriktivan sajt i ignorisati robot isključenja. Postaviti sve uhvaćene fajlove u lokalni direktorijum “movies” i prikupiti rezultate pristupa u lokalni fajl "my_movies.log". To je dobro za preuzimanje posebnih skupova fajlova, a da se ne zauzima mreža.
Umesto praznog referera i korisničkog agenta koristiti onaj stvarni, koji ne izaziva poruku “ERROR: 403 Forbidden” od strane restriktivnog sajta. Takođe je moguće kreirati .wgetrc fajl koji zadražava neke podrazumevane vrednosti.[1]
wget -t 22 --waitretry=48 --wait=33 --random-wait --referer="" --user-agent="" --limit-rate=512k -e robots=off -o ./my_movies.log -P./movies -i ./my_movies.txt
Da bi se došlo do praćenih sesija kolačićima (cookies):
# Koristiti wget da bi se preuzeo sadržaj od strane referera i kolačića. # 1.Uzeti bazični url i sačuvati njegove kolačiće u datoteku. # 2. Uzeti zaštićen sadržaj koristeći skladištene kolačiće. wget --cookies=on --keep-session-cookies --save-cookies=cookie.txt http://first_page wget --referer=http://first_page --cookies=on --load-cookies=cookie.txt --keep-session-cookies --save-cookies=cookie.txt http://second_page
Verna kopija i konvertovanje CGI-a, ASP-a I PHP-a i drugih za pretraživanje offline:
# Kopirajte vebsajt u statičnu kopiju za lokalno pretraživanje. # To znači da će svi linkovi biti promenjeni da bi ukazivali na lokalne fajlove. # Primetiti- html ekstenzija će konvertovati bilo koji CGI, ASP ili PHP generisan fajl u HTML (ili bilo šta drugo ne .html) wget --mirror -w 2 -p --html-extension --convert-links -P <dir> http://www.yourdomain.com
Autori i autorska prava
GNU Wget je napisao Hrvoje Nikšić, uz doprinos drugih ljudi, uključujući Dan Harkless-a, Ian Abbott-a, i Mauro Tortonessi-a. Značajni doprinosi su opisani u fajlu AUTORI, koji je uključen u distribuciji, dok su svi ostali dokumentovani u changelogs, also koji je takođe uključen uz program. Wget je trenutno održavan od strane Giuseppe-a Scrivano-a.[2]
Autorsko pravno na Wget pripada kompaniji Free Software Foundation, čija politika jeste da da zahteva zadatke autroskih prava za sve netrivijalne doprinose GNU softveru.[3]
Licenca
GNU Wget je distibuiran po pravilima GNU licenca, verzija 3 ili naredne verzije, sa posebnim izuzetkom (exception) koji dozvoljava distribuciju binarnih brojeva povezanih sa OpenSSL bibliotekom. Tekst tog izuzetka prati:
Dodatna dozvola po pravilima GNU GPL verzije 3, sekcije 7
Ako se modifikuje ovaj program, ili bilo koji obuhvaćeni rad, tako što se poveže ili kombinuje sa OpenSSL projektom iz OpenSSL biblioteke (ili modifikovane verzije te biblioteke), koja sadrži delove pokrivene uslovima od strane OpenSSL ili SSLeay licenci, Free Software Foundation odobrava dodatne dozvole za prenošenje rezultujućeg rada. Odgovarajući izvor (Source) za non-source formu takve kombinacije bi trebalo da sadrži izvorni kod (source code) za delove OpenSSL-a koji su korišćeni isto tako kao i taj obuhvaćeni rad.
Očekuje se da će uslov za izuzetak biti uklonjen, čim se Wget modifikuje sa GnuTLS bibliotekom (GnuTLS) takođe u link.
Dokumentacija Wget-a, u obliku Texinfo uputstva za korisnike (refernce manual), distribuirana od strane GNU licenca, verzija 1.2 ili naredne verzije. Man page koja je obično distribuirana na sistemima poput Unix-a, je automatski generisana iz delova Texinfo priručnika i podpada pod uslove iste licence.
Razvoj
Wget se razvio kao jedan otvoren način, obično je diskutovano na javnim mailing listama
[4], koje su praćene od strane kako korisnika, tako i programera, o mnogim odlukama koje se tiču dizajna. Izveštaji o bag-ovima i patch-ovima se prenose na istoj listi.
Doprinos izvorima
Najzastupljenija metoda za doprinos kodu Wget-a i dokumentaciju jeste kroz update-ovanje izvora u obliku tekstualnih zakrpa koji su generisane od sttrane diff uslužnog programa (utility). Zakrpe koji pokušavaju da se uključe u Wget, podnose se na mailing listu [4], gde ih pregledaju zaduženi za održavanje sistema. Zakrpe koje prođu ispitivanje tih zaduženih se instaliraju u izvore (sources). Instrukcije za kreiranje zakrpe, kao i uputsvta za stilove, su istaknute na wiki stranici projekta.[5]
Izvorni kod se takođe može pratiti preko udaljenog skladišta version control koje hostuje prerađenu istoriju počevši sa 1.5.3 izdanjem. Skladište koristi Bazaar.[6] Prethodno, koristio se Mercurial. Pre toga, bilo je hostovano na Subversion, a prvobitno preko CVS.
Izdanja
Kada je dovoljan broj funkcija ili ispravki bagova akumuliralo za vreme razvoja, Wget se predstavio publici preko GNU FTP sajta i njegovih kopija. Kako su ga pokretali isključivo volonteri, ne postoji spoljni pritisak za njegovo izdanje, kao ni prinđeno davanje zadnjih rokova za izdanje.
Izdanja su pobrojana kao verzije, u obliku major.minor[.revision], npr. Wget 1.11 ili Wget 1.8.2. Povećanje glavnog broja verzije (major) predstavlja velike i moguće nekompatibilne promene u ponašanju Wget-a, ili radikalnu promenu dizajna kodne osnove. Povećanje sporednog broja verzije (minor) označava novih funkcija i ispravki bagova. Nova revizija (revision) naznačava izdanje koje, u poređenju sa prethodnim revizijama, samo sadrži ispravke bagova. Revizija nula je izostavljena, što znači da Wget 1.11 je isto kao 1.11.0. Wget ne koristi odd-even release number convention popularizovana od stran Linuxa.
Popularne reference
Wget se pojavljuje u ostvarenju Columbia Pictures-a, 2010.godine, filmu The Social Network. Glavni lik, koji je nezvanično baziran na kosnivaču Fejsbuk-a, Mark Zuckerberg-u, koristi Wget kako bi prikupio fotografije studenata iz različitih direktorijuma stambenog objekta Univerziteta u Hardvardu .
Značajna izdanja
Sledeća izdanja predstavljaju značajne prekretnice u razvoju Wget-a. Funkcije koje su poređane pored svakog od izdanja su izmenjene radi sažetosti, i ne predstavljaju sveobuhvatne informacije o izdanju, koje su dostupne u fajlu NEWS koji je distribuirian sa Wget-om.[7]
- Geturl 1.0, izdat januara, 1996, bilo je prvo javno dostupno izadanje. Prva objava na engleskom jeziku može da se prati na grupi this Usenet news posting Архивирано на сајту Wayback Machine (25. јануар 2020), što se verovatno odnosi na Geturl 1.3.4 izdatog u junu.
- Wget 1.4.0, izdat novembra 1996, je prva verzija koja koristi ime Wget. Takođe, to je prvo izdanje koje je distribuirano pod uslovima GNU GPL, za razliku od Geturla koji je distibuiran u svrhu licence bez garancije, odnosno no-warranty licence.
- 1.4.3, izdat februara 1997, bio je prva verzija koja je realizovana kao deo GNU projekta, sa autorskim pravima pripisanim FSF-u.
- Wget 1.5.3, izdat septembra 1998, bio je prekretnica u popularnosti programa. Ova verzija je bila u paketu sa brojnim GNU/Linux bazičnim distribucijama, koje su predstavile program mnogo široj publici.
- Wget 1.6, izdat decembra 1999, sadržao je brojne ispravke bagova (za tada zastarelo) 1.5.3 izdanje, najviše zahvaljujući naporu Dan Harkless-a.
- Wget 1.7, izdat juna 2001, predstavio je SSL podršku, kolačiće i stalnu konekciju.
- Wget 1.8, izdat decembra 2001, dodao je bandwidth throttling, nove indikatore progresa, i obilazak hiperlink grafa.
- Wget 1.9, izdat u oktobru 2003, sadrži eksperimentalnu IPv6 support, , i mogućnost postavljanja (POST) podataka na HTTP servere.
- Wget 1.10, izdat juna 2005, predstavio je veliku podršku fajlova, odnosno large file support, IPv6 na dualnim familijama sistema, NTLM autorizaciju, i SSL poboljšanje. Mauro Tortonesi je glavni u održavanju sistema.
- Wget 1.11, izdat januara 2008, je prebačen u verziju 3 za FSF, i preliminarno je dodata podrška za
Content-Disposition
zaglavlje (sadržaj raspolaganja), koji obično koriste CGI skriptovi da bi naznačili ime fajla koji se preuzima. U HTTP autentifikacionom kodu napravljena su poboljšanja u vezi sigurnosti. Partnerstvo u projektu uzeo je i Micah Cowan.
- Wget 1.12, izdat septembra 2009, dodao je podršku za parsiranje URL-ova iz CSS sadržaja na web-u, i za Internationalized Resource Identifiers.
- Wget 1.13, izdat avgusta 2011, podržava HTTP/1.1, popravio je neke probleme prenosivosti, i koristi GnuTLS biblioteku za podrazumevanu sigurnosnu konekciju.[8]
GWget
GWget je slobodan Grafički korisnički interfejs za Wget. Razio ga je David Sedeño Fernández i do je GNOME projekta. GWget podržava sve osnovne funkcije kao i Wget, as kao i paralelna preuzimanja.[9]
Vidi još
- The GNU Project
- cURL
- NcFTP
- Veb indekser
- HTTrack
- lftp
Reference
- ^ Wget Trick to Download from Restrictive Sites
- ^ „WgetMaintainer”. 23. 4. 2010. Архивирано из оригинала 24. 07. 2011. г. Приступљено 20. 6. 2010.
- ^ „Why the FSF gets copyright assignments from contributors - GNU Project - Free Software Foundation (FSF)”. Gnu.org. Приступљено 8. 12. 2012.
- ^ а б „Gmane Loom”. News.gmane.org. Архивирано из оригинала 09. 01. 2013. г. Приступљено 8. 12. 2012.
- ^ „PatchGuidelines - The Wget Wgiki”. Wget.addictivecode.org. 22. 9. 2009. Приступљено 8. 12. 2012.
- ^ „RepositoryAccess”. 22. 5. 2010. Архивирано из оригинала 20. 06. 2010. г. Приступљено 20. 6. 2010.
- ^ „dotsrc.org :: 404”. Svn.dotsrc.org. 20. 3. 2005. Архивирано из оригинала 13. 03. 2007. г. Приступљено 8. 12. 2012.
- ^ „Wget NEWS file”. Архивирано из оригинала 07. 01. 2017. г. Приступљено 07. 06. 2013.
- ^ „GWget Home Page”. Архивирано из оригинала 16. 07. 2011. г. Приступљено 07. 06. 2013.