Google Drive(谷歌开车???)是国外非常常用的网盘,有时候我们需要把Google Drive的文件下载到小鸡上,但是直接用wget后面跟下载链接是行不通的,这时候应该怎么办呢?
首先最简单粗暴的方法是用浏览器下载到本地再上传到小鸡,但是对于大文件这样流量和时间是很伤不起的;然后是非官方的Google Drive客户端,github上一大把,如果你常用的话是可以的,但是用来下载单个文件还是很麻烦;那么我们能不能直接用wget下载Google Drive的直链呢?
可以的!首先你要有一个Google Drive分享链接,我们知道Google Drive的分享链接是这样的格式:
https://docs.google.com/open?id=<ID>
知道了ID,就可以用wget来下载了,只需要转换一下链接格式:
$ wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=<ID>' -O <FILENAME>
把其中的<ID>和<FILENAME>替换成分享ID和文件名,就可以下载了。
不过有的时候呢,这样还是会报错,因为Google对于较大的文件,下载前是需要确认的,这个确认的过程我理解是会生成一个cookies,然后浏览器把cookies传递给下载器(或者浏览器内置),我们就可以愉快地下载了,但是通过wget直接下载并不生成cookies,所以就下不下来咯。那么生成cookies这一步可以用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=<ID>' -O- | sed -rn 's/.confirm=([0-9A-Za-z_]+)./\1\n/p')&id=<ID>" -O <FILENAME> && rm -rf /tmp/cookies.txt
经常用的话,可以写成function放到aliases里,参看这里。更多信息可以参考这个讨论。
另外还有一个获取链接的方法,我没有测试,理论上应该可行已经实测可用(截止2021年3月)。Firefox有个插件叫cliget,可以在扩展中心找到,这个东西的作用是把你正在下载的链接转换成curl wget或者aria2可用的链接,那么在插件启用的状态下,在浏览器下载文件(必须用浏览器内置的下载器),下载过程中用cliget获取命令,获取到以后可以暂停或者取消,然后用对应的工具在小鸡上下载即可,大文件建议用screen哦。
文章评论