При создании веб-сканера вам необходимо спроектировать систему, которая собирает ссылки и добавляет их в очередь. Некоторые, если не большинство, из этих ссылок будут динамическими, которые выглядят по-разному, но не добавляют никакого значения, так как они специально созданы для обходчиков.
Пример:
Мы просим нашего сканера сканировать домен evil.com, введя начальный URL-адрес поиска.
Предположим, что мы изначально разрешаем ему сканировать первую страницу evil.com/index
Возвращенный HTML будет содержать несколько «уникальных» ссылок:
- evil.com / somePageOne
- evil.com / somePageTwo
- evil.com / somePageThree
Программа-обходчик добавит их в буфер необработанных URL-адресов.
При сканировании somePageOne сканер получает дополнительные URL-адреса:
- evil.com / someSubPageOne
- evil.com / someSubPageTwo
Они кажутся уникальными, и так они и есть. Они уникальны в том смысле, что возвращаемый контент отличается от предыдущих страниц и что URL-адрес является новым для сканера, однако, похоже, что это только потому, что разработчик сделал «ловушку для петель» или «черную дыру». *
Сканер добавит эту новую подстраницу, и на подстранице будет еще одна подстраница, которая также будет добавлена. Этот процесс может продолжаться бесконечно. Содержание каждой страницы уникально, но совершенно бесполезно (это случайно сгенерированный текст или текст, взятый из случайного источника). Наш сканер будет продолжать находить новые страницы, которые на самом деле нас не интересуют.
Эти ловушки петель очень сложно найти, и если у вашего сканера нет ничего, что могло бы помешать им, он застрянет в определенном домене на бесконечность.
Мой вопрос: какие методы можно использовать для обнаружения так называемых черных дыр?
Один из самых распространенных ответов, которые я слышал, - это введение ограничения на количество просматриваемых страниц. Однако я не могу понять, как это может быть надежным методом, если вы не знаете, какой сайт нужно сканировать. Легальный сайт, такой как Википедия, может содержать сотни тысяч страниц. Такое ограничение может привести к ложному срабатыванию для таких сайтов.