วิธีการดาวน์โหลดไฟล์ดรอปบ็อกซ์โดยใช้คำสั่ง wget?


72

ดูเหมือนว่าฉันสามารถดาวน์โหลดไฟล์ดรอปบ็อกซ์โดยใช้ explorer เช่น chrome และ firefox เท่านั้น ถ้าฉันใช้ wget เพื่อดาวน์โหลดฉันจะได้ไฟล์ที่อยู่ในรูปแบบ html ทำไม?

ตัวอย่างเช่นคุณสามารถเปิดลิงค์นี้

คุณจะไม่ได้รับเนื้อหาของไฟล์นี้ทำไม? ต่อไปนี้เป็นส่วนหนึ่งของ test.txt เพื่อดาวน์โหลดนี่ไม่ใช่เนื้อหาของ test.txt เลย

ดังนั้นจึงเป็นไปได้ที่จะดาวน์โหลดไฟล์ Dropbox โดยใช้wgetแทนที่จะสำรวจ?

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)                        });
                    } 

ฉันไม่สามารถรับ test.txt พร้อมคำสั่ง

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


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

คำถามโง่ ๆ : คุณลงชื่อเข้าใช้ DropBox เมื่อคุณพยายามดาวน์โหลดโดยใช้เบราว์เซอร์หรือไม่?

1
ใช้wgetในลิงค์ของคุณดึงtest.txt(มี 4 bytes "test") เพียงแค่ปรับด้านข้างของฉัน อาจมีบางสิ่งในตัวคุณ.wgetrcก่อให้เกิดสิ่งนี้?
jjlin

@jjlin คำสั่งของคุณคืออะไร? ของฉันถูกเพิ่มด้านบน
hugemeow

5
wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txtผมใช้ ใช้งานได้ดีสำหรับฉัน แต่ถ้าคุณต้องการบังคับให้ดาวน์โหลดคุณอาจลองทำwget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'แทน (สังเกต?dl=1พารามิเตอร์การสืบค้น)
jjlin

@jjlin ดังนั้นบางทีสคริปต์เป็นสิ่งจำเป็นถ้าฉันต้องการดาวน์โหลดไฟล์จาก Dropbox :)
hugemeow

คำตอบ:


21

ลิงก์ในคำถามของคุณไม่ใช่ลิงค์ไปยังไฟล์เป็นลิงค์ไปยังหน้า Dropbox ของไฟล์นี้
หากคุณต้องการใช้wgetเพื่อดาวน์โหลดคุณควรคัดลอกลิงก์เพื่อดาวน์โหลดโดยตรงจากเมนูที่ลดลงเมื่อกดปุ่มดาวน์โหลดไปทางขวา

ในกรณีของฉันทำงานได้ดี อย่างไรก็ตามบางครั้งปัญหาในการดาวน์โหลดลิงค์จากภายนอกเบราว์เซอร์เกี่ยวข้องกับพารามิเตอร์อื่นนอกเหนือจากตัวลิงก์เอง องค์ประกอบทั่วไปที่ไม่มีอยู่เมื่อคุณคัดลอกลิงก์คือคุกกี้ของไซต์

ลองใช้FF add-on อันยอดเยี่ยมนี้เพื่อรับwgetลิงก์ที่ถูกต้อง

และโดยเฉพาะอย่างยิ่งถ้าเรากำลังพูดถึงเวิร์กสเตชันที่รู้จักและไม่เป็นทางการคุณสามารถติดตั้งไคลเอนต์ Dropbox ได้ นี่จะเป็นวิธีที่ง่ายที่สุดเพียงให้กล่องของคุณเป็นส่วนหนึ่งของโครงสร้างไฟล์ของคุณและกำจัดความต้องการในการดาวน์โหลดที่ซับซ้อน
ดูโพสต์ askubuntu.comนี้และหน้าดาวน์โหลดDropbox


4
พยายามที่จะรับลิงค์โดยตรงในเบราว์เซอร์จะปรากฏขึ้นโฆษณาสำหรับตัวเลือกการอัพเกรด ฉันเห็นคำตอบอื่น ๆ ( superuser.com/a/486351/106977 ) ที่เกี่ยวข้อง?dl=1แต่นั่นไม่อนุญาตให้ไปที่ลิงค์ใดลิงก์หนึ่ง (อาจเป็นเพราะการป้องกันการใช้ Box เว้นแต่คุณจะอัพเกรด)
bgoodr

