我试图在脚本中从谷歌驱动器下载一个文件,我这样做有点麻烦。我要下载的文件在这里。
我在网上搜了很多,终于下载了其中一个。我得到了文件的uid,较小的文件(1.6MB)下载正常,但较大的文件(3.7GB)总是重定向到一个页面,询问我是否想在不进行病毒扫描的情况下继续下载。谁能帮我跳过那个屏幕?
下面是我如何让第一个文件工作-
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
当我对另一个文件进行同样操作时,
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
我得到以下输出-
我注意到在链接的第三行到最后一行,有一个&confirm=JwkK,这是一个随机的4个字符的字符串,但建议有一种方法添加到我的URL确认。我访问的一个链接建议&confirm=no_antivirus,但这不起作用。
我希望这里有人能帮忙!
从2022年开始,你可以使用这个解决方案:
https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t
“病毒扫描警告页面”的来源:
“下载无论如何”的表单张贴到相同的URL,但有额外的三个参数:
t
确认
uuid
如果你改变你原来的URL并添加其中一个:confirm=t,它将下载文件而没有警告页面。
把URL改成
https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t
例如:
$ 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
添加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
2018年5月
如果你想使用curl从谷歌驱动器下载文件,除了驱动器中的文件id,你还需要谷歌驱动器API的OAuth2 access_token。获取令牌涉及谷歌API框架的几个步骤。谷歌的注册步骤(目前)是免费的。
OAuth2 access_token可能允许所有类型的活动,因此要小心使用它。此外,令牌会在一小段时间后超时(1小时?),但如果有人捕获它,时间还不够短,无法防止滥用。
一旦你有一个access_token和fileid,这将工作:
AUTH="Authorization: Bearer the_access_token_goes_here"
FILEID="fileid_goes_here"
URL=https://www.googleapis.com/drive/v3/files/$FILEID?alt=media
curl --header "$AUTH" $URL >myfile.ext
参见:谷歌驱动器api—REST—下载文件