Утилита для поиска и составления списка поддоменов
Jacelyn Worthy a édité cette page il y a 6 jours

original_data = [" ", "текст", "", " данные "] indexed_elements = list(enumerate(original_data)) filtered_pairs = [(i, v.strip()) for i, v in indexed_elements if v.strip()] preserved_indices, cleaned_data = zip(*filtered_pairs) print(preserved_indices) # (1, 3) print(cleaned_data) # ('текст', 'данные')

Инструмент enumerate генерирует необходимые пары.

Фильтрация v.strip() дает уверенность в исключении объектов без полезного содержимого .

Метод zip(*..) выполняет обратное преобразование в независимые коллекции.

Постоянно пополняйте свой словарь после очередного прогона, включая найденные метки. Анализируйте клиентские скрипты и перечни страниц с целью расширения базы дополнительными записями.

Программа Subfinder ориентирован на быстрое получение информации из публичных API. Выполнение subfinder -d example.com -all активирует все доступные модули. Чтобы увеличить производительность применяйте опцию --threads для настройки числа параллельных потоков, например, --threads 50.

Для внутреннего исследования получите криптографические данные нужного соединения с помощью openssl s_client -connect. Затем извлеките перечень альтернативных имен инструментом openssl x509 -noout -text и фильтрацией grep.

Исследование DNS-записей для обнаружения поддоменов Получите полный список начальных точек для атак, сделав запрос AXFR-трансфера зоны к DNS-серверу. Хотя большинство серверов запрещают такие запросы, делегированные третьестепенные зоны часто остаются уязвимыми.

Для очистки коллекции элементов в Python исключая нежелательные записи, состоящие исключительно из пробельных символов или полностью лишенные содержимого, примените метод strip() в комбинации с генератором списка. Выражение [line for line in original_collection if line.strip()] создает новый объект, куда входят только те позиции, для которых проверка strip() возвращает истину. Данный метод исключает все элементы, которые после удаления начальных и конечных пробелов, табов и схожих непечатаемых символов оказываются нулевой длины. Другой способ – применение filter() с аналогичной логической функцией. Запись list(filter(lambda x: x.strip(), your_data)) выполняет идентичную операцию, предлагая более функциональный стиль программирования. Для обработки массивов в JavaScript аналогичный результат получается с помощью цепочки методов: yourArray.filter(item => item.trim() !== ''). Функция trim() удаляет пробелы с краев, а сравнение с пустой строкой гарантирует отсеивание всех незначащих записей. При работе с данными, считанными из файла, нередко встречается случай, когда в конце каждой строки находится символ переноса . Предобработка посредством map(str.strip, file_lines) решит эту проблему глобально. Для ситуаций, когда нужно оставить строки, содержащие пробелы между символами, но отфильтровать те, что содержат только пробелы, проверка if x and not x.isspace() гарантирует более жесткую фильтрацию, убеждаясь, что элемент не пустой и не состоит полностью из пробелов. Определение пустой строки и строки с пробелами Строка считается пустой, если он содержит ноль символов. Длина такой строки - ноль. В программировании он обычно обозначается как две кавычки подряд: "". Элемент, наполненный только символами пробела, табуляции или новой строки, выглядит как пустой, но таковым не является. Его размер будет больше ноля. Например, конструкции вроде " " (пробел), "\t" (табуляция) или " " (символ новой строки) имеют скрытые символы. Для корректного распознавания таких элементов применяйте .strip(), которая обрезает все пробельные символы с начала и конца. После применения можно проверить размер: если полученное значение равно "", следовательно, исходная запись была либо полностью пустой, либо состоял лишь из невидимых знаков. Формирование тестовой коллекции для обработки Сформируйте коллекцию элементов, включающую разные случаи для проверки работы функции. Добавьте записи, содержащие только символы табуляции или скрытые символы в старте и финише. Добавьте строку, полностью состоящую из неразрывных пробелов (). Создайте позиции с нулевой длиной и включающие лишь знаки оформления. Вставьте валидные записи между нежелательными элементами для проверки фильтрации в разных частях последовательности. Пример кода на Python для формирования проверочного набора: test_data = ["", " ", "\t ", "valid1", " mixed ", "", "valid2", "  "] Такой подход гарантирует, что операция очистки адекватно обработает все ситуации. Метод strip() для очистки пробелов в начале и конце строки Используйте strip() для каждой записи в наборе для обрезки пробельных символов с обоих концов. Данный метод удаляет не только обычный пробел, но и символы табуляции \t, новой строки и возврата каретки . Используйте конструкцию списка для последовательной обработки всех записей: cleaned_list = [item.strip() for item in original_list]. Данный способ гарантирует, что записи, включающие лишь пробельные символы превратятся в текстовые фрагменты нулевой длины. Для более селективной очистки есть модификации: lstrip() воздействует только на начальную позицию текста, а rstrip() – на конечную. Это удобно, когда нужно оставить форматирование с одного края. Функция strip() не изменяет символы внутри текстового блока. Объект " пример текста " после применения метода превратится в "пример текста", оставив два пробела в середине. Применение спискового включения с условием if Примените конструкцию спискового включения с проверкой для удаления пустых элементов в наборе строк. Стандартная запись для этой операции имеет вид: [x for x in original_collection if x.strip()]. Метод .strip() дает ложное значение, когда объект содержит исключительно пробелов или полностью отсутствует, что исключает его из итоговой последовательности.

