如何下载需要验证cookie的文件
Ianus Inferus
2021-07-06
最近在我的第二浏览器Vivaldi上遇到了下载文件中断无法继续的问题。
Whatever happened to HTTP resume?
IIRC, in Chromium-based browsers, resuming a download (on supported servers) only works if you pause the download. If it fails for whatever reason you can't resume like you can in Opera 12. I didn't test though.
但是在Chrome 91.0.4472.124上测试并没有发现这个问题。此外Firefox也没有这个问题。
不过为了更彻底地解决这个问题,我希望能找到一种方法,可以直接获取cookie并进行下载。因为有时候下载时不带cookie会被验证挡住。
结果偶然在网上发现一种使用curl进行下载的方法,无需任何带界面的插件和下载器。
How to get past the login page with Wget?
问题中虽然说的是wget,但curl更简单,只需要在浏览器的F12开发工具中,选择Network,然后在文件对应的请求上点右键,根据需要选择Copy as cURL (Windows)
或者Copy as cURL (POSIX)
。即可得到包含URL和header的curl命令,类似
curl 'https://download.mono-project.com/archive/6.12.0/windows-installer/mono-6.12.0.107-x64-0.msi' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' --compressed -H 'Referer: https://www.mono-project.com/' -H 'Connection: keep-alive' -H 'Cookie: MSCC=NR' -H 'Upgrade-Insecure-Requests: 1'
加上-O
表示使用服务器文件名命名,在WSL中运行这个命令,即可下载需要的文件。
如果需要断点续传,则再加上-C -
。
curl的其他选项可以参考文档。