如何通过程序下载Google Drive超大文件?wget方法遇异常
Google Drive大文件wget下载内容不符的解决办法
问题根源
Google Drive对大文件会强制触发病毒扫描确认流程,你原有的wget命令中,确认码的提取正则未适配这个场景,导致下载到的是病毒扫描提示页面而非实际文件。
修正后的wget命令
调整确认码提取逻辑,适配大文件的页面结构:
# 替换为你的文件ID和目标文件名 FILEID="你的文件ID" FILENAME="supplier-data.tar.gz" # 1. 获取确认页面并保存会话Cookie wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=$FILEID" -O /tmp/download_page.html # 2. 从页面中提取正确的确认码(适配大文件的病毒扫描确认) CONFIRM=$(grep -E 'confirm=([0-9A-Za-z_]+)' /tmp/download_page.html | cut -d'=' -f2 | cut -d'&' -f1) # 3. 携带确认码和Cookie下载文件 wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$CONFIRM&id=$FILEID" -O $FILENAME # 清理临时文件 rm -rf /tmp/cookies.txt /tmp/download_page.html
更可靠的curl替代方案
如果wget仍出现问题,curl的处理逻辑对复杂跳转更友好:
FILEID="你的文件ID" FILENAME="supplier-data.tar.gz" # 获取Cookie和确认页面 curl -c /tmp/cookies.txt -s -L "https://drive.google.com/uc?export=download&id=$FILEID" > /tmp/download_page.html # 提取确认码并下载 curl -L -b /tmp/cookies.txt "https://drive.google.com/uc?export=download&confirm=$(grep -o 'confirm=[^&]*' /tmp/download_page.html | sed 's/confirm=//')&id=$FILEID" -o $FILENAME # 清理临时文件 rm -rf /tmp/cookies.txt /tmp/download_page.html
关键注意点
- 确保目标文件已设置为所有人可访问权限
- 若下载仍失败,可添加
--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"参数模拟浏览器请求,绕过部分限制
内容的提问来源于stack exchange,提问作者siralbert
相关产品推荐
相关产品推荐

