从谷歌驱动器wget/curl大文件

Arj*_*jun 247 curl wget google-docs google-drive-api

我正在尝试从脚本中的谷歌驱动器下载文件,我在这方面遇到了一些麻烦.我正在尝试下载的文件在这里.

我在网上看了很多,我终于设法让其中一个下载了.我得到了文件的UID和较小的(1.6MB)下载,但较大的文件(3.7GB)总是重定向到一个页面,询问我是否要在没有病毒扫描的情况下继续下载.有人可以帮助我通过那个屏幕吗?

这是我如何使第一个文件工作 -

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

当我在另一个文件上运行相同的时候,

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
Run Code Online (Sandbox Code Playgroud)

我得到以下输出 - 在此输入图像描述

我注意到链接中的倒数第三行,&confirm=JwkK其中有一个随机的4个字符串,但建议有一种方法可以向我的URL添加确认.我访问过的其中一个链接建议&confirm=no_antivirus但是这不起作用.

我希望有人可以帮忙解决这个问题!

提前致谢.

tur*_*ula 175

我编写了一个Python代码段,可以从Google云端硬盘下载文件,并提供可共享的链接.它的工作原理截至2017年8月.

剪辑不使用gdrive,也不使用Google Drive API.它使用请求模块.

从Google云端硬盘下载大型文件时,单个GET请求是不够的.需要第二个,这个有一个名为confirm的额外URL参数,其值应该等于某个cookie的值.

import requests

def download_file_from_google_drive(id, destination):
    def get_confirm_token(response):
        for key, value in response.cookies.items():
            if key.startswith('download_warning'):
                return value

        return None

    def save_response_content(response, destination):
        CHUNK_SIZE = 32768

        with open(destination, "wb") as f:
            for chunk in response.iter_content(CHUNK_SIZE):
                if chunk: # filter out keep-alive new chunks
                    f.write(chunk)

    URL = "https://docs.google.com/uc?export=download"

    session = requests.Session()

    response = session.get(URL, params = { 'id' : id }, stream = True)
    token = get_confirm_token(response)

    if token:
        params = { 'id' : id, 'confirm' : token }
        response = session.get(URL, params = params, stream = True)

    save_response_content(response, destination)    


if __name__ == "__main__":
    import sys
    if len(sys.argv) is not 3:
        print("Usage: python google_drive.py drive_file_id destination_file_path")
    else:
        # TAKE ID FROM SHAREABLE LINK
        file_id = sys.argv[1]
        # DESTINATION FILE ON YOUR DISK
        destination = sys.argv[2]
        download_file_from_google_drive(file_id, destination)
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了!以下是drive_File_ID的提示:https // drive.google.com/file/d /"drive_File_ID"/ view - 介于https ~~ file/d /和/下载链接视图之间. (7认同)
  • @Manfredo你需要保存文件的文件名,例如`$ python snippet.py your_google_file_id/your/full/path/and/filename.xlsx`为我工作.如果不起作用,你有提供的任何外出?是否创建了任何文件? (2认同)

phi*_*phi 134

2018年6月 最简单的方式对我有用

file_id应该是这个样子0Bz8a_Dbh9QhbNU3SGlFaDg

