我正在尝试从以下位置下载 zip 文件:https://download.sysinternals.com/files/ProcessExplorer.zip(没有curl也没有WGET)。我想通过 netcat 来做到这一点,我使用了这个命令:
echo -e "GET
https://download.sysinternals.com/files/ProcessExplorer.zip HTTP/1.1\r\nHost: download.sysinternals.com\r\n\r\n" | nc download.sysinternals.com 80 > q.zip
该文件写入硬盘上,但当我尝试打开它时,它已损坏。
答案1
因此,据我所知,netcat
不能使用 HTTPS,但在您的代码中您连接到端口 80,这意味着 HTTP,而不是 HTTPS。
在之后GET
您应该添加相对地址,而不是完整的地址。
像这样的事情会起作用:
echo -e "GET /files/ProcessExplorer.zip HTTP/1.1\r\nHost: download.sysinternals.com\r\n\r\n" | nc download.sysinternals.com 80 > q.temp
传输完成后它不会关闭,您必须手动关闭它。
此时该q.temp
文件还包含 HTTP 标头,您必须将其删除。您可以检查二进制内容开头的行号:
nl q.temp | less
在这种情况下,二进制内容从第 16 行开始,因此您可以使用以下命令删除标头:
tail -n +16 q.temp > q.zip
这就是你的 zip 文件!