Перечисление является сложной задачей, если сайт представляет собой что-то кроме набора статических HTML-страниц. Как только вы попадаете на серверные скрипты любого типа, возвращаемая «страница» может сильно зависеть от состояния вашего сеанса. Очевидным примером могут быть страницы или ресурсы, доступные только после входа в систему. Из-за этого многие автоматизированные средства перечисления (обычно являющиеся частью программ аудита безопасности веб-приложений) ошибаются и пропускают большие части сайта. Моя точка зрения здесь заключается в том, что перечисление часто является чем-то большим, чем просто запуск инструмента.
Хорошей новостью является то, что довольно легко написать свой собственный перечислитель, который хорошо работает, учитывая немного знаний, которые вы можете получить в основном, просто покопавшись на сайте. Я написал нечто подобное, используя Mechanize , который легко отслеживает вашу историю, когда вы запрашиваете страницы. Так что довольно просто настроить Mechanize для настройки необходимого вам состояния на стороне сервера (а именно, войти в систему), а затем посетить каждую найденную ссылку. Просто запросите главную страницу или любые «список» страниц, которые вам нужны, и сохраните массив ссылок. Переберите этот список ссылок и, если ссылка отсутствует в истории, перейдите по этой ссылке и сохраните список ссылок на этой странице. Повторяйте, пока список ссылок не станет пустым.
Но, как я уже сказал, все зависит от того, что происходит на стороне сервера. Могут быть страницы, на которые вы не ссылаетесь или которые не доступны вам, и вы не сможете их найти.