Làm thế nào để tải tập tin dropbox bằng lệnh wget?


72

Có vẻ như tôi chỉ có thể tải xuống các tệp dropbox bằng trình thám hiểm như chrome và firefox. Nếu tôi sử dụng wget để tải xuống, thì tôi sẽ nhận được một tệp có định dạng html. Tại sao?

Ví dụ: bạn có thể mở liên kết này

Bạn sẽ không nhận được nội dung của tập tin này, tại sao? Sau đây là một phần của test.txt để tải xuống, đây hoàn toàn không phải là nội dung của test.txt.

Vì vậy, có thể tải xuống các tệp Dropbox bằng cách sử dụng wgetchứ không phải explorer?

document.observe('script:loaded', function() {
SharingModel.init('test\x2etxt', Util.from_json('\x7b\x22item\x5fid\x22\x3a\x20\x22\x22\x2c\x20\x22secure\x5fhash\x22\x3a\x20\x22\x22\x2c\x20\x22subpath\x22\x3a\x20\x22\x22\x2c\x20\x22tkey\x22\x3a\x20\x22mx9eqve5l2ipgyk\x22\x7d'))
SharingModel.init_file()
$('emsnippet-9911dfc627e1d541').innerHTML = 'test\x2etxt'.em_snippet(50, 0.750).escapeHTML();
$('emsnippet-add7879f5d805012').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
$('emsnippet-981ac0639529f983').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
FilePreview.init_text('https\x3a\x2f\x2fdl\x2edropbox\x2ecom\x2fs\x2fmx9eqve5l2ipgyk\x2ftest\x2etxt', 0)                        });
                    } else if (window.jQuery) {
jQuery(function () {
SharingModel.init('test\x2etxt', Util.from_json('\x7b\x22item\x5fid\x22\x3a\x20\x22\x22\x2c\x20\x22secure\x5fhash\x22\x3a\x20\x22\x22\x2c\x20\x22subpath\x22\x3a\x20\x22\x22\x2c\x20\x22tkey\x22\x3a\x20\x22mx9eqve5l2ipgyk\x22\x7d'))
SharingModel.init_file()
$('emsnippet-9911dfc627e1d541').innerHTML = 'test\x2etxt'.em_snippet(50, 0.750).escapeHTML();
$('emsnippet-add7879f5d805012').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
$('emsnippet-981ac0639529f983').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
FilePreview.init_text('https\x3a\x2f\x2fdl\x2edropbox\x2ecom\x2fs\x2fmx9eqve5l2ipgyk\x2ftest\x2etxt', 0)                        });
                    } 

Tôi không thể lấy test.txt bằng lệnh

wget https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.tx


ls -l 
-rw-rw-r-- 1 mirror mirror  30K Sep  6 15:01 test.txt

Câu hỏi ngu ngốc: bạn đã đăng nhập vào DropBox khi bạn cố tải xuống bằng trình duyệt chưa?

1
Sử dụng wgettrên liên kết của bạn lấy ra test.txt(chứa 4 byte "kiểm tra") chỉ tốt về phía tôi. Có lẽ một cái gì đó trong bạn .wgetrcđang gây ra điều này?
jjlin

@jjlin Lệnh của bạn là gì? Của tôi được thêm ở trên
hugemeow

5
Tôi đã sử dụng wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Điều đó làm việc tốt với tôi, nhưng nếu bạn muốn buộc tải xuống, bạn có thể cân nhắc thử wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'thay thế (lưu ý ?dl=1tham số truy vấn).
jjlin

@jjlin vì vậy có thể cần một tập lệnh nếu tôi muốn tải xuống tệp từ dropbox :)
hugemeow

Câu trả lời:


21

Liên kết trong câu hỏi của bạn không phải là liên kết đến tệp, là liên kết đến trang Dropbox của tệp này.
Nếu bạn muốn sử dụng wgetđể tải xuống, bạn nên sao chép liên kết để tải xuống trực tiếp từ menu thả xuống khi nhấn nút tải xuống sang phải.

Trong trường hợp của tôi, điều đó đã làm việc tốt. Tuy nhiên, đôi khi các vấn đề trong việc tải xuống các liên kết từ bên ngoài trình duyệt liên quan đến các tham số khác ngoài chính liên kết đó. Một yếu tố phổ biến không tồn tại khi bạn chỉ cần sao chép liên kết là cookie trang web.

Hãy thử tiện ích FF tuyệt vời này để có được các wgetliên kết chính xác

Và ngoài ra, đặc biệt nếu chúng ta đang nói về một máy trạm đã biết và không phải là máy trạm thông thường, tất nhiên bạn có thể cài đặt ứng dụng khách Dropbox. Đây sẽ là cách dễ nhất, chỉ cần để hộp của bạn là một phần của cấu trúc tệp của bạn và loại bỏ nhu cầu tải xuống phức tạp.
Xem bài đăng trên Askubfox.com này và trang tải xuống Dropbox .


