Написать на Perl5 СООП сервер для получения WHOIS доменов
Добавлено: 23 май 2017, 20:45
Привет всем!
Вот задание. Присылайте ценник и срок. Исполнитель должен хорошо знать AnyEvent
и иметь опыт.
Нужно написать собственный сервер, который слушает на каком-либо TCP порте и
принимает соеденения от клиентов с запросом на получение WHOIS данных пачки
доменов. Например, в таком формате:
domen-primer-123.ru\n
domen-primer-234.ru\n
domen-primer-345.ru\n
domen-primer-456.ru\n
domen-primer-567.ru\n
.
На этом же сервере должна работать MongoDB, которая должна хранить *локальную*
копию WHOIS данных по доменам, которые ранее были получены:
Если в локальной базе есть WHOIS данные по домену, тогда надо отдать их клиенту
(сокет клиента не закрывается пока весь запрос полностью не будет обработан).
Если в локальной базе нет WHOIS данных по домену, сервер должен начать
обращаться к WHOIS серверам доменов, используя socks5 прокси заданных в массиве:
my @socks5_pool = ('2.3.4.5:1080', '3.4.5.6:1080', '4.5.6.7:1080');
К одному socks5 прокси можно одновременно подключиться только один раз.
Как только данные по какому-либо домену приняты, их нужно добавить в локальную
MongoDB и отправить клиенту.
Если WHOIS ответ по домену не успешен, повторить запрос через свободный прокси
из пула (прокси сервера находятся в одной локалке с сервером).
РЕШЕНИЕ
Можно использовать Net::Whois::Raw + IO::Socket::Socks::Wrapper + AnyEvent.
Обязательно писать, используя AnyEvent.
Для MongoDB не нужен AnyEvent, т.к. база будет локальная. Клиент и сервер
удаленные. WHOIS серверы доменов, конечно, удаленные.
ОКРУЖЕНИЕ
Серверная Ubuntu 16.04.
Вот задание. Присылайте ценник и срок. Исполнитель должен хорошо знать AnyEvent
и иметь опыт.
Нужно написать собственный сервер, который слушает на каком-либо TCP порте и
принимает соеденения от клиентов с запросом на получение WHOIS данных пачки
доменов. Например, в таком формате:
domen-primer-123.ru\n
domen-primer-234.ru\n
domen-primer-345.ru\n
domen-primer-456.ru\n
domen-primer-567.ru\n
.
На этом же сервере должна работать MongoDB, которая должна хранить *локальную*
копию WHOIS данных по доменам, которые ранее были получены:
Если в локальной базе есть WHOIS данные по домену, тогда надо отдать их клиенту
(сокет клиента не закрывается пока весь запрос полностью не будет обработан).
Если в локальной базе нет WHOIS данных по домену, сервер должен начать
обращаться к WHOIS серверам доменов, используя socks5 прокси заданных в массиве:
my @socks5_pool = ('2.3.4.5:1080', '3.4.5.6:1080', '4.5.6.7:1080');
К одному socks5 прокси можно одновременно подключиться только один раз.
Как только данные по какому-либо домену приняты, их нужно добавить в локальную
MongoDB и отправить клиенту.
Если WHOIS ответ по домену не успешен, повторить запрос через свободный прокси
из пула (прокси сервера находятся в одной локалке с сервером).
РЕШЕНИЕ
Можно использовать Net::Whois::Raw + IO::Socket::Socks::Wrapper + AnyEvent.
Обязательно писать, используя AnyEvent.
Для MongoDB не нужен AnyEvent, т.к. база будет локальная. Клиент и сервер
удаленные. WHOIS серверы доменов, конечно, удаленные.
ОКРУЖЕНИЕ
Серверная Ubuntu 16.04.