如何通过Terminal正确下载自动触发下载的.txt文件?
解决终端下载自动触发的.txt文件问题
我懂你碰到的这个麻烦了——有些链接明明在浏览器里一点就自动下载txt文件,但用普通的终端命令跑出来却只有一堆页面源码。这大概率是因为这个链接其实是个跳转入口,服务器会返回HTTP重定向(比如301/302状态码),或者需要模拟浏览器的请求头才能拿到真实的文件。下面给你两种最常用终端工具的正确操作方式:
使用curl命令
默认情况下curl不会自动跟随服务器的重定向,所以得加参数让它追踪跳转路径:
- 直接保存为文件原名称:
这里curl -L -O "你的文件链接"-L是让curl跟随所有重定向,-O是告诉curl用远程文件的原始名称保存到本地。 - 自定义保存文件名:
如果想给文件改个名字,用-o参数指定即可:curl -L -o "我要的文件.txt" "你的文件链接" - 模拟浏览器请求(可选):
有些服务器会检查请求的用户代理(User-Agent),只允许浏览器请求,这时候可以伪装成浏览器:curl -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" -O "你的文件链接"
使用wget命令
wget默认就会自动跟随重定向,操作起来更简单:
- 直接下载(保存为原文件名):
wget "你的文件链接" - 自定义保存文件名:
wget -O "自定义文件名.txt" "你的文件链接" - 模拟浏览器请求(可选):
同样如果需要伪装浏览器,加上--user-agent参数:wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "你的文件链接"
排查小技巧
如果上面的方法还是不行,可以先查看这个链接的HTTP响应头,找到真实的文件地址:
curl -I "你的文件链接"
看输出里的Location:字段,那就是服务器指向的真实文件下载地址,直接用这个地址重新执行下载命令就可以了。
内容的提问来源于stack exchange,提问作者little_mice