@amotzg มีวิธีดำเนินการดาวน์โหลดต่อจาก dropbox ด้วยค่าสถานะ--continueหรือไม่ ดูเหมือนว่าจะไม่ทำงานสำหรับฉัน ( unix.stackexchange.com/questions/174850/… )
prayagupd

@PrayagUpd พบstackoverflow.com/questions/18084677/นี้
amotzg

1
ส่วนเสริมนี้ช่วยในการเชื่อมโยงดรอปบ็อกซ์ที่ใช้ร่วมกันซึ่งต้องการรหัสผ่านเพื่อดาวน์โหลด หมายเหตุคลิกขวาที่ปุ่ม "ดาวน์โหลด" การเลือก cliget จะให้ URL ไปยังเอาต์พุต? dl = 0 ซึ่งเป็นไฟล์ที่เล็กกว่า การเปลี่ยนเป็น? dl = 1 จะให้เส้นทางการดาวน์โหลดที่ถูกต้อง
JonTheNiceGuy

116

เพียงเพิ่ม?dl=1ที่ส่วนท้ายของลิงก์! ตัวอย่างเช่น:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

ที่ควรให้คุณได้รับไฟล์ที่เป็นปัญหาโดยไม่ต้องเพิ่มอะไรลงในไฟล์

อีกหนึ่งสิ่ง! หากคุณต้องการบันทึกไฟล์ไว้ที่อื่นให้ใช้-Oตัวเลือกเช่นนี้

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

และถ้าคุณต้องการ GUI เล็กน้อยคุณสามารถใช้zenityเพื่อทำเครื่องหมายตำแหน่งที่ไฟล์จะถูกดาวน์โหลด!

นี่คือตัวอย่างรหัส:

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

นั่นมันยอดเยี่ยมมากผลงานออกมาจากกล่อง ...
slotishtype

เพียงใช้คำแนะนำของคุณเพื่อรับโฟลเดอร์ที่ใช้ร่วมกันและได้รับไฟล์ซิปที่น่าทึ่ง (พลาดชื่อ) น่ากลัว! ขอบคุณมาก!!
Rafareino

1
คำตอบที่ดีกว่าคำตอบที่ได้รับการยอมรับ สิ่งนี้ช่วยได้มากขอบคุณ
Seiyria

3
วิธีนี้ยังใช้งานได้หรือไม่ การใช้คำสั่งฉันให้ได้รับwget 'https://www.dropbox.com/sh/my_folder_url?dl=1' ERROR 400: Bad Request
Paul Rougieux

ตอนนี้ฉันเข้าใจ500 Internal Server Errorแล้ว Dropbox เป็นเรื่องจริง
Avio

15

Dropbox ได้ทำการแก้ไขเพื่อที่wgetจะทำสิ่งที่ถูกต้องและดึงไฟล์แทนสิ่งของคั่นระหว่างหน้า

ใช้ "Share Link" เพื่อดึงลิงค์โดยตรงไปยังไฟล์


นี่ควรเป็นคำตอบที่ถูกต้องมันเป็นเรื่องเล็กน้อยกับลิงก์แชร์
davidparks21

ดี! ฉันได้wget: No matchผลลัพธ์ซึ่งแก้ไขได้โดยใช้ลิงค์ที่อยู่ในเครื่องหมายคำพูดเดี่ยว (เนื่องจาก?อาจจะอยู่ใน url?)
Matifou

3

เห็นคำถามนี้และคิดว่าสิ่งนี้อาจช่วยให้ใครบางคนพยายามดาวน์โหลดไฟล์หลายไฟล์พร้อมกัน

นี่เป็นสคริปต์ Windows CMD / Batch ขนาดเล็กที่คุณสามารถใช้ได้
สามารถปรับให้ทำงานภายใต้ Bash shell ได้อย่างง่ายดาย (Mac / Linux / ฯลฯ )
มันใช้CURL WGET ควรทำงานร่วมกับการปรับเปลี่ยนเล็กน้อยบางอย่าง ..

1. ติดตั้งCurlสำหรับ Windows

2. ใส่ลิงก์ SHARED แต่ละรายการในไฟล์ข้อความ (1 ต่อบรรทัด)

