Проект по быстрому извлечению всех адресов электронной почты из любых файлов по заданному пути.
Этот проект задуман как совершенно новая версия базовой кодовой базы с открытым исходным кодом, которую я использовал большую часть десятилетия для извлечения адресов электронной почты из утечек данных перед их загрузкой в HIBP. Большинство нарушений происходит в формате .sql или .csv либо в одном файле, либо в нескольких файлах в папке, и их извлечение осуществляется простым процессом:
Я использовал следующее регулярное выражение: b[a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-_]+.[a-zA-Z]+b
Проверка адреса электронной почты с помощью регулярного выражения сложна, но для этого варианта использования она не обязательно должна быть идеальной. Ложные срабатывания крайне редки, и их влияние незначительно, а именно: в HIBP загружается строка, которая не является подлинным адресом , или загружается подлинный адрес необычного формата. По большей части это регулярное выражение можно резюмировать как «заполнить обе стороны символа @ TLD из буквенных символов».
Неизбежно дискуссия привела к соблюдению RFC по сравнению с практическим использованием определенных символов при рассмотрении правил синтаксического анализа. Здесь есть два основных соображения:
Как ни странно, пункт 1 редко когда-либо верен по сравнению с пунктом 2. Результатом ложного отклонения законного адреса, соответствующего спецификации, является то, что он не попадает в HIBP (т.е. низкое влияние). Разрешение разрешенных адресов, которые на самом деле не существуют, заключается в том, что в HIBP попадают ненужные записи (также низкое влияние). Особенно если учесть вероятность того, что адрес с непонятными символами будет практически использован (например, принят в регистрационную форму и не отклонен), в целом предпочтительнее отклонять символы, которые, вероятно, являются результатом ошибок синтаксического анализа.
На самом деле малопонятные шаблоны вряд ли будут использоваться в адресах электронной почты.
Я обратился и попросил поддержки, и я начну работу с помощью одного или двух ключевых людей, а затем обращусь к более широкому мнению. Меня особенно интересует оптимизация службы для больших наборов данных и нетекстовых файлов, особенно с учетом увеличения количества документов, сбрасываемых командами программ-вымогателей. Я начну создавать проблемы для тех частей, которые нужно построить.
С помощью генератора SQL-данных Red Gate можно загрузить с Mega образец файла, содержащего 10 миллионов записей типичных данных о нарушениях. В результате этого файла с помощью текущей версии этого приложения извлекается ровно 10 миллионов адресов электронной почты. Примечание. В настоящее время файл тестовых данных находится в версии V2, причем в более ранней версии количество уникальных адресов составляет чуть менее 10 миллионов из-за наличия недопустимых шаблонов доменных имен.
Синтаксис: AddressExtractor.exe -?
Синтаксис: AddressExtractor.exe -v
Синтаксис: AddressExtractor.exe <input [[... input]]> [-o output] [-r report]
Вариант | Описание |
---|---|
-? , -h , --help | Печатает синтаксис и параметры командной строки |
-v , --version | Печатает номер версии приложения |
вход | Одно или несколько входных имен файлов или каталогов. |
-o , --output вывод | Путь и имя выходного файла. По умолчанию — «addresses_output.txt». |
-r , --report отчет | Путь и имя файла отчета. По умолчанию — «report.txt». |
--recursive | Включить рекурсивный режим для каталогов, который будет искать дочерние каталоги. |
-y , --yes | Автоматически подтверждайте запросы ПРОДОЛЖИТЬ без запроса |
-q , --quiet | Выполнять с меньшим количеством подробностей, сообщения о ходе выполнения не отображаются. |
Вариант | Описание |
---|---|
--debug | Включите режим отладки для точной проверки производительности. |
--threads потоков | Использует несколько потоков с каналами для чтения из файлов. По умолчанию 4 |
--skip-exceptions | Автоматически запрашивает ПРОДОЛЖИТЬ при возникновении исключения. |