首先,我只是不想改变 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