Bulk Dns Resolver - Справка

Вкладка "Задача"

Вкладка "Задача"

Previous topic Next topic  

Вкладка "Задача"

Previous topic Next topic  

TaskTab

Вкладка "Задача"

 

Это основная область программы, где задаются параметры работы.

 

В первую очередь необходимо выбрать файл с входными данными и выбрать их тип и способ чтения:

 

Имя файла - имя файла на диске с входными данными, над которыми будут выполняться Dns запросы.

 

Вх. данные - выбор типа данных, которые содержит ваш файл. Это могут быть E-mail адреса, IP адреса, Домены, URLы (http://). Данный параметр определяет как именно программа будет интерпретировать считанные из файла данные: IP адреса и Домены читаются "как есть", E-mail адреса и URLы фактически расцениваются как домены (часть после @ у e-mail адреса или имя хоста в URL ссылке).

 

Формат - выбор формата в котором данные хранятся в файле: Один элемент в одной строке (т.е. просто обычный текст) или CSV (значения, разделенные запятыми).

 

Разделитель - если формат входного файла CSV - необходимо выбрать символ разделителя полей. Обычно это запятая или точка с запятой. Так же можно выбрать символ табуляции или указать другой (свой) символ.

 

Столбец Csv - если формат входного файла CSV - необходимо выбрать столбец (поле) CSV файла, содержащий входные данные тип которых вы выбрали в поле Вх. Данные ранее.

 

На этом настройка входного файла завершена: программа понимает какие данные откуда и как читать.

 

 

Теперь нужно задать Dns запросы, которые вы хотите выполнить над входными данными:

 

Редактор Dns запросов организован в виде дерева запросов где корневые элементы дерева - это запросы, которые выполняются над данными из входного файла, а элементы-ветви это под-запросы источником данных для которых являются результаты исполнения родительского запроса.

 

Приведем несколько примеров:

 

RootQueries

 

На скриншоте выше вы можете увидеть несколько Dns запросов "корневого" уровня. Т.е. программа возьмет данные (домены) из входного файла и выполнит для каждого домена по три запроса: определит MX и NS сервера домена, а так же его SPF запись. После чего сохранит результаты в выходной файл.

 

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

 

SubQueries

 

Что изменилось по сравнению с предыдущим примером: после того как программа получит имя MX сервера домена она выполнит дополнительные под-запросы: определит IP адрес, на котором работает MX сервер после чего по полученному IP адресу определит его страну с помощью встроенного справочника GeoIP.

 

Таким образом, можно задать как отдельные запросы так и цепочки Dns запросов когда результаты предыдущего запроса являются входными данными для следующего (в примере выше результат MX запроса будет входными данными для А запроса, а результат А запроса - входными данными для определения страны).

 

Допустим, что мы хотим дополнительно проверить работает ли MX серверы доменов на IPv6 адресе для того чтобы понять возможна ли отправка почты на такие домены со своего IPv6 адреса (прокси). Для этого добавим еще один под-запрос и получим:

 

SubQueries1

 

Теперь для полученного MX сервера определяется не только А запись (IPv4) и страна, но так же и IPv6 адрес !

 

С помощью механизма цепочек запросов вы можете получить за один "прогон" вашей базы сразу несколько видов данных за существенно меньшее время !

 

Для создания запросов используйте кнопки:

 

Добавить запрос - добавить запрос корневого уровня или под уровня (если выбранный элемент дерева это под-запрос).

 

Добивать под-запрос - добавить под-запрос входными данными для которого будут результаты выполнения выбранного запроса.

 

Изменить - изменить тип выбранного запроса.

 

При добавлении/изменении запроса будет открыто окно, в котором нужно выбрать тип запроса исходя из входных данных. Например, при добавлении запроса корневого уровня:

 

DnsRoot

 

А при добавлении под-запроса (например запроса Resolve A из скриншота в начале этого топика):

 

DnsSub

 

Обратите внимание на скриншотах выше, что для первого запроса (MX) входными данными являются email адреса из входного файла, а для второго запроса (A) - входными данными являются результаты родительского запроса (MX).

 

Удалить - удалить выбранный запрос и его под-запросы.

 

Очистить - удалить все запросы в списке.

 

ВАЖНОЕ ЗАМЕЧАНИЕ: в случае если родительский запрос возвращает несколько значений (например MX и NS запросы могут вернуть несколько имен MX/NS серверов) то под-запрос будет выполнятся ДЛЯ ПЕРВОГО элемента в ответе родительского запроса ! Например, если родительский запрос (MX) вернул результаты: mx1.domain.com mx2.domain.com то под-запрос (А) будет выполнен только для mx1.domain.com

 

 

После того как перечень Dns запросов был задан необходимо указать выходной файл для сохранения результатов, а так же шаблон их сохранения.

 

Имя файла - имя выходного файла, куда будут записаны результаты исполнения запросов.

 

Шаблон - шаблон записи, определяющий какие данные и каким образом будут записаны в выходной файл. По сути шаблон это перечень [%...%] макросов вместо которых будут подставлены результаты соответствующих запросов. В примере на первом скриншоте задан шаблон:

 

[%InputString%], [%MX Result%], [%A Result%], [%Country Result%], [%SPF Result%]

 

Разберем макросы которые он содержит:

 

[%InputString%] - повторяет исходную строку из входного файла

[%MX Result%] - результат исполнения Dns запроса MX

[%A Result%] - результат исполнения Dns запроса А

[%Country Result%] - результат определения страны по IP адресу

[%SPF Result%] - результат исполнения Dns запроса SPF

 

Таким образом, данный шаблон сохранит результаты исполнения всех запросов, которые были заданы в дереве запросов ранее. Однако, может оказаться что все результаты вам не нужны. Например, вы хотите получить на выходе только имена MX серверов и их страну. В этом случае выходной шаблон будет выглядеть так:

 

[%InputString%], [%MX Result%], [%Country Result%]

 

или, если копия входных данных не нужна,:

 

[%MX Result%], [%Country Result%]

 

Обратите внимание, что разделитель результатов так же задается в шаблоне ! По умолчанию программа предлагает тот же разделитель, который был во входном файле, однако вы можете указать любой, например:

 

[%MX Result%] | [%Country Result%] | [%A Result%] или  [%MX Result%] aaa [%Country Result%] bbb [%A Result%] ccc, и так далее.

 

Если нужно сохранить результаты всех Dns запросов - нажмите кнопку Авто и программа сформирует готовый шаблон, который запишет результаты всех запросов.

 

Если входной файл имеет формат Csv - так же доступен дополнительный макрос [%InputCsvField%] вместо которого будет подставлено только выбранное поле Csv файла, а не вся Csv строка как при использовании макроса [%InputString%]

 

C помощью кнопки << Макрос вы можете вручную вставить в шаблон нужный макрос из перечня доступных.

 

Не сохранять ошибки запросов в вых. файл - во время работы часть запросов не будет выполнено по причине таймаута, отсутствия результатов, не корректного ответа dns сервера и т.д. С помощью этой галки можно запретить запись ошибок в выходной файл. В этом случае ошибка будет рассматриваться как отсутствие результата и вместо нее в выходной файл будет записан пробел.

 

После того как выходной шаблон задан вам может потребоваться записать в выходной файл не все данные, а только те, которые соответствуют определенным условиям. Например, при валидации списка email адресов в результаты должны попасть только те адреса, у доменов которых задан MX сервер для входящей почты домена.

 

Сохранить только если - поставьте эту галку если требуется запись только тех результатов, которые удовлетворяют заданным условиям:

 

SaveByRes

В примере на скриншоте в выходной файл попадут только те записи, у которых результат MX запроса не пуст И результат SPF запроса содержит +all

 

Другой пример: допустим у нас на входе список email адресов на корпоративных доменах и нам нужно сохранить только те их них, которые используют в качестве почты домена mail.ru, yandex.ru, rambler.ru, gmail.com:

 

SaveByRes1

В этом случае выбираем что нужно сохранить только те записи где результат MX запроса содержат mxs.mail.ru ИЛИ mx.yandex.ru ИЛИ inmx.rambler.ru ИЛИ google.com

 

Обратная задача: нужно сохранить только те адреса, которые не используют mail.ru, yandex.ru, rambler.ru, gmail.com в качестве почты домена:

 

SaveByRes2

Обратите внимание, что для условий Содержит и Не содержит применяется разная логика: ИЛИ для содержит, И для не содержит. Таким образом, в нашем примере будут сохранены только те записи, где результат MX запроса Не содержит mxs.mail.ru И Не содержит mx.yandex.ru И не содержит inmx.rambler.ru И Не содержит google.com

 

В случае если искомых значений слишком много (например для поиска освобождающихся доменов может быть задан большой список имен парковочных NS серверов) - их можно поместить в файл и указать имя файла в качестве искомого значения:

 

SaveByRes3

 

Обратите внимание, что можно указать только .txt и .csv файлы ! Если указан txt файл он должен содержать искомые значения по одному в строке. Если указан csv файл - он должен содержать искомые значения разделенные запятыми. Указанный файл будет загружен в память, поэтому он не должен содержать слишком больше число искомый значений. До 20 000 - нормально, больше не стоит т.к. это может затормозить процесс работы т.к. каждый полученный ответ будет сравниваться с огромным числом искомых значений.

 

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

 

SaveByRes4
 

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

 

Программа позволяет анализировать результаты двух Dns запросов, если нужно анализировать два результата - выберите логику:

 

SaveByRes

 

Анализ ограничен результатами только двух Dns запросов. Мы думаем, что c учетом возможности использовать регулярные выражения этого хватит для большинства задач (как и 640 кб в свое время :-) при наличии запроса от пользователей этот функционал программы может быть расширен.

 

На этом настройка задачи завершена, нажмите кнопку Старт для запуска работы и Стоп для ее остановки.