4
Cố gắng để có được liên kết trực tiếp trong trình duyệt bật lên một quảng cáo cho một tùy chọn nâng cấp. Tôi thấy câu trả lời khác ( superuser.com/a/486351/106977 ) liên quan ?dl=1, nhưng điều đó cũng không cho phép một người truy cập vào liên kết (có thể do việc ngăn chặn sử dụng của Box trừ khi bạn nâng cấp).
bgoodr

@amotzg có cách nào để tiếp tục tải xuống từ dropbox với cờ --continuekhông? Có vẻ như không làm việc với tôi. ( unix.stackexchange.com/questions/174850/ trộm )
nguyện

@PrayagUpd, đã tìm thấy stackoverflow.com/questions/18084677/ này .
amotzg

1
Tiện ích bổ sung này đã giúp với một liên kết dropbox được chia sẻ yêu cầu mật khẩu để tải xuống. Lưu ý, nhấp chuột phải vào nút "tải xuống", chọn cliget cung cấp cho bạn URL tới đầu ra? Dl = 0, đây là một tệp nhỏ hơn. Thay đổi điều đó thành? Dl = 1 sẽ đưa ra đường dẫn tải xuống chính xác.
JonTheNiceGuy

116

Chỉ cần thêm ?dl=1vào cuối liên kết! Ví dụ:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Điều đó sẽ cung cấp cho bạn một truy xuất tốt của tập tin trong câu hỏi mà không cần thêm bất cứ điều gì vào tập tin.

Một điều nữa! Nếu bạn muốn lưu tệp ở nơi khác, hãy sử dụng -Otùy chọn như thế này

wget -O /root/Desktop/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"

Và nếu bạn muốn có một chút GUI, bạn có thể sử dụng zenityđể đánh dấu vị trí nơi tệp sẽ được tải xuống!

Đây là một mã ví dụ:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"

Điều đó thật tuyệt vời, hoạt động tốt ...
slotishtype

Chỉ cần sử dụng đề xuất của bạn để có được một thư mục chia sẻ và nhận được một tệp zip tuyệt vời (bỏ lỡ tên). Tuyệt vời! Cảm ơn rất nhiều!!
Rafareino

1
Câu trả lời tốt hơn nhiều so với câu trả lời. Điều này đã giúp rất nhiều, cảm ơn.
Seiyria

3
Phương pháp này có còn hoạt động không? Sử dụng lệnh wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'tôi tiếp tục nhận được ERROR 400: Bad Request.
Paul Rougieux 7/11/2016

Bây giờ tôi nhận được 500 Internal Server Error, Dropbox là một crap thực sự.
Avio

15

Dropbox đã sửa đổi nó để wgetsẽ thực hiện đúng và lấy lại tệp thay vì xen kẽ.

Sử dụng "Chia sẻ liên kết" để truy xuất liên kết trực tiếp đến tệp.


Đây phải là câu trả lời chính xác, nó tầm thường với liên kết chia sẻ.
davidparks21

Đẹp! Tôi đã nhận được một wget: No matchđầu ra, đã được giải quyết bằng cách sử dụng liên kết được đặt trong các dấu ngoặc kép đơn (do có thể ?trong url?)
Matifou

3

Xem câu hỏi này và nghĩ rằng điều này có thể giúp ai đó cố gắng tải xuống nhiều tệp cùng một lúc.

Đây là một tập lệnh Windows CMD / Batch nhỏ mà bạn có thể sử dụng.
Nó có thể dễ dàng được điều chỉnh để hoạt động dưới vỏ Bash (Mac / Linux / etc).
Nó sử dụng CURL . WGET cũng nên làm việc với một số điều chỉnh nhỏ ..

1. Cài đặt Curl cho Windows.

2. Đặt các liên kết CHIA SẺ riêng lẻ trong một tệp văn bản (1 trên mỗi dòng).

3. Điều chỉnh tất cả (?) Tham số "? Dl = 0" trong tệp văn bản của bạn thành "? Dl = 1" và lưu.

4. Sao chép tập lệnh bên dưới vào một tệp có tên 'geturllist.cmd' (hoặc lựa chọn của bạn)

5. Mở một dấu nhắc CMD và thực thi tập lệnh CMD.

Các tệp đã tải xuống sẽ xuất hiện trong thư mục làm việc hiện tại mà bạn đã thực thi tập lệnh từ đó.

