Curl

為什麼瀏覽器會下載此連結,但 curl 不會下載?

  • September 3, 2020

我正在執行 Mac OS 10.11.6 El Capitan。我想以程式方式下載一個連結:

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg

如果我將此 URL 粘貼到任何瀏覽器(例如​​ Safari)中,下載將完美執行。

但是,如果我嘗試從命令行使用 下載相同的 URL curl,它不起作用——結果是一個空文件:

$ ls -lA
$ curl -O https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
 0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
$ ls -lA
total 0
-rw-r--r--  1 myname  staff  0 Nov  7 14:07 mysql-5.7.16-osx10.11-x86_64.dmg
$ 

當然我可以通過瀏覽器獲取文件,但是我想了解為什麼上面的curl命令不起作用。

**為什麼不能curl正確下載這個文件,**當它明顯存在於網站上並且可以通過圖形網路瀏覽器正確訪問和下載時?

網路伺服器端有一個重定向到以下 URL http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg:. 因為它是 CDN,所以確切的行為(無論您是否被重定向)可能取決於您的位置。

curl預設情況下不遵循重定向。要告訴它這樣做,請添加-L參數:

curl -L -O https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg

如果瀏覽器能夠下載文件,您可以檢查瀏覽器在做什麼。在Google瀏覽器上,您可以使用以下內容查看發生了什麼。

1)$$ View > Developer > Developer tools > Network Tab > Headers tab $$

  1. 點擊下載連結。

  2. 文件連結將出現在開發者工具選項卡上。

  3. 右鍵點擊文件並選擇複製 > 複製為 cURL。

現在您有了一個可以使用的 curl 連結。它可能會有多餘的參數,你可以修剪掉。

更多詳情: https ://lornajane.net/posts/2013/chrome-feature-copy-as-curl

引用自:https://unix.stackexchange.com/questions/321710