从使用重定向的服务器在 Linux 控制台中下载文件

从使用重定向的服务器在 Linux 控制台中下载文件

首先,我只是不想改变 curl 的输出文件的名称。

最好的例子是http://www.getsoloapp.com/download.
当你这样做时: curl http://www.getsoloapp.com/download你会下载 html。

当你这样做时(url 来自 Firefox 下载管理器,它是下载链接):
curl http://www.getsoloapp.com/server/do_download
你下载 html:
<h2>No Direct Access Allowed. Please go to the downlo...

所以这不是很明显,你知道如何提取 url 或只是下载文件吗?我尝试过 w3m、links、curl、wget 等浏览器。

答案1

这里的问题是,该网站使用通过脚本注入页面的 iframe 来混淆下载链接。该 iframe 似乎只是您链接的页面http://www.getsoloapp.com/server/do_download

我怀疑服务器本身正在解析“引荐来源”字段,如果引荐来源设置正确,它会返回下载内容,就好像您粘贴页面一样do_download,您得到的只是一个 HTML 页面,告诉您转到其他地方。这样做很可能是为了防止直接链接到下载,并确保您首先查看了他们的网站。

您需要做的是通过 curl 传递引荐来源页面:

curl -referrer http://www.getsoloapp.com/download http://www.getsoloapp.com/server/do_download

我相信这一点应该正确下载软件

答案2

该网站会进行 referer 检查。此操作有效(截至今天 2015-06-27):

curl --referer 'http://www.getsoloapp.com/download' 'http://www.getsoloapp.com/server/do_download' > solo_v1.2.2.zip

查看浏览器正在做什么通常很有用。例如,使用 Firefox,您可以在“工具”->“Web 开发人员”->“网络”菜单中将每个请求作为 curl 请求获取:

https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Copy_as_cURL

相关内容