使用 sed 自动下载 ComboFix

使用 sed 自动下载 ComboFix

我正在尝试编写一个 shell 脚本来获取 ComboFix 所在的动态 URLBleepingComputer.com/download/combofix

但是,出于某种原因,如果下载不起作用,我似乎无法让我的正则表达式匹配“单击此处”的下载链接。我使用了正则表达式测试器,它说我匹配了链接,但我执行它时似乎无法让它工作,它会出现一个空结果。这是我的整个脚本:

 #!/bin/bash
 # Download latest ComboFix from BleepingComputer
 wget -O Listing.html "http://www.bleepingcomputer.com/download/combofix/" -nv
 downloadpage=$(sed -ne 's@^.*<a href="\(http://www[.]bleepingcomputer[.]com/download/combofix/dl/[0-9]\+/\)" class="goodurl">.*$@\1@p' Listing.html)
 echo "DL Page: $downloadpage"
 secondpage="$downloadpage"
 wget -O Download.html $secondpage -nv
 file=$(sed -ne 's@^.*<a href="\(http://download[.]bleepingcomputer[.]com/dl/[0-9A-Fa-f]\+/[0-9A-Fa-f]\+/windows/security/anti[-]virus/c/combofix/ComboFix[.]exe\)">.*$@\1@p' Download.html)
 echo "File: $file"
 wget -O "ComboFix.exe" "$file" -nv
 rm Listing.html
 rm Download.html
 mkdir Tools
 mv "ComboFix.exe" "Tools/ComboFix.exe" -f

前两次下载均成功完成,最终我得到: http://www.bleepingcomputer.com/download/combofix/dl/12/

但它无法匹配最终为我提供下载链接的 sed。

它应该匹配的代码是:

<a href="http://download.bleepingcomputer.com/dl/6c497ccbaff8226ec84c97dcdfc3ce9a/5058d931/windows/security/anti-virus/c/combofix/ComboFix.exe">click here</a>

解决方案:

对于任何感兴趣的人,最终有效的代码是:

#!/bin/bash
# Download latest ComboFix from BleepingComputer
wget -O Download.html "http://www.bleepingcomputer.com/download/combofix/12" -nv
file=$(sed -ne 's@^.*<a href=\x27\(http://download[.]bleepingcomputer[.]com/dl/[0-9A-Fa-f]\+/[0-9A-Fa-f]\+/windows/security/anti[-]virus/c/combofix/ComboFix[.]exe\)\x27>.*$@\1@p' Download.html)
echo "File URL: $file"
wget -OSN "ComboFix.exe" "$file" -nv

答案1

这很有趣:我刚刚去了http://www.bleepingcomputer.com/download/combofix/dl/12/并发现

<a href='http://download.bleepingcomputer.com/dl/587c6038..../..../ComboFix.exe'>点击此处</a>。

即 URL 由单引号分隔 () 而不是双引号 ()(这就是您的sed命令所寻找的)。

答案2

无需下载第一页,因为第二页是静态的。它始终是:

http://www.bleepingcomputer.com/download/combofix/dl/12/

强烈建议您使用-N在 wget 上标记以检查时间戳。这只会在 ComboFix 比您计算机上的版本更新时下载它。

另外,请确保您的脚本每天只运行一到两次。没有必要运行超过两次。

通过限制请求并使用-N,您应该避免被我们的脚本自动禁止。

谢谢

相关内容