如何使用curl或wget下载需点击页面按钮的文件?
能用curl或wget实现下载,具体操作分两种情况:
先抓真实下载链接再下载
这类分享页面的下载按钮触发的是后台生成的临时链接,直接请求页面URL只能拿到HTML。你可以用浏览器开发者工具抓真实下载请求:
- 打开页面后按F12,切到「Network」标签,点击下载按钮,找到对应的请求(通常URL带/download后缀,请求方法可能是GET或POST)
- 记下这个请求的URL、请求头里的Cookie和Referer
然后用curl下载,示例命令:
# 先保存页面的Cookie到本地文件 curl -c cookies.txt "https://rec.ustc.edu.cn/share/031c0580-0366-11ed-bb15-47281881a56b" # 再用Cookie和Referer请求真实下载链接,保存为target.zip curl -L -b cookies.txt -e "https://rec.ustc.edu.cn/share/031c0580-0366-11ed-bb15-47281881a56b" -o target.zip "真实下载链接"
用wget的话,示例命令:
wget --load-cookies cookies.txt --referer="https://rec.ustc.edu.cn/share/031c0580-0366-11ed-bb15-47281881a56b" -O target.zip "真实下载链接"
自动处理会话和跳转(不用手动抓链接)
如果不想手动找下载链接,可以让wget模拟浏览器行为,自动处理会话:
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/114.0.0.0" \ --save-cookies cookies.txt --keep-session-cookies \ --referer="https://rec.ustc.edu.cn/share/031c0580-0366-11ed-bb15-47281881a56b" \ -O target.zip "https://rec.ustc.edu.cn/share/031c0580-0366-11ed-bb15-47281881a56b/download"
要是不确定/download接口是否正确,也可以先爬页面提取下载链接:
# 提取页面里的下载链接到文件 curl "https://rec.ustc.edu.cn/share/031c0580-0366-11ed-bb15-47281881a56b" | grep -o 'https://rec.ustc.edu.cn/[^"]*download[^"]*' > download_url.txt # 用提取的链接下载 wget --load-cookies cookies.txt -O target.zip $(cat download_url.txt)
核心注意事项
- Cookie必须带:这类系统靠Cookie验证会话,确保你是正常访问页面的用户
- Referer要设置:部分服务器会检查请求来源,防止盗链
- 如果下载请求是POST方法,得用
curl -X POST带上表单参数(参数从浏览器Network面板的Form Data里复制)
内容的提问来源于stack exchange,提问作者Sadaf Shafi
相关产品推荐
相关产品推荐

