Универсальный whois на delphi - определяем whois сервер - SEO блог

SEO

 


Доброго времени суток, на днях кодил программу на Delphi для автоматизации очередного нудного веб-мастерского процесса (поиск свободных доменов с PR + кое-какой чек в WA) и походу дела столкнулся с проблемкой — определение Whois сервера. Собственно необходимым кодом я сейчас и поделюсь, уточнив несколько основных моментов при работе с Whois.

Прежде всего для самых отдалённых (таких как я) для того что-бы например проверить регистрацию или дату освобождения домена — нужен Whois, т.е. тянуть всю информацию оттуда. Тут в принципе всё понятно но есть одно но, у каждой доменной зоны есть свой Whois сервер, например если обратится к базе whois.ua, запросив при этом данные для домена в зоне .com — то нас мягко пошлют, мол нету информации — то и логично.

В общем задался я вопросом, как можно узнать Whois сервер для зоны, выход нашел и то был iana.org обратившись к этому сервису по Whois протоколу можно без проблем получить информацию о том, какой whois сервер использовать для той или иной доменной зоны. Необходимый Whois сервер iana выдаёт в поле refer, всю грязную работу я сделал за вас, прочекав все возможные доменные зоны и узнав их Whois. Теперь вынашу на суд мой творение — универсальный код по определению Whois данных.

План действий такой:

  • Берём url из едита
  • определяем доменную зону
  • определяем Whois сервис для этой зоны
  • получаем Whois данные

теперь сам код:

function getzona(url: string):string;
var i, num, num2:integer;
begin
num:=0;
num2:=0;
for i:=0 to length(url) do begin
if url[i] = '.' then begin
num:=num+1;
num2:=i;
end;
end;
result:=copy(url,num2,length(url));
end;

Данная функция служит для определения зоны, входной параметр это собственно урл.

Далее в memo или ещё куда подгружаем список мною добытый (в конце записи полный список), где идёт сопоставление доменной зоны с whois, список вида:

.ua+whois.ua
.ac+whois.nic.ac
.ae+whois.aeda.net.ae
.aero+whois.aero
.af+whois.nic.af
и т.п.

т.е. вначале идёт зоны и потом через плюс идёт whois сервер. Юзается подобная база так:

var ws, zona:string; i, num, num2:integer;
begin
zona:=getzona(edit3.text);

for i:=0 to form1.memo1.lines.count-1 do begin
if copy(memo1.lines[i],1,pos('+',memo1.lines[i])-1) = zona then begin
ws:=copy(memo1.lines[i],pos('+',memo1.lines[i])+1,length(memo1.lines[i]));
continue;
end;
end;

В начале вызываем функцию getzona которая определяет зону (алгоритм там простенький — подсчёт точек, и последняя точка — начало позиции зоны, дальше копирование) в переменную zona. Затем проходим по мемо где находится список вида «зона=whois” и ищем необходимый whois под нашу зону.

Собственно после того как всё определили, получаем whois данные:

IdWhois1.Host:=ws; // указываем whois сервер
memo1.lines.text:=IdWhois1.WhoIs('lalala.org.com'); // в мемо пихаем данные.

Чуть не забыл, не забудьте на форму кинуть компонент idwhois с вкладки indy clients. На этом в принципе всё, удачи.

Найти все симс 3 дополнения определённо нелегко. .


Добавить комментарий


3faab077

   

Top