如何使用 WGET 身份验证下载 PDF 文件并在下载的文件上设置 PDF 扩展名?

如何使用 WGET 身份验证下载 PDF 文件并在下载的文件上设置 PDF 扩展名?

我想用 wget 下载一个 pdf 文件

URL 如下:

example.com/pdfdl/?pdfnumberid=245

.pdf此 URL在参数末尾没有扩展名,因此只需登录网站即可下载。

我使用了这个命令:

wget --user=myuser --password=mypass example.com/pdfdl/?pdfnumberid=245

当我运行此代码时,它会下载一个没有扩展名且无法读取的文件

我该怎么做?

编辑:当我使用 Bash 时,它显示“HTTP 请求已发送,正在等待响应... 302 已找到”。无论是否将其放在.pdf文件末尾都没有区别。.pdf从 Bash 下载的每个损坏文件的大小都相同。我认为登录存在问题,因为它在 Bash 302 错误中显示重定向。

答案1

-O您需要使用选项设置输出文件的名称

wget --user=myuser --password=mypass -O pdf-245.pdf example.com/pdfdl/?pdfnumberid=245

答案2

更改命令以使用-O选项来指示输出文件的名称,如下所示:

wget --user=myuser --password=mypass -O 245.pdf example.com/pdfdl/?pdfnumberid=245

您的文件随后将被下载为245.pdf


但如果你从请求中获得 302 状态,则意味着这是一个“302 已找到”重定向。

“超文本传输​​协议 (HTTP) 302 Found 重定向状态响应代码表示请求的资源已暂时移动到 Location 标头给出的 URL。”

在这种情况下我建议使用卷曲而是像这样:

curl -Lk -u username:password example.com/pdfdl/?pdfnumberid=245 -o 245.pdf
  • 告诉-L命令跟随位置;意味着 302 和 301 重定向。
  • 强制-k使用不安全的 SSL 连接,这可能是从命令行访问 HTTPS 站点时所需要的;如果您想看看会发生什么,请随意删除它。
  • -u username:password是用户名和密码。
  • 源文件的 URL 如下。
  • 最后-o是输出文件。

相关内容