LƯU Ý:
Bạn phải có các LIÊN KẾT CHIA SẺ được định dạng chính xác rằng "Bất kỳ ai có liên kết" đều có thể mở. Tập lệnh này KHÔNG hoạt động với các liên kết hoặc chia sẻ được bảo vệ bằng mật khẩu dựa trên thông tin đăng nhập / email Dropbox.
GHI CHÚ:
Nếu tệp đơn hoặc nhóm tệp (được nén tự động) vượt quá một kích thước nhất định, nó sẽ không thành công với lỗi ("Tệp (zip) quá lớn. Vui lòng thêm nó vào Dropbox của bạn."). Trong trường hợp này, bạn phải làm như đã nói .. tập lệnh này sẽ không hoạt động vì liên kết chia sẻ không thể tải xuống trực tiếp.

Tệp văn bản mẫu:
("RandomShareChar character / Here" sẽ được thay thế bằng những gì nó nói trong liên kết chia sẻ)

 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1
 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1
 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1

geturllist.cmd:

@echo off
set count=0
setlocal ENABLEDELAYEDEXPANSION
IF [%1]==[] GOTO BLANK
SET PARAMETER=%1
SET _PARAMETER=%PARAMETER:~0,2%

IF [%1]==[/?] GOTO HELP
IF [%1]==[--help] GOTO HELP
IF %_PARAMETER%==-h GOTO HELP

IF EXIST %1 (

  for /f "delims=" %%u in (%1) do (

      set /a count=count+1
      curl -kL "%%u" -O -J

      REM For other share sites:
      REM (ZIP EXAMPLE) if no filename type header sent:
      REM > curl -kL "%%u" -o "!count!.zip"
      REM > echo "!count!.zip"
      REM Will download file(s) called 1.zip, 2.zip, etc.
      )
  ) ELSE (
GOTO BLANK
)
GOTO DONE

:HELP
ECHO.
ECHO    Usage:
ECHO.
ECHO    geturllist [path]\[filename]
ECHO.
ECHO.
ECHO    Required Parameters:
ECHO.
ECHO    [filename]  A text file with one url per line
ECHO    -h      Help
ECHO.
GOTO DONE

:BLANK
ECHO.
ECHO Error: no input file found

:HELPMSG
ECHO.
ECHO Try -h for Help

:DONE
ECHO.
ECHO Exiting.
ECHO.

Cách sử dụng ví dụ:

geturllist.cmd X:\somepath\dropbox.txt


1
Bỏ phiếu không có bình luận là đáng yêu. Cảm ơn. Làm tổn thương cảm xúc của bạn?
bshea

1
Không thể tin được tại sao mọi người đánh giá thấp câu trả lời này ffs, upvote.
Josyula Krishna

0

Bạn sẽ nhận được một cái gì đó có tên là "tập tin" hoặc một cái tên kỳ lạ ... Chỉ cần đổi tên tập tin đó thành bất cứ điều gì bạn muốn sẽ thực hiện thủ thuật. Thực tế tập tin tải xuống là tập tin bạn muốn chỉ với tên lạ và không có thuộc tính loại tập tin.


-2

Phương pháp dễ nhất và được bảo đảm nhất cho các loại tải xuống này là sử dụng các công cụ dành cho nhà phát triển của google chrome.

  • Nhấn F12 để mở công cụ dành cho nhà phát triển
  • Chuyển đến tab mạng
  • Nhấn vào liên kết tải xuống để bắt đầu tải xuống
  • Tìm sự kiện tải xuống trong các sự kiện mạng
  • Nhấp chuột phải vào dòng và chọn "Sao chép dưới dạng cURL (bash)" hoặc windows nếu bạn muốn

  • Các url sẽ trông như thế này:

    curl "http://yoururl.com/yourfile" -H "Pragma: no-cache" -H "Origin: http://yoururl.com" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: en-US;q=0.8,en;q=0.6,fr;q=0.4" -H "User-Agent: Mozilla/5.0 bla bla" -H "Content-Type: text/plain;charset=UTF-8" -H "Accept: */*" -H "Cache-Control: max-age=0" -H "Referer: http://yoururl.com/downloadpage" -H "Cookie: e07214fb60a1a; _ga=98987; " -H "Connection: keep-alive"
    
  • Thay thế curlbằngwget

  • Thay thế -H "some headers"bằng--header="some headers"
  • Dán nó vào cửa sổ bash của bạn và thêm -otham số. (Nếu bạn không thêm tham số này, đầu ra sẽ được in ra bàn điều khiển.
  • Nhấn enter và thưởng thức tải xuống của bạn.

OP yêu cầu sử dụng với wget.
twerdster

Bạn có thể dễ dàng chuyển đổi từ curl sang wget: stackoverflow.com/a/25044709/531524
Hüseyin Yağlı
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.