3

Я пытаюсь написать сценарий оболочки, чтобы получить динамический URL, по которому ComboFix находится по адресу BleepingComputer.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/

Но он не соответствует финальному седу, который даст мне ссылку для скачивания.

Код, которому он должен соответствовать:

<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

2 ответа2

2

Нет необходимости загружать первую страницу, поскольку вторая страница является статичной. Это всегда будет:

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

Также настоятельно рекомендуется использовать флаг -N на wget для проверки меток времени. ComboFix будет загружен только в том случае, если он более новый, чем на вашем компьютере.

Также убедитесь, что ваш скрипт выполняется только один или два раза в день. Там нет необходимости запускать его больше, чем это.

Ограничивая запросы и используя -N, вы должны избегать автоматического запрета нашими скриптами.

Спасибо

1

Это забавно: я просто зашел на http://www.bleepingcomputer.com/download/combofix/dl/12/ и нашел

<a href=' http://download.bleepingcomputer.com/dl/587c6038..../..../ComboFix.exe'> нажмите здесь </a>.

т. е. URL-адрес ограничивается одинарными кавычками ('), а не двойными кавычками (") (именно это ищет ваша команда sed).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .