Как использовать Python Sitemap генератор в OSINT целях
В расследованиях где присутствует работа с веб-сайтами может пригодится карта всего сайта, то-бишь ссылки на все существующие страницы; да ещё и в удобном для работы формате.
Есть несколько методов для решения этой задачи, но в этой статье мы поговорим о Python Sitemap Generator и напишем работающий кроулер.
Начало работы
Все команды, используемые в этой статье, написаны для линукса. Если у вас Windows, используйте Gitpod.
Прежде чем делать что-либо, давайте установим саму библиотеку:
pip install sitemap-generator
Затем, создающим test.py и запишем в него следующее:
import sys
import logging
from pysitemap import crawler
from pysitemap.parsers.lxml_parser import Parser
if __name__ == '__main__':
if '--iocp' in sys.argv:
from asyncio import events, windows_events
sys.argv.remove('--iocp')
logging.info('using iocp')
el = windows_events.ProactorEventLoop()
events.set_event_loop(el)
root_url = 'https://www.sector035.nl'
crawler(
root_url, out_file='sector-35_sitemap.xml',
http_request_options={"ssl": False}, parser=Parser
)Потом запускаем простым python test.py
Если вы хотите сканить другой веб-сайт, просто замените значение «root_url». Так же, не забудьте менять «out_file» перед каждым запуском что-бы избежать замены данных.
Очистка текста
В файле, который мы получили, присутствуют XML теги. Они нам не нужны. Поэтому сделаем всё красиво и уберём их следующей командой в терминал:
sed -e 's/<[^>]*>//g' sector-35_sitemap.xml >sector035_links.txt
Обратите внимание на команду sed. С помощью неё можно делать практически всё что угодно связанное с текстом.
Фильтр линков
Если вам нужны только конкретные файлы, такие как PDF, картинки или RSS; то мы можем отфильтровать их следующей командой:
sed -n '/rss$p' sector035_links.txt >rss_links.txt
Если вас интересует другой тип файлов, просто замените RSS на то, что вам нужно.
Скачивание файлов
Чтобы скачать файлы из списка ссылок (скажем для дальнейшего анализа), можно использовать команду curl:
xargs -n 1 curl -O < rss_links.txt