Làm cách nào để tải xuống các tệp với wget nơi trang khiến bạn chờ tải xuống?


32

Tôi đang cố tải xuống một tệp từ sourceforge bằng wget, nhưng như tất cả chúng ta đều biết rằng chúng ta phải nhấp vào nút tải xuống và sau đó chờ đợi nó tự động tải xuống. Làm thế nào để bạn tải xuống loại tập tin này bằng cách sử dụng wget?

Tôi đang cố tải xuống cái này: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/doad

Nhưng thực hiện một wget trên liên kết url đó sẽ không cho tôi tệp vì tệp được tự động tải qua trình duyệt.


3
Truy cập trang đó trong trình duyệt web cũng sẽ liệt kê một Liên kết trực tiếp - bạn có thể sử dụng wget với điều đó không?
BriGuy

Nếu bạn đang tìm cách giữ nguyên tên thật của tệp (chứ không phải là "tải xuống") thì bạn chỉ cần gọi nó làwget --trust-server-names URL
Adam Katz

Câu trả lời:


5

Tôi không chắc chắn phiên bản wgethoặc HĐH và bất kỳ proxy nào tồn tại giữa bạn và sourceforge nhưng đã wgettải xuống tệp khi tôi xóa "/ download" và để nó ở phần mở rộng tệp.

Tôi không muốn làm ngập bài đăng hoặc quá khứ toàn bộ phiên của mình nhưng tôi đã nhận được 302 rồi 200 mã trạng thái trước khi chuyển khoản bắt đầu. Điều gì xảy ra khi bạn cố gắng wget?

Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found

[snipped for brevity]

HTTP request sent, awaiting response... 200 OK
Length: 13432789 (13M) [application/x-gzip]
Saving to: `download'

Cũng cần lưu ý: thỉnh thoảng trang tải xuống của YouTube là một danh sách các máy nhân bản và tập lệnh cung cấp cho bạn một trong số chúng khi một độ trễ nhất định đã trôi qua. SourceForge 10 năm trước đã làm điều này.
can-ned_food

47

Tôi sẽ đề nghị sử dụng curlđể làm điều này thay vì wget. Nó có thể làm theo các chuyển hướng sử dụng thiết bị chuyển mạch -L, -J-O .

curl -O -J -L http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download

định nghĩa chuyển đổi

-O/--remote-name
  Write output to a local file named like the remote file we get. 
  (Only the file part of the remote  file  is  used, the path is cut off.)

-L/--location
  (HTTP/HTTPS)  If  the  server  reports that the requested page has moved 
  to a different location (indicated with a Location: header and a 3XX 
  response code), this option will make curl redo the request on the new 
  place.  If  used together  with  -i/--include  or -I/--head, headers from 
  all requested pages will be shown. When authentication is used, curl only 
  sends its credentials to the initial host. If a redirect takes curl to a 
  different host, it  won't be  able  to  intercept  the  user+password. 
  See also --location-trusted on how to change this. You can limit the
  amount of redirects to follow by using the --max-redirs option.

-J/--remote-header-name
  (HTTP) This option tells the -O/--remote-name option to  use  the  
  server-specified  Content-Disposition  filename instead of extracting a 
  filename from the URL.

Xem trang người đàn ông cuộn tròn để biết thêm chi tiết.


2
Không cần sử dụng curl, wgetcó thể làm theo chuyển hướng, nhưng nó không làm như vậy trừ khi bạn tăng --max-redirecttừ mặc định, vì lý do bảo mật là tất nhiên 0.
Anthon

wgetMặc định của 1.19.2 là --max-redirect=20đủ tốt cho hầu hết các mục đích sử dụng. Tôi không chắc chắn điều đó đã thay đổi khi nào hoặc tại sao điều đó lại cần thiết cho bảo mật (cần dẫn nguồn!), Nhưng tôi đoán là giải pháp ưa thích hiện tại là tuân theo các chuyển hướng và thay vào đó yêu cầu --trust-server-namesgiữ nguyên tên do mục tiêu chuyển hướng cung cấp thay vì " tải xuống "hoặc" index.html? blah = mate "hoặc bất cứ điều gì URL được cung cấp sử dụng.
Adam Katz

Trong trường hợp nó giúp được bất cứ ai, đây là cách tôi nhớ các công tắc chính xác. Hãy suy nghĩ Jennifer Lopez. JLO. curl -JLO http://www.example.com/file.ext
Carl

15

Trong wget bạn có thể sử dụng --content-dispositiontùy chọn hữu ích cho một số chương trình CGI tải xuống tệp sử dụng tiêu đề "Xử lý nội dung" để mô tả tên của tệp đã tải xuống là gì.

Trong ví dụ:

wget --user-agent=Mozilla --content-disposition -E -c http://example.com/

Đối với các giải pháp phức tạp hơn (như ủy quyền bắt buộc), hãy sử dụng tệp cookie ( --load-cookies file) để mô phỏng phiên của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.