所以我一直在尝试下载我上传的Google云端硬盘文件。很遗憾,Google云端硬盘错误地将文件标记为病毒,因此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
警告而失败。
有没有人有任何建议可以解决这个问题?
答案 0 :(得分:0)
根据我在https://medium.com/@acpanjan/download-google-drive-files-using-wget-3c2c025a8b99上找到的起点,这就是我能做的:
编辑 我注意到您说的是Windows,因此带有sed的命令在Windows中无法正常运行-我将在下面为Windows设置不使用sed的步骤
您当然首先要共享文件,然后从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
使用共享文件链接中的ID替换SHARE_LINK_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 =“并在此之后获取代码)。在下面的命令行中将其替换(以及放入所需的文件名和来自Google驱动器的共享链接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