我遇到的问题与这个问题,问题在于,有一个特定的 URL,当在浏览器中调用时,将下载一个文件,但是当从命令行调用时wget
,将生成一个名为API.php?bla
(其中 bla 是字符串)的文件。在前面的问题中,给出了一些建议使用 wget 的 --referer 选项的答案。这对我不起作用,而且看起来过于复杂。
我想知道是否有更简单的解决方案:是否可以以某种方式从终端调用 URL,就像从浏览器调用它一样,以便它执行浏览器通常执行的任何操作以确保下载正确的文件?我们可以使用 xdg-open,但这也会不必要地打开浏览器窗口,这很丑陋。
答案1
当使用 wget 访问和使用交互式浏览器访问时,URL 可能会返回不同的内容,原因有很多。服务器可能会根据用户代理、引荐来源网址、cookie、JavaScript 的可用性以及可以使用 JavaScript 查询的许多属性来提供不同的内容......
模拟“重型”浏览器(支持 JS 等)行为的唯一通用解决方案是运行浏览器。更轻量级的解决方案可能会也可能不会起作用,具体取决于服务器所依赖的浏览器功能。您可以无头运行浏览器。看如何使用 wget 从托管站点下载?,使用curl 自动化网络请求?,如何在 Linux 上无头运行 Firefox(即不需要 libgtk-x11-2.0.so.0)?, …