3. ปรับพารามิเตอร์ "? dl = 0" ทั้งหมดในไฟล์ข้อความของคุณเป็น "? dl = 1" และบันทึก

4. คัดลอกสคริปต์ด้านล่างไปยังไฟล์ชื่อ 'geturllist.cmd' (หรือที่คุณเลือก)

5. เปิดพรอมต์ CMD และเรียกใช้งานสคริปต์ CMD

ไฟล์ที่ดาวน์โหลดจะปรากฏในไดเรกทอรีการทำงานปัจจุบันที่คุณเรียกใช้สคริปต์จาก

หมายเหตุ:
คุณต้องมีการจัดรูปแบบลิงก์ที่ใช้ร่วมกันอย่างเหมาะสมว่า "ใครก็ตามที่มีลิงก์" สามารถเปิดได้ สคริปต์นี้ใช้ไม่ได้กับลิงค์หรือรหัสผ่านที่มีการป้องกันด้วยรหัสผ่านโดยอิงตามการเข้าสู่ระบบ Dropbox / อีเมล
หมายเหตุ:
หากไฟล์เดียวหรือกลุ่มไฟล์ (ซิปอัตโนมัติ) มีขนาดเกินขนาดที่กำหนดไฟล์นั้นจะล้มเหลวพร้อมข้อผิดพลาด ("ไฟล์ (zip) มีขนาดใหญ่เกินไปโปรดเพิ่มลงใน Dropbox ของคุณ") ในกรณีนี้คุณต้องทำตามที่ระบุไว้ .. สคริปต์นี้ใช้งานไม่ได้เนื่องจากลิงก์แชร์ไม่สามารถดาวน์โหลดได้โดยตรง

ตัวอย่างไฟล์ข้อความ:
("RandomShareCharacters / Here" จะถูกแทนที่ด้วยสิ่งที่ระบุไว้ในลิงก์แชร์)

 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.

ตัวอย่างการใช้งาน:

geturllist.cmd X:\somepath\dropbox.txt


1
โหวตน้อยไม่มีความเห็นน่ารัก ขอบคุณ ทำร้ายความรู้สึกของคุณ?
bshea

1
ไม่น่าเชื่อว่าทำไมคนลงคะแนนคำตอบนี้ขึ้นมา
Josyula Krishna

0

คุณจะได้อะไรบางอย่างที่ชื่อ "ไฟล์" หรือชื่อแปลก ๆ ... เพียงแค่เปลี่ยนชื่อไฟล์เป็นสิ่งที่คุณต้องการจะทำเคล็ดลับ ไฟล์ที่ดาวน์โหลดจริงเป็นไฟล์ที่คุณต้องการด้วยชื่อแปลก ๆ และไม่มีแอตทริบิวต์ประเภทไฟล์


-2

วิธีที่ง่ายและรับประกันมากที่สุดสำหรับการดาวน์โหลดประเภทนี้คือการใช้เครื่องมือสำหรับนักพัฒนาของ Google chrome

  • กด F12 เพื่อเปิดเครื่องมือสำหรับนักพัฒนา
  • ไปที่แท็บเครือข่าย
  • กดลิงค์ดาวน์โหลดเพื่อเริ่มดาวน์โหลด
  • ค้นหาเหตุการณ์ดาวน์โหลดในกิจกรรมเครือข่าย
  • คลิกขวาที่บรรทัดแล้วเลือก "คัดลอกเป็น cURL (bash)" หรือ windows หากคุณต้องการ

  • URL จะมีลักษณะดังนี้:

    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"
    
  • แทนที่curlด้วยwget

  • แทนที่-H "some headers"ด้วย--header="some headers"
  • วางลงในหน้าต่าง bash ของคุณและเพิ่ม-oพารามิเตอร์ (หากคุณไม่ได้เพิ่มพารามิเตอร์นี้ผลลัพธ์จะถูกพิมพ์ไปยังคอนโซล
  • กด Enter และสนุกกับการดาวน์โหลดของคุณ

OP ร้องขอการใช้งานด้วย wget
twerdster

คุณสามารถแปลงจาก curl เป็น wget ได้อย่างง่ายดาย: stackoverflow.com/a/25044709/531524
HüseyinYağlı
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.