1

当我制作一个批处理文件来更新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-js从文件中删除了我不需要的行pad-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 的损坏文件。与cURL和相同aria2。当我使用Mozilla, 或下载它时,IDM获取文件没有问题。所以我尝试了wget --auth-no-challengewget --header="Accept: text/html" --user-agent="Mozilla/5.0 …"

我也试过cligetwget/aria2/curl用Mozilla正常下载时产生的线条。

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 脚本)。

那么如何使用/或批处理脚本下载单个wirelesskey.zip文件呢?wgetcurlaria2

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

还有一点需要注意,在我的防病毒工具中,nirsoft 站点免于扫描,所以这不是答案。

有什么解决办法吗?

4

1 回答 1

1

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

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

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

$ wget --referer foo <URL>

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

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

于 2021-09-13T20:33:13.857 回答