Исходные данные Python код Итог

['текст', '', ' ', 'анализ'] [item for item in data if item.strip()] ['текст', 'анализ']

[' Python', '\t ', ''] [e for e in lines if e.strip()] [' Python']

Для фильтрации данных, считанной из файла, используйте похожий метод. Формируйте итоговый список, анализируя каждую запись после обрезки пробелов в начале и конце. Пример кода для работы с файлом: cleaned_data = [line for line in open('file.txt') if line.strip()]. Это обеспечивает, что в cleaned_data останутся только строки с непустым содержимым. Отбор с помощью функции filter() и lambda Используйте комбинацию filter() и lambda для удаления нежелательных записей в коллекции. Выражение filter(lambda x: x.strip(), ваш_набор_данных) сохраняет только записи, имеющие печатные знаки. Метод x.strip() возвращает False для записей, состоящих исключительно из пробельных символов или абсолютно пустых. Разберем случай с исходным набором: ['текст', ' ', '', 'анализ']. После фильтрации получим ['текст', 'анализ']. Элементы между, пустые, будут удалены из итоговой последовательности. Конвертируйте итог в список с помощью list(), так как filter() возвращает объект итератора. Итоговый код: list(filter(lambda запись: элемент.strip(), начальный_набор)). Этот метод обеспечивает компактную запись без создания отдельной функции. Лямбда-выражение анализирует каждую запись, оставляя только те, чьё строковое представление после удаления пробелов по краям содержит данные. Обработка набора с помощью цикла for с анализом содержимого Сформируйте новый перечень и заполняйте его только значимыми элементами, игнорируя неинформативные. Этот подход избегает модификацию исходной коллекции во время ее обхода. Для воплощения поместите цикл for в синтаксиса списка, формируя новую структуру данных. В условии используйте метод .strip() к каждой строке. Если возвращаемое значение содержит какие-либо данные, элемент включается в итоговый набор. Пример реального кода на Python: начальный_список = ["текст", "", " ", " еще текст "] очищенный_результат = [элемент for элемент in исходные_данные if элемент.strip()] После выполнения очищенный_результат будет содержать только два значения: ["текст", "еще текст"]. Использование спискового включения дает максимальную производительность и компактность записи. Функция .strip() надежно идентифицирует и удаляет записи, состоящие только из пробельных символов, в том числе табуляции и переносы. Запоминание начальных позиций непустых строк Для фиксации исходных индексов значимых записей применяйте генерацию пар (индекс, значение). Отфильтровывайте записи, не содержащие полезного наполнения, а затем разбивайте полученные пары на два отдельных списка.

Создайте перечисление кортежей, где каждый содержит исходный индекс и ассоциированную строку. Удалите все записи, которые содержат только пробелов или абсолютно пустые.

Разбейте оставшиеся кортежи на 2 изолированных набора: один онлайн инструменты для работы со списками уникальных номеров, другой для текстового наполнения .

Пример кода на Python: