Как пропустить выбранный URL-адрес при зеркалировании сайта с помощью wget

У меня следующая проблема. Мне нужно отразить защищенный паролем сайт. Вроде простая задача:

wget -m -k -K -E --cookies=on --keep-session-cookies --load-cookies=myCookies.txt http://mysite.com

в myCookies.txt я сохраняю правильный файл cookie сеанса. Это работает до тех пор, пока wget не наткнется на страницу выхода из системы — тогда сессия становится недействительной, и, по сути, дальнейшее зеркалирование бесполезно.

W попытался добавить опцию --reject, но она работает только с типами файлов - я могу заблокировать только загрузку файла html или загрузку файла swf, я не могу сказать

--reject http://mysite.com/*.php?type=Logout*

Есть идеи, как пропустить определенные URL-адреса в wget? Возможно, есть другой инструмент, который может выполнить эту работу (должен работать в MS Windows).


person Piotr Kochański    schedule 11.05.2012    source источник


Ответы (2)


Что, если вы сначала загрузите (или даже просто touch) страницу выхода, а затем

wget --no-clobber --your-original-arguments

Это должно пропустить страницу выхода, так как она уже загружена.

(Отказ от ответственности: я не пробовал это сам)

person Hans Lub    schedule 11.05.2012
comment
+1; Я сделал touch page.php?type=Logout, затем wget --no-clobber http://tkos.co.il/page.php?type=Logout и получил File 'page.php?type=Logout' already there; not retrieving. - person Eli Rosencruft; 11.05.2012
comment
С помощью HTTrack сделать то же самое довольно просто: httrack.exe mysite.com --mirror --cookies=1 - Выйти, предполагая, что файлы cookie находятся в файле cookie.txt. - person Piotr Kochański; 11.05.2012

Я также столкнулся с этой проблемой и позже решил ее следующим образом: «--reject-regex logout», подробнее: подсказки wget-dev

person mythkiven    schedule 26.06.2019
comment
Разве это не по-прежнему делает HTTP-запрос на страницу выхода, тем самым истекая срок действия файла cookie? Редактировать: Ах, это работает. Я использовал только --reject (вместо --reject-regex). Просто --reject не работает (он все еще делает HTTP-запрос), но --reject-regex работает. - person laggingreflex; 03.04.2021