Próbuję pobrać plik z sourceforge za pomocą wget, ale jak wszyscy wiemy, musimy kliknąć przycisk pobierania, a następnie poczekać, aż zostanie automatycznie pobrany. jak pobierasz ten typ pliku za pomocą wget?
Próbuję pobrać to: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download
Ale zrobienie wgeta na tym linku url nie dałoby mi pliku, ponieważ plik jest automatycznie ładowany przez przeglądarkę.
wget --trust-server-names URL
Odpowiedzi:
Nie jestem pewien, która wersja systemu
wget
operacyjnego lub serwera proxy istnieje między tobą a sourceforge, ale pobrałemwget
plik, gdy usunąłem plik „/ download” i zostawiłem go przy rozszerzeniu.Nie chcę zalewać wpisu ani wklejać całej mojej sesji, ale dostałem 302, a następnie 200 kodów stanu przed rozpoczęciem przesyłania. Co się stanie, gdy spróbujesz
wget
?źródło
Sugerowałbym użycie
curl
do tego zamiastwget
. Można ją śledzić na przekierowanie za pomocą przełączników-L
,-J
oraz-O
.zmienić definicje
Zobacz stronę curl, aby uzyskać więcej informacji.
źródło
wget
może śledzić przekierowania, ale nie robi tego, chyba że zwiększysz--max-redirect
domyślną wartość, która ze względów bezpieczeństwa wynosi oczywiście 0.wget
Domyślna wersja 1.19.2 jest--max-redirect=20
wystarczająca do większości zastosowań. Nie jestem pewien, kiedy to się zmieniło… ani dlaczego było to konieczne ze względów bezpieczeństwa (potrzebne cytowanie!), Ale domyślam się, że obecnie preferowanym rozwiązaniem było śledzenie przekierowań, a zamiast tego wymaganie--trust-server-names
zachowania nazwy podanej przez cel przekierowania zamiast „ download ”lub„ index.html? blah = barg ”lub jakikolwiek inny podany adres URL.curl -JLO http://www.example.com/file.ext
W
wget
można użyć--content-disposition
opcji, która jest przydatna w przypadku niektórych programów CGI plikach pobierania nagłówków, że stosowanie „Content-Disposition”, aby opisać to, co nazwa pobranego pliku powinno być.W przykładzie:
W przypadku bardziej złożonych rozwiązań (takich jak wymagana autoryzacja) użyj pliku cookie (
--load-cookies file
), aby zasymulować sesję.źródło