当需要单击按钮时从 shell 下载文件

当需要单击按钮时从 shell 下载文件

我有一个文件链接,我想从 shell 下载它。不幸的是,URL 重定向到软件许可协议页面,需要单击“接受”按钮。当我在标准浏览器中时,这没有问题,但当我在 shell 中时,wget 只会下载 html 页面,而不是实际文件。当必须先接受条款时,有哪些选项可用于将文件下载到 shell?

具体来说,我正在查看以下 LSI 下载页面:

http://www.lsi.com/Pages/user/eula.aspx?file=http%3a%2f%2fwww.lsi.com%2fdownloads%2fPublic%2fSATA%2fSATA%2520Common%2520Files%2f3DM2_CLI-Linux_10.2.1_9.5.4.zip&Source=http%3a%2f%2fwww.lsi.com%2fdownloads

我确实查看了页面上的源代码并找到了以下位置的链接,但在使用 wget 时它也会拉出 eula 页面。

http://www.lsi.com/downloads/Public/SATA/SATA%20Common%20Files/3DM2_CLI-Linux_10.2.1_9.5.4.zip

到目前为止我想到的唯一选择是:

  1. 将其下载到另一台有浏览器的机器上,然后将其上传到只有 shell 的服务器。缓慢而痛苦。
  2. 安装类似 Lynx 的软件。我不确定 Lynx 是否能很好地处理下载,而且我不喜欢在生产服务器上安装额外的软件。
  3. 继续分析 EULA 代码以确定它是如何阻止我下载的(假设它是 javascript 而不是服务器端)。

有没有更简单的方法?

答案1

我通常只用于lynx此。花点时间熟悉导航键。下载过程很简单,允许您选择输出位置...

然而,在这种情况下,我尝试通过 lynx 运行下载,但没有运气。

因此,只需获取生成的文件名3DM2_CLI-Linux_10.2.1_9.5.4.zip,然后搜索替代来源将要允许您使用 wget。最简单的方法。

答案2

对于大多数网站,您可以:

  • 使用您电脑上的 Firefox 开始下载。
  • 下载时右键点击并复制下载网址。取消下载。
  • 将该 url 与 wget 一起使用。

这对 95% 使用类似重定向的网站都有效。

然而,该网站有一些奇怪的行为:

  • 我在我的电脑上尝试了一下,它立即从该 URL 下载 - 我刚刚在同一个无线网络上通过我的手机接受了他们的 EULA。
  • 从同一网络上的另一台 PC 使用 wget 下载工作正常。
  • 从远程服务器使用 wget 下载获得了 EULA 页面。

由于我都是从不同的设备执行上述操作的,所以不存在 cookie 或发布参数。它们唯一的共同点是它们位于同一个 NAT 后面。

因此,我只能得出这样的结论:他们一直在跟踪已接受 EULA 的 IP 地址,只向未接受 EULA 的 IP 地址显示 EULA 页面。要从 wget 下载它 - 要么在另一台计算机上从同一个公共 IP 地址接受 EULA,要么致电 LSI 并解雇他们的网页设计师!

答案3

黑客:这是针对 LSI 的特定解决方案。只需将 source=1 添加到 url 即可。因此链接

http://www.lsi.com/downloads/Public/SATA/SATA%20Common%20Files/3DM2_CLI-Linux_10.2.1_9.5.4.zip

将更改为:

http://www.lsi.com/downloads/Public/SATA/SATA%20Common%20Files/3DM2_CLI-Linux_10.2.1_9.5.4.zip?source=1

wget 命令如下:

获得http://www.lsi.com/downloads/Public/SATA/SATA%20Common%20Files/3DM2_CLI-Linux_10.2.1_9.5.4.zip?source=1-O 3DM2_CLI-Linux_10.2.1_9.5.4.zip

LSI 为什么!?

答案4

http://www.lsi.com/downloads/Public/SATA/SATA%20Common%20Files/3DM2_CLI-Linux_10.2.1_9.5.4.zip

该链接通过没有 EULA 的浏览器进入,但 wget 不起作用。。奇怪。你能把它下载到桌面,然后通过 sftp 将它发送到你的 linux 机器吗?

相关内容