Windows 批处理:wget 下载 Nirsoft 工具 - 导致文件损坏

Windows Batch: wget to download Nirsoft tools - leads to corrupt files

当我制作批处理文件来更新 NirSoft 工具时,我在使用 wget.

时遇到了奇怪的经历

首先我下载了​​一个带有pad链接的文本文件:

wget http://www.nirsoft.net/pad/pad-links.txt --backups=20 --append-output=C:\Path\Update\LOG\Nirsoft\%Timestamp%_NirSoft.log

之后,我使用 fart-jspad-links.txt 文件中删除不需要的行。我还使用该程序将下载链接更改为 https://www.nirsoft.net/utils,并将文件扩展名更改为 .zip.

fart ".\pad-links.txt" "http://www.nirsoft.net/pad" "http://www.nirsoft.net/utils" | tee --append C:\Path\Update\LOG\Nirsoft\%Timestamp%_NirSoft.log

fart ".\pad-links.txt" ".xml" ".zip" | tee --append C:\Path\Update\LOG\Nirsoft\%Timestamp%_NirSoft.log

之后,为了下载程序,我使用了:

wget --timestamping --input-file=C:\Path\UtilSuit\NirLauncher\Download\pad-links.txt --append-output=C:\Path\Update\LOG\Nirsoft\%Timestamp%_NirSoft.log

查看日志文件我发现并不是所有的程序都存储在这个位置。例如 WirelessKeyView 存储在 https://www.nirsoft.net/toolsdownload/wirelesskeyview.zip.

尝试使用 wget 获取此文件会导致下载大小为 4kb 的损坏文件。与 cURLaria2 相同。当我用 MozillaIDM 下载它时,我可以毫无问题地获取文件。所以我尝试了 wget --auth-no-challengewget --header="Accept: text/html" --user-agent="Mozilla/5.0 …"

我也尝试了 cliget,它在使用 Mozilla 正常下载时生成的 wget/aria2/curl 行。

wget --header 'Host: www.nirsoft.net' --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' --header 'Accept-Language: de,en-US;q=0.7,en;q=0.3' --referer 'https://www.nirsoft.net/utils/wirelesskeyview.html' --header 'Upgrade-Insecure-Requests: 1' --header 'Sec-Fetch-Dest: document' --header 'Sec-Fetch-Mode: navigate' --header 'Sec-Fetch-Site: same-origin' --header 'Sec-Fetch-User: ?1' --header 'DNT: 1' --header 'Sec-GPC: 1' 'https://www.nirsoft.net/toolsdownload/wirelesskeyview.zip' --output-document 'wirelesskeyview.zip'

我用谷歌搜索并找到 powershell,(同样的错误),但无法批量重现工作答案,(我不熟悉 powershell 脚本)。

那么如何在批处理脚本中使用 wget/curlaria2 下载单个 wirelesskey.zip 文件?

我发现的解决方法是直接从 the pad Panel 下载它,但我想要 .zip-file,包括更新的 .chm-file,以及 64 位版本(如果可用)。

另外请注意,在我的防病毒工具中,nirsoft 站点免于扫描,因此这不是答案。

有什么解决办法吗?

啊啊,这个简单。如果您查看实际下载的页面,它称为“403.html”。那么,让我们打开它。首先让你印象深刻的是:

<title>Error 403: Missing HTTP referer in the HTTP request</title>

因此,服务器需要一个 Referer header。当然,让我们给它一个:

$ wget --referer foo <URL>

它会按预期正确下载 zip 文件。

现在,实际上,服务器不应该返回带有名为 403 的文件的 HTTP 200 响应。它确实应该返回 HTTP 403 响应。但你能做什么呢?到处都是坏服务器