【问题标题】:Wget get past "infected with a virus" screen on Google DriveWget 通过 Google Drive 上的“感染病毒”屏幕
【发布时间】:2018-07-01 12:24:29
【问题描述】:

所以我一直在尝试让 wget 下载我上传的 Google Drive 文件。不幸的是,Google Drive 错误地将文件标记为病毒,因此 wget 无法获取直接下载链接。

我尝试过的事情:

  • 使用某人制作的gdrive.pl fie,但我在 Windows 上,/tmp/cookies.txt 不存在。

  • 正在做wget --no-check-certificate https://docs.google.com/uc?export=download&id=FILEID -O FILENAME,但上面写着400 Bad Request

  • 使用https://docs.google.com/uc?export=download&id=ID,但由于download infected file 警告而失败。

有人有解决这个问题的建议吗?

【问题讨论】:

  • 根据rest api可以使用参数acknowledgeAbuse=true
  • 文件是否共享?
  • 是的。它是共享的,我有 ID 和公共链接
  • 虽然这不是 wget 的示例,但这些信息对您有用吗? stackoverflow.com/questions/48133080/…
  • 错误的请求部分可能来自命令中解析的“&”,您可能需要将url括在引号中。

标签: google-drive-api wget


【解决方案1】:

这是我能做的,基于我在https://medium.com/@acpanjan/download-google-drive-files-using-wget-3c2c025a8b99 找到的起点:

编辑 我注意到你说的是 Windows,所以这个带有 sed 的命令不能在 Windows 中本地运行 - 我将在下面放置没有 sed 的 Windows 步骤

当然,您首先要共享文件并从 google 驱动器上的共享链接获取文件 ID。那么:

wget --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=SHARE_LINK_ID" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p' > /tmp/confirm && wget --load-cookies /tmp/cookies.txt --no-check-certificate "https://docs.google.com/uc?export=download&confirm="$(cat /tmp/confirm)"&id=SHARE_LINK_ID" -O YOUR_FILENAME && rm /tmp/cookies.txt /tmp/confirm

将 SHARE_LINK_ID 替换为您共享文件链接中的 ID。将 YOUR_FILENAME 替换为您想要的输出文件名。

这会尝试下载文件并获取有关文件中潜在病毒的警告消息的 html。它使用 cookie,因为您需要使用相同的会话 ID 进行后续下载和确认码。

然后它从该响应中获取生成的确认代码并将其写入临时文件。

然后我执行另一个 wget 将确认代码添加到查询字符串以下载文件,使用保存的 cookie 允许确认代码对保存的会话起作用。

这很可能可以在脚本中使用,传递共享链接 ID 的参数以使其更有用。

适用于 Windows(无 sed)

 wget --save-cookies %TMP%/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=SHARE_LINK_ID" -O %TMP%/confirm.txt

下载确认 html。

 notepad %TMP%/confirm.txt

在记事本中打开 %TMP%/confirm.txt 以获取确认代码字符串(CTRL+F 查找“confirm=”并在此之后立即获取代码)。在下面的命令行中替换它(连同输入你想要的文件名和来自谷歌驱动器的共享链接 ID)

 wget --load-cookies %TMP%/cookies.txt --no-check-certificate "https://docs.google.com/uc?export=download&confirm=CONFIRM_CODE&id=SHARE_LINK_ID" -O YOUR_FILENAME

删除临时文件:

 del %TMP%/cookies.txt %TMP%/confirm.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2013-08-05
    相关资源
    最近更新 更多