Тестовое задание для acribia.ru
Необходимо по доменному имени, например google.com
, проверить наличие поддоменнов. Причем проверять параллельно, а
также иметь возможность задать глубину проверки.
В качестве списка поддоменов использовать 5000 самых популярных поддоменов
Должен быть фронтенд, который позволяет ввести домен, задать глубину проверки и видеть найденные хосты сразу после их нахождения бекендом.
- В качестве критерия подтверждения наличия поддомена выбрано наличие
A
записи. - Для обеспечения "параллельности" - корутины и
asyncio.as_completed
, - Для выполнения условия "видеть как только найдётся" - вебсокеты (первое знакомство!)
- Для фронтенда - vuejs, vuetify, vue-native-websocket
- Для некоторых доменов, например yandex.ru,
A
запись отдаётся для совершенно любого поддомена, что снижает информативность проверки до нуля. - Сложность проверки растёт с глубиной: для 1 глубины это 5000 проверок, для 2 глубины это 25005000 проверок. Такое количество объектов в памяти помещается с трудом, поэтому функции as_completed проверки скармливаются чанками по 1000 штук.