如何通过curl或wget下载Google Drive url

如何通过curl或wget下载Google Drive url,curl,google-drive-api,wget,Curl,Google Drive Api,Wget,有没有办法通过curl或wget下载可公开查看的谷歌硬盘url?例如,能够做以下事情: curl -O myfile.xls https://drive.google.com/uc?export=download&id=1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl 请注意,我希望在一个可公开查看的文件上执行此操作,而无需登录我的Google帐户(或让其他人登录他们的帐户等) 如果有帮助,我的cors标题如下: "kind": "drive#file", "id

有没有办法通过curl或wget下载可公开查看的谷歌硬盘url?例如,能够做以下事情:

curl -O myfile.xls https://drive.google.com/uc?export=download&id=1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl
请注意,我希望在一个可公开查看的文件上执行此操作,而无需登录我的Google帐户(或让其他人登录他们的帐户等)

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

 "kind": "drive#file",
 "id": "1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl",

您需要使用
-L
开关进行curl-follow重定向,文件名的正确开关是
-o
。您还应引用URL:

 curl -L -o myfile.xls "https://drive.google.com/uc?export=download&id=0B4fk8L6brI_eX1U5Ui1Lb1FpVG8"

这个方法怎么样?当文件如此大时,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>
#HttpOnly_.drive.google.com TRUE    /uc TRUE    #####   download_warning_#####  ABCD
在本例中,“ABCD”是代码。为了从cookie中检索代码并下载文件,可以使用以下脚本

示例脚本:
如果这对你没有用,我很抱歉。

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

因为谷歌显示了关于病毒扫描的警告,需要进行处理,所以需要soc脚本

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

另外,对于那些不知道如何在google drive上获取文件的名称和ID的人,我想和大家分享一下这一简单的知识

  • 复制URL

  • 把它贴到记事本上

  • ID是URL的一部分: 1NUZIDDDDSSSSSSAAADV42QGZB6N8D
  • 享受吧


    0B4fk8L6brI_eX1U5Ui1Lb1FpVG8是文件id。

    最简单、最好的方法(使用真实的谷歌硬盘文件示例)

  • 使用
    pip安装

    • 命令-
      pip安装gdown
  • 假设我想从谷歌硬盘下载

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

  • 就这样!使用
    gdown

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

  • TLDR:
    gdown--id{gdrive\u file\u id}--output{file\u name}


    命令行参数:

    --id:Google驱动器文件id

    --output:简单地输出文件名

    wget--无检查证书-r'https://docs.google.com/uc?export=download&id=FILEID'-O目标文件名


    自2019年11月18日起
    为了使用wget从Google Drive下载文件,我使用了以下方法。对于这种方法,我们需要知道我们的文件大小是在较小还是较大的cat下。我无法计算出区分大小的确切数字,但我想大约是100MB。但是,您始终可以对您的文件使用上述两种方法中的任何一种,因为一种只适用于小文件,另一种适用于大文件

    应遵循的基本步骤

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

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

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

    步骤4:在执行上述常见步骤后,根据文件大小执行以下步骤

    小文件

    步骤1使用命令:

    wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O FILE_NAME_ALONG_WITH_SUFFIX
    
    文件\u ID应从上述步骤复制,文件\u名称\u以及带有\u后缀的\u是您希望它保存在系统/服务器上的文件的名称。请注意,不要忘记添加后缀(.zip、.txt等)

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

    大文件

    步骤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
    
    更改两个位置的文件\u ID和一次带有\u后缀的文件\u名称\u

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


    希望对您有所帮助。

    无需安装任何外部工具

  • 在谷歌硬盘上公开文件
  • 以匿名模式打开共享链接
  • 点击下载按钮
  • 从“网络”选项卡复制为curl下载请求
  • 在服务器上粘贴复制的请求并附加输出(
    --output
    )标志

  • 要使wget成功地处理大文件,请使用请求下载确认的链接

    首先从具有ID的google drive链接获取信息。在您的示例中,ID为1Wb2NfKTQr_dLoFJH0GfM0cx-t4r07IVl

    然后获取要下载的文件名

    然后使用以下命令:“wget--加载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文件名和&rm-rf/tmp/cookies.txt”“” 并将FILEID替换为从链接获得的ID,将FILENAME变量替换为文件名


    对于任何参考,请耐心地查看此线程。您可以获得许多有用的方法。

    谢谢,这适用于小文件。但是,如果文件较大,使用上面的代码,我会得到这样的信息:MyFile.csv(711M)太大,Google无法扫描病毒。你还会喜欢吗
    wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O FILE_NAME_ALONG_WITH_SUFFIX
    
    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