您可以通过右键单击文件然后获取可共享链接来获取它.在开放访问文件上测试.我不确定它是否适用于目录.在Google Colab上测试过.

  • 这是我尝试过的六个解决方案中唯一有效的解决方案。它需要投票给第一个。我只需要将“共享链接”从 https://drive.google.com/open?id=XXXX 更改为 https://drive.google.com/uc?id=XXXX (12认同)
  • 自 2019 年 8 月起不起作用。错误:“权限被拒绝:https://drive.google.com/uc?id=0B7EVK8r0v71pWEZsZE9oNnFzTm8 也许您需要更改“知道链接的任何人”的权限?” 这是可公开下载的 CelebA 数据集,所以应该没问题。我通过单击“获取可共享链接”获得了下载链接,然后它说“链接共享已开启”和“知道该链接的任何人都可以查看它”。所以看起来权限已经被授予,但错误提示权限被拒绝。如果您想尝试一下,这里是主机站点:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html (10认同)
  • 这个工作于2018年7月!请记住要共享文件,如果您的链接为https://drive.google.com/open?id=FILE_ID,只需将“ open”替换为“ uc”,然后简单地将gdown https://drive.google.com/uc ?id = FILE_ID (7认同)
  • 只需从gdown https://drive.google.com/uc?export=download&id=your_file_id中删除`export = download&`,它就像魅力 (6认同)
  • 我们如何使用gdown从Gdrive下载文件夹? (4认同)
  • 似乎不适用于经常下载的非常大的文件:_最近有太多用户查看或下载了此文件。_。即使使用浏览器下载也可以。 (4认同)
  • 简单的 `gdown --id file_id` 就可以了,不需要完整的 url (4认同)
  • 只是提示,在 Ubuntu 18.04 上 `pip install gdown` 后,找不到 gdown 命令,我不得不搜索它,最后在 ~/.local/bin/gdown 中找到了它。使用“--id file_id”提供二进制文件的完整路径后,它工作正常。谢谢你! (3认同)
  • 截至 2020 年 6 月有效。 (2认同)
  • 对于 conda 安装,请使用 `conda install -c conda-forge gdown` (2认同)

tan*_*ius 70

您可以使用开源Linux/Unix命令行工具gdrive.

要安装它:

  1. 下载二进制文件.例如,选择适合您的架构的那个gdrive-linux-x64.

  2. 将其复制到您的路径.

    sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
    sudo chmod a+x /usr/local/bin/gdrive;
    
    Run Code Online (Sandbox Code Playgroud)

要使用它:

  1. 确定Google云端硬盘文件ID.为此,右键单击Google云端硬盘网站中的所需文件,然后选择"获取链接...".它将返回类似的东西https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H.获取后面的字符串?id=并将其复制到剪贴板.那是文件的ID.

  2. 下载文件.当然,请在以下命令中使用您的文件ID.

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    
    Run Code Online (Sandbox Code Playgroud)

首次使用时,该工具需要获取Google Drive API的访问权限.为此,它会显示一个您必须在浏览器中访问的链接,然后您将获得一个验证码以复制并粘贴回该工具.然后下载自动开始.没有进度指示器,但您可以在文件管理器或第二个终端中观察进度.

资料来源: Tobi对另一个答案的评论.

其他技巧:速率限制.gdrive以有限的最大速率下载(不要淹没网络...),您可以使用这样的命令(pvPipeViewer):

gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
  pv -br -L 90k | \
  cat > file.ext
Run Code Online (Sandbox Code Playgroud)

这将显示下载的数据量(-b)和下载速率(),并将该速率-r限制为90 kiB/s(-L 90k).

  • 无法获取验证码。收到错误“此应用程序暂时禁用 Google 登录 此应用程序尚未经过 Google 验证才能使用 Google 登录”。 (5认同)
  • 这里有同样的错误消息:“此应用尚未经过 Google 验证,无法使用 Google 登录。” (3认同)
  • @tanius 警告:https://github.com/prasmussen/gdrive 不再维护,开发人员还删除了二进制文件 (2认同)

小智 55

看看这个问题:使用Google Drive API从Google云端硬盘直接下载

基本上你必须创建一个公共目录并通过相对引用来访问你的文件

wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz
Run Code Online (Sandbox Code Playgroud)

警告:不推荐使用此功能.请参阅评论中的以下警告.

或者,您可以使用以下脚本:https://github.com/circulosmeos/gdown.pl

  • 警告:不推荐使用Google云端硬盘中的网络托管支持."从2015年8月31日开始,Google云端硬盘中面向用户和开发者的网络托管将被弃用.Google客户可以继续使用此功能,为期一年,直到2016年8月31日,当通过googledrive.com/host提供内容时/ doc id将停止使用." http://googleappsupdates.blogspot.com/2015/08/deprecating-web-hosting-support-in.html (12认同)
  • 不幸的是,自2018年起不再适用. (8认同)
  • 另一个好方法是使用linux命令行工具"gdrive"https://github.com/prasmussen/gdrive (5认同)
  • gdown.pl对我也很有用.快速查看脚本显示它没有使用该API,它创建了一个带有参数`export = download`的新URL,所以它应该在可预见的未来有利,除非谷歌改变了这个URL方案 (2认同)

Ben*_*ari 53

2020 年 9 月

  • 首先,从谷歌驱动器中提取您想要的文件的 ID:

    1. 在浏览器中,导航到 drive.google.com。

    2. 右键单击该文件,然后单击“获取可共享链接”

      右键单击获取可共享链接

    3. 然后从 URL 中提取文件的 ID:

      在此处输入图片说明

  • 接下来,gdown使用pip以下命令安装PyPI 模块:

    pip install gdown

  • 最后,使用gdown和预期的 ID下载文件:

    gdown --id <put-the-ID>


[注意]:

  • google-colab 中,您必须!bash命令之前使用。
    (即!gdown --id 1-1wAx7b-USG0eQwIBVwVDUl3K1_1ReCt
  • 您应该将目标文件的权限从“受限”更改为“任何拥有链接的人”。

  • 2020 年 12 月,对我有用!谢谢。 (2认同)
  • 2021年2月上班! (2认同)

lap*_*npt 48

ggID='put_googleID_here'  
ggURL='https://drive.google.com/uc?export=download'  
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*</span>' | sed 's/.*">//;s/<.a> .*//')"  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -Lb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" -o "${filename}"  
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?
用curl获取cookie文件和html代码.
管道html到grep和sed并搜索文件名.
使用awk从cookie文件中获取确认代码.
最后下载启用了cookie的文件,确认代码和文件名.

curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"
Run Code Online (Sandbox Code Playgroud)

如果你不需要文件名变量curl可以猜它
-L跟着重定向
-O Remote-name
-J Remote-header-name

curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" 
Run Code Online (Sandbox Code Playgroud)

要从URL中提取Google文件ID,您可以使用:

echo "gURL" | egrep -o '(\w|-){26,}'  
# match more than 26 word characters  
Run Code Online (Sandbox Code Playgroud)

要么

echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'  
# replace non-word characters with new line,   
# print only line with more than 26 word characters 
Run Code Online (Sandbox Code Playgroud)

  • 确认仍然在2018年中期工作. (3认同)
  • 这太棒了。我确实必须向两个curl 请求添加`--insecure` 选项才能使其工作。 (2认同)
  • Stiil在2019年1月工作,表现不错。 (2认同)

Ami*_*har 33

截至2018年3月更新.

我尝试了在其他答案中给出的各种技术,将我的文件(6 GB)直接从Google驱动器下载到我的AWS ec2实例,但它们都不起作用(可能是因为它们已经老了).

因此,对于其他人的信息,以下是我成功的方法:

  1. 右键单击要下载的文件,单击"共享",在"链接共享"部分下,选择"具有此链接的任何人都可以编辑".
  2. 复制链接.它应该采用以下格式:https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. 从链接复制FILEIDENTIFIER部分.
  4. 将以下脚本复制到文件中.它使用curl并处理cookie以自动下载文件.

    #!/bin/bash
    fileid="FILEIDENTIFIER"
    filename="FILENAME"
    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)
  5. 如上所示,将FILEIDENTIFIER粘贴到脚本中.记得保留双引号!

  6. 提供文件的名称以代替FILENAME.请记住保留双引号并在FILENAME中包含扩展名(例如,myfile.zip).
  7. 现在,通过在终端中运行此命令来保存文件并使文件可执行sudo chmod +x download-gdrive.sh.
  8. 使用`./download-gdrive.sh"运行脚本.

PS:这是上面给出的脚本的Github要点:https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424

  • 确认这对我有用,为清晰起见进行了一些编辑 (3认同)
  • 2019 年 1 月工作。我需要在最后一行的 `${filename}` 周围添加 `"` 引号。 (2认同)

tho*_*iha 24

这是一个快速的方法来做到这一点.

确保链接是共享的,它看起来像这样:

https://drive.google.com/open?id=FILEID&authuser=0

然后,复制该FILEID并像这样使用它

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

  • 与wget的-r标志一起使用时,它在2018年为我绕过了防病毒扫描程序。因此它是`wget --no-check-certificate -r'https://docs.google.com/uc?export=download&amp;id=FILE_ID'-O'filename'` (3认同)
  • 谢谢,在 09/2020 对我有用,FILEID 也可以从这样的 URL 模式中检索:`https://drive.google.com/file/d/FILEID/view?usp=sharing`。 (3认同)
  • 您好,感谢您的答复.如果您查看我共享的链接上的文件,您会看到在共享文件时,它们在链接中缺少"authuser = 0"标记.您的方法不适用于提供的文件!阿琼 (2认同)
  • 甚至没有试过公共访问,这个适用于仅链接共享文件atow.使用它是这样的:'wget'https://docs.google.com/uc?export = download&id = SETRET_ID'-O'filename.pdf'` (2认同)
  • 2021 年也为我工作 :) 谢谢 @ArtemPelenitsyn (2认同)
  • 这个方法对我不起作用,我被病毒扫描提示捕获,即使带有“-r”标志。我可以通过添加 `&amp;confirm=t` 来解决这个问题(例如 `wget --no-check-certificate 'https://docs.google.com/uc?export=download&amp;id=FILE_ID&amp;confirm=t' -r -A 'uc*' -e robots=off -nd` (2认同)

Ale*_*lex 23

谷歌驱动器的默认行为是扫描文件中的病毒,如果文件太大,它将提示用户并通知他无法扫描文件.

目前,我找到的唯一解决方法是与Web共享文件并创建Web资源.

从谷歌驱动器帮助页面引用:

使用Drive,您可以将Web资源(如HTML,CSS和Javascript文件)视为网站.

要托管带有云端硬盘的网页:

  1. 在drive.google.com上打开云端硬盘并选择一个文件.
  2. 单击页面顶部的" 共享"按钮.
  3. 单击共享框右下角的" 高级 ".
  4. 点击更改....
  5. 在Web上选择On - Public,然后单击Save.
  6. 在关闭共享框之前,请在"链接到共享"下方字段中的URL中复制文档ID.文档ID是一个由大写和小写字母组成的字符串,以及URL中斜杠之间的数字.
  7. 共享看起来像"www.googledrive.com/host/[doc id"的网址,其中[doc id]被您在步骤6中复制的文档ID替换.
    任何人都可以查看您的网页.

在此处找到:https://support.google.com/drive/answer/2881970?hl = zh-CN

例如,当您公开在Google云端硬盘上共享文件时,sharelink看起来像这样:

https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing
Run Code Online (Sandbox Code Playgroud)

然后复制文件ID并创建一个googledrive.com linke,如下所示:

https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
Run Code Online (Sandbox Code Playgroud)

  • 此功能已弃用,不再受支持 (9认同)
  • 这个在2015年末就行了.谢谢! (4认同)

Kos*_*Kos 14

您可以使用此解决方案:

https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t


“病毒扫描警告页面”来源:

在此输入图像描述

“仍然下载”表单 POST 到相同的 URL,但带有额外的三个参数:

  • t
  • confirm
  • uuid

如果您更改原始 URL 并添加其中之一:confirm=t,它将下载文件而不会出现警告页面。

所以只需将您的网址更改为

https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t 
Run Code Online (Sandbox Code Playgroud)

例如:

$ curl -L 'https://drive.google.com/uc?export=download&id=FILE_ID' > large_video.mp4
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100  2263    0  2263    0     0   5426      0 --:--:-- --:--:-- --:--:--  5453
Run Code Online (Sandbox Code Playgroud)

添加后confirm=t结果:

$ curl -L 'https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t' > large_video.mp4
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  128M  100  128M    0     0  10.2M      0  0:00:12  0:00:12 --:--:-- 10.9M
Run Code Online (Sandbox Code Playgroud)


小智 12

简单的方法:

(如果您只需要一次性下载)

  1. 转到包含下载链接的Google云端硬盘网页
  2. 打开浏览器控制台并转到"网络"选项卡
  3. 单击下载链接
  4. 等待文件开始下载,找到相应的请求(应该是列表中的最后一个),然后你可以取消下载
  5. 右键单击请求,然后单击"复制为cURL"(或类似)

你应该得到类似的东西:

curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed
Run Code Online (Sandbox Code Playgroud)

将它放在你的控制台中,添加> my-file-name.extension到最后(否则它会将文件写入你的控制台),然后按回车:)


小智 11

根据Roshan Sethia的回答

2018年五月

使用WGET

  1. 创建一个名为wgetgdrive.sh的shell脚本,如下所示:

    #!/bin/bash
    
    # Get files from Google Drive
    
    # $1 = file ID
    # $2 = file name
    
    URL="https://docs.google.com/uc?export=download&id=$1"
    
    wget --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 $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
    
    Run Code Online (Sandbox Code Playgroud)
  2. 授予执行脚本的正确权限

  3. 在终端中,运行:

    ./wgetgdrive.sh <file ID> <filename>
    
    Run Code Online (Sandbox Code Playgroud)

    例如:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    
    Run Code Online (Sandbox Code Playgroud)

  • 到 2023 年仍然有效的少数答案之一!此外,当您无法打开文件而只能预览文件时,您无法从 URL 获取文件 ID。只需复制共享链接,您可以在该链接中找到的哈希值就是文件 ID! (2认同)

jtu*_*uri 8

- 更新 -

要下载文件,请先youtube-dl从此处获取适用于python 的文件:

youtube-dl:https//rg3.github.io/youtube-dl/download.html

或安装pip

sudo python2.7 -m pip install --upgrade youtube_dl 
# or 
# sudo python3.6 -m pip install --upgrade youtube_dl
Run Code Online (Sandbox Code Playgroud)

更新:

我刚发现:

  1. 右键单击要从drive.google.com下载的文件

  2. 请点击 Get Sharable link

  3. 开启 Link sharing on

  4. 点击 Sharing settings

  5. 单击顶部下拉列表中的选项

  6. 点击更多

  7. 选择 [x] On - Anyone with a link

  8. 复制链接

https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing       
(This is not a real file address)
Run Code Online (Sandbox Code Playgroud)

在以下位置复制ID https://drive.google.com/file/d/

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
Run Code Online (Sandbox Code Playgroud)

将此粘贴到命令行中:

youtube-dl https://drive.google.com/open?id=
Run Code Online (Sandbox Code Playgroud)

将ID粘贴到后面 open?id=

youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
Run Code Online (Sandbox Code Playgroud)
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at  2321.53MiB/s (00:01)
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你


mhe*_*her 8

我一直在使用@Amit Chahar的 curl 片段,他在此线程中发布了一个很好的答案。我发现把它放在一个 bash 函数中而不是一个单独的.sh文件中很有用

function curl_gdrive {

    GDRIVE_FILE_ID=$1
    DEST_PATH=$2

    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${GDRIVE_FILE_ID}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${GDRIVE_FILE_ID}" -o ${DEST_PATH}
    rm -f cookie
}
Run Code Online (Sandbox Code Playgroud)

可以包含在例如 a 中~/.bashrc(当然,如果不是自动采购,则在采购之后)并按以下方式使用

   $ curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar
Run Code Online (Sandbox Code Playgroud)

  • 您在 rm 命令中既不需要 -f 也不需要 -r。如果你教人们总是“rm -rf”,他们最终可能会删除他们想要保留的东西...... (2认同)

dan*_*n95 8

上述答案在 2020 年 4 月已过时,因为 google drive 现在使用重定向到文件的实际位置。

自 2020 年 4 月起在 macOS 10.15.4 上为公共文档工作:

# this is used for drive directly downloads
function download-google(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  curl -L -b .tmp/$1cookies "$(egrep -o "https.+download" .tmp/$1intermezzo.html)" > $2;
}

# some files are shared using an indirect download
function download-google-2(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  code=$(egrep -o "confirm=(.+)&amp;id=" .tmp/$1intermezzo.html | cut -d"=" -f2 | cut -d"&" -f1)
  curl -L -b .tmp/$1cookies "https://drive.google.com/uc?export=download&confirm=$code&id=$1" > $2;
}

# used like this
download-google <id> <name of item.extension>
Run Code Online (Sandbox Code Playgroud)


Cod*_*lue 7

以上所有回答似乎都掩盖了答案的简单性,或者有一些未解释的细微差别。

如果文件是公开共享的,您只需知道文件 ID 即可生成直接下载链接。URL 的格式必须为“ https://drive.google.com/uc?id=[FILEID]&export=download ”,此格式自 2019 年 11 月 22 日起生效。这不需要接收者登录谷歌,但需要公开共享文件。

  1. 在浏览器中,导航到 drive.google.com。

  2. 右键单击该文件,然后单击“获取可共享链接”

右键单击获取可共享链接

  1. 打开一个新选项卡,选择地址栏,然后粘贴剪贴板的内容,这将是可共享的链接。您将看到 Google 查看器显示的文件。ID 是 URL 的“查看”组件之前的数字:

在此处输入图片说明

  1. 编辑 URL,使其采用以下格式,将“[FILEID]”替换为您共享文件的 ID:

    https://drive.google.com/uc?id=[FILEID]&export=download

  2. 那是你的直接下载链接。如果您在浏览器中单击它,文件现在将被“推送”到您的浏览器,打开下载对话框,允许您保存或打开文件。您也可以在下载脚本中使用此链接。

  3. 所以等效的 curl 命令是:

curl -L "https://drive.google.com/uc?id=AgOATNfjpovfFrft9QYa-P1IeF9e7GWcH&export=download" > phlat-1.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于大文件:收到错误“Google 云端硬盘无法扫描此文件是否有病毒”。&lt;文件名&gt; 太大,Google 无法扫描病毒。您还想下载这个文件吗?` (3认同)

mmj*_*mmj 6

截至2016年12月,没有答案提出对我有用的内容(来源):

curl -L https://drive.google.com/uc?id={FileID}
Run Code Online (Sandbox Code Playgroud)

如果Google Drive文件已与拥有该链接的人共享,并且{FileID}?id=共享URL中的后面的字符串.

虽然我没有查看大文件,但我相信它可能有用.

  • 仅适用于最大25MB的文件,较大的文件提供病毒扫描警告页面 (5认同)

O.r*_*rka 6

方法是这样的:

FILEID="unique_google_drive_id"
FILENAME="output_filename"

wget --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=${FILEID}' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=${FILEID}" -O ${FILENAME} && rm -rf /tmp/cookies.txt
Run Code Online (Sandbox Code Playgroud)


mat*_*l87 5

我在Google云端硬盘上遇到了同样的问题.

这是我使用Links 2解决问题的方法.

  1. 在PC上打开浏览器,在Google云端硬盘中导航到您的文件.为您的文件提供公共链接.

  2. 将公共链接复制到剪贴板(例如右键单击,复制链接地址)

  3. 打开一个终端.如果你要下载到另一台PC /服务器/机器,你应该在这一点上SSH

  4. 安装链接2(debian/ubuntu方法,使用你的发行版或操作系统等效)

    sudo apt-get install links2

  5. 将链接粘贴到您的终端并使用链接打开它,如下所示:

    links2 "paste url here"

  6. 使用箭头键导航到链接中的下载链接,然后按 Enter

  7. 选择文件名,它将下载您的文件


man*_*iac 5

最简单的方法是:

  1. 创建下载链接并复制fileID
  2. 使用WGET下载: wget --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=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt


aul*_*ron 5

使用youtube-dl

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

您还可以通过--get-url获取直接下载URL。


Ami*_*dli 5

从Google驱动器下载文件的简单方法,您也可以在colab上下载文件

pip install gdown

import gdown
Run Code Online (Sandbox Code Playgroud)

然后

url = 'https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c'
output = 'spam.txt'
gdown.download(url, output, quiet=False)
Run Code Online (Sandbox Code Playgroud)

要么

fileid='0B9P1L7Wd2vU3VUVlFnbTgtS2c'

gdown https://drive.google.com/uc?id=+fileid
Run Code Online (Sandbox Code Playgroud)

文件https://pypi.org/project/gdown/