Программа предназначена для проверки списка прокси серверов на вхождение в указываемые (опасные) диапазоны. Соответственно с помощью неё можно выявить адреса входящие и не входящие в выбранные диапазоны.
Начну пожалуй с того, что эту программу я писал на заказ и конечные цели обработки я представляю туманно. Но вы то их представляете, поэтому приступлю к описанию.
Задача:
Имеется текстовый файл в котором находится список адресов прокси серверов. На каждой строке указан 1 адрес. Наглядно это имеет следующий вид:
192.168.1.1:80
192.5.2.6:400
и так далее...
Адреса могут иметь вид представленный выше или же просто адрес без указания порта, то есть 192.168.1.1
Имеется второй текстовый файл для указания опасных диапазонов ip адресов зарезервированных всякими организациями. Он имеет следующий вид:
192.168.*.*
6.*.*.*
5.*.1.2
7.0.1.2
и так далее...
Остановимся на возможных вариантах написания диапазонов адресов. "*" обозначает число от 0 до 255. Диапазон нужно записывать в полном виде, то есть все 4-е октета, например 1.*.*.*. На каждой строке должен быть указан лишь один диапазон. Так же диапазон может представлять из себя конкретный ip адрес, например 7.0.1.2, а в списке прокси может быть несколько таких адресов с различными номерами портов.
Сравнивая адреса с диапазонами необходимо выявить хорошие (не входящие в опасные диапазоны) и плохие (входящие в диапазоны) адреса прокси.
Сама программа IPv4 Compare и два файла. Proxy_List.txt - адреса прокси и Range_List.txt - опасные диапазоны. Эти два файла являются исходными данными.
В результате сравнения получаем 5 файлов с результатами, при каждом сравнении они перезаписываются:
Good_Proxy.txt - список прокси не входящих в указанные диапазоны
Bad_Proxy.txt - список прокси входящих в диапазоны
Dublicate_Proxy.txt - список полностью совпадающих прокси, то есть совпадает ip адрес и порт. Если совпадает только ip, а порт отличается, то это считается разными прокси. У дублированных прокси в сравнении участвует только один экземпляр и в результат попадает тоже один.
Ignored_Range.txt - проигнорированные диапазоны. Диапазон игнорируется и не участвует в сравнении, если он в точности совпадает с другим диапазоном или входит в другой, более глобальный диапазон. К примеру есть у вас диапазон 1.0.*.* это значит что все остальные диапазоны начинающиеся с 1.0 или адреса конкретных опасных серверов попадут в Ignored_Range. Соответсвенно все прокси начинающиеся с 1.0 , попадут в Bad_Proxy. В идеале конечно Ignored_Range должен быть пустым, если в нём есть диапазоны, то лучше выяснить как они там оказались.
Corrected_Proxy_List.txt - скорректированные (уникальные) диапазоны. Это те диапазоны, которые непосредственно участвовали в сравнении. То есть диапазоны из Range_List за исключением проигнорированных, попавших в Ignored_Range.
Кнопки программы:
Download Proxy File - позволяет выбрать файл со списком прокси, который тут же перезапишет файл Proxy_List.txt
Good - открывает файл Good_Proxy.txt
Download Proxy - открывает файл Proxy_List.txt (открывается приложением по умолчанию, обычно блокнот и при размере файла >5Мб или 250тысяч адресов это может занять некоторое время)
Хотелось бы ещё сказать немного о быстродействии. Оптимизация была под миллион адресов прокси. И это количество просчитывается секунд 40 на древнем Core2Duo c частотой 2ГГц. Больше адресов не пробовал, напишите в комментариях если кто будет сравнивать больше и есть ли такие потребности вообще. Ограничение есть только на объём памяти занимаемой программой примерно в 2Гб. При миллионе адресов занимает 80Мб...
P.S. Программа конечно может быть доработана, эммм, при некотором финансировании со стороны нуждающихся.
Из тех доработок которые уже всплыли имеется:
Ввод диапазонов не расписывая их построчно, например в виде 192.168-250.*.* в текущей версии такое нужно расписывать вручную.
Более глобальные изменения, скажем сортировка адресов или кардинальное увеличение количества прокси, требуют перехода к работе с базой данных. Это уже будет сложнее. Но всё возможно.
Статью до конца вы видимо не дочитали. Изначальные условия у меня были написать для проверки конкретного ip в котором могли присутствовать звёздочки... Потом конечно аппетит у заказчика пришёл, но ему это было не критично. Поэтому так и осталось.
Комментарии
Такое ваша прога понимает правильно?