如何通过curl或wget下载Google Drive网址

Dav*_*542 21 curl wget google-drive-api

有没有办法通过curl或wget下载可公开查看的Google云端硬盘网址?例如,能够执行以下操作:

curl -O myfile.xls https://drive.google.com/uc?export=download&id=1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl
Run Code Online (Sandbox Code Playgroud)

请注意,我希望在可公开查看的文件上执行此操作,而无需登录我的Google帐户(或让其他人登录其帐户等).

如果有帮助,我的cors标题是:

 "kind": "drive#file",
 "id": "1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl",
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 64

这个方法怎么样?当文件太大时,Google会返回下载文件的代码.您可以使用代码下载该文件.当使用curl下载这样大的文件时,您可以看到如下代码.

<a id="uc-download-link" class="goog-inline-block jfk-button jfk-button-action" href="/uc?export=download&amp;confirm=ABCD&amp;id=### file ID ###">download</a>
Run Code Online (Sandbox Code Playgroud)

查询confirm=ABCD对于下载文件很重要.此代码也包含在cookie中.在cookie中,您可以看到如下.

#HttpOnly_.drive.google.com TRUE    /uc TRUE    #####   download_warning_#####  ABCD
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"ABCD"是代码.为了从cookie中检索代码并下载文件,您可以使用以下脚本.

示例脚本:

#!/bin/bash
fileid="### file id ###"
filename="MyFile.csv"
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename}
Run Code Online (Sandbox Code Playgroud)

如果这对你没用,我很抱歉.

  • @aristav 我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的问题。对此我深表歉意。为了正确理解您的问题,您能否将其作为新问题发布并包含更多信息?这样可以帮助包括我在内的用户想到解决方案。当您能够配合解决您的问题时,我很高兴。 (2认同)

Mar*_*rst 16

您需要使用-L开关使curl跟随重定向,并且文件名的正确开关是-o.您还应引用该网址:

 curl -L -o myfile.xls "https://drive.google.com/uc?export=download&id=0B4fk8L6brI_eX1U5Ui1Lb1FpVG8"
Run Code Online (Sandbox Code Playgroud)


Amr*_*tfy 12

简单地

wget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILEID' -O DESTINEATION_FILENAME

来源


kun*_*r97 8

无需安装任何外部工具。

  1. 在谷歌驱动器上公开文件
  2. 在隐身模式下打开共享链接
  3. 点击下载按钮
  4. 从网络选项卡复制为 curl 下载请求
  5. 在服务器上粘贴复制的请求并附加输出(--output <FILENAME>)标志

第四步 第 5 步


Adi*_*hya 7

最简单,最好的方法(带有真实的Google云端硬盘文件示例)

  1. 使用安装gdownpip

    • 命令- pip install gdown
  2. 假设我希望从Google云端硬盘下载cnn_stories.tgz

    • 下载链接: https://drive.google.com/uc?export=download&id=0BwmD_VLjROrfTHk4NFg2SndKcjQ
  3. 请注意链接中的idURL参数0BwmD_VLjROrfTHk4NFg2SndKcjQ

  4. 而已!使用下载文件gdown

    • gdown --id 0BwmD_VLjROrfTHk4NFg2SndKcjQ --output cnn_stories.tgz


TLDR: gdown --id {gdrive_file_id} --output {file_name}


命令行Args:

--id : Google drive file ID

--output: Output File name


小智 6

我刚刚检查了@tanaike 的答案,它就像一个魅力。但 @Martin Broadhurst 提出并被 topicstarter 接受的解决方案却没有。

由于google显示病毒扫描警告,需要处理,需要soc脚本。

我想投票支持 @tanaike 的答案,但没有足够的声誉来做到这一点:)

另外,对于那些不知道如何获取 Google Drive 上文件的 ID 的人,我想分享这个非常简单的知识。

  1. 转到您的 gDrive
  2. 右键单击它并选择“共享选项”
  3. 为所有人选择公开共享,无需登录即可拥有链接
  4. 复制网址 https://drive.google.com/file/d/1FNUZiDDDDDDSSSSSSAAAAAdv42Qgzb6n8d/view?usp=sharing

  5. 将其粘贴到记事本中

  6. ID 是 URL 的一部分: 1FNUZiDDDDDDSSSSSSAAAAdv42Qgzb6n8d

享受!

  • 感谢您的评论。为了更方便地下载共享文件,我创建了这个。如果这对你有用,我很高兴。https://github.com/tanaikech/goodls (2认同)

小智 5

截至2019 年 11 月 18 日,为了使用 wget 从 Google Drive 下载文件,我使用了以下方法。对于这种方法,我们需要知道我们的文件大小是属于小猫还是大猫。我无法弄清楚区分小尺寸和大尺寸的确切数字,但我想它大约在 100 MB 左右。但是您始终可以使用为您的文件提到的两种方法中的任何一种,因为一种仅适用于小型文件,另一种适用于大型文件。

要遵循的基本步骤

步骤 1将您的文件共享为“任何有互联网的人都可以访问”。这可以通过右键单击文件 --> 单击共享选项 --> 单击高级单选按钮 --> 将访问权限更改为“在网络上公开”来完成

第 2 步保存并单击“完成” 第 3 步再次右键单击该文件,然后单击“获取可共享链接”。这会将链接复制到剪贴板。

步骤 4复制?id=之后的所有内容直到结束并将其保存到记事本文件。这是您的 FILE_ID,在下面使用。

步骤 4在执行上述常见步骤后,根据文件大小,按照以下提到的步骤进行操作。

小文件

步骤 1使用命令:

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O FILE_NAME_ALONG_WITH_SUFFIX
Run Code Online (Sandbox Code Playgroud)

FILE_ID 应从上述步骤中复制,FILE_NAME_ALONG_WITH_SUFFIX 是您希望将其保存在系统/服务器上的文件的名称。请注意,不要忘记添加后缀,如 (.zip , .txt 等)

步骤2运行命令。它可能会显示“不会应用 HSTS”作为错误,但没关系。您的文件将被复制。

大文件

步骤 1使用命令

wget --no-check-certificate --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILE_ID" -O FILE_NAME_ALONG_WITH_SUFFIX && rm -rf /tmp/cookies.txt
Run Code Online (Sandbox Code Playgroud)

更改 2 个位置的 FILE_ID 和 FILE_NAME_WITH_SUFFIX 一次。

步骤 2执行命令,它可能会给出与上述相同的错误,但没关系。

希望能帮助到你..