Бывают ситуации, когда нужно найти свободный и короткий домен, к примеру, трёх-символьный.
Для себя я выбрал доменную зону .net
Способ первый:
В интернете можно найти не актуальные на сегодняшний день базы, к примеру:
https://www.domainresearchtool.com/lists/net.zone.gz
Но проблема в том, что эта база за 2014 год и она уже устарела. Но на случай, если у вас есть бюджет около 30 $, вы можете купить этот файл, актуальный на сегодняшний день.
Скрипты, которые помогут получить из файла все трёх-символьные домены, были написаны на PERL’е.
open(my $fh, "<", "zone.txt") or die "Can't open file: $!";
open(my $wh, '>', "custom.txt") or die "Can't open file: $!";
$cou=0;
while (<$fh>) {
my @array = split /\s+/, $_;
if ((@array[1] eq "NS")&&(@array[0] ne $tmp)&&(length @array[0] == 3)){
print $wh @array[0]."\n";
}
$tmp=@array[0];
$cou++;
if ($cou%100000==0){
print "$cou\n";
}
}
close $fh;
close $wh;
open(my $fh, "<", "custom.txt")
or die "Can't open file: $!";
chomp(my @lines = <$fh>);
close $fh;
@list=sort @lines;
open(my $fh, ">", "sorted.txt")
or die "Can't open file: $!";
foreach (@list) {
print $fh "$_\n";
}
close $fh;
Этот скрипт, берёт из файла zone.txt все трёх-буквенные домены и сохраняет их в файл custom.txt, после чего сортирует найденные домены по алфавиту и сохраняет сортированный список в файл sorted.txt.
Второй скрипт:
open(my $fh, "<", "sorted.txt")
or die "Can't open file: $!";
chomp(@lines = <$fh>);
close $fh;
open(my $wh, '>', "free.txt") or die "Can't open file: $!";
my $cou=0;
@letters=('-','0'..'9','A'..'Z');
for(my $i=1; $i < scalar @letters; $i++){
for(my $j=0; $j < scalar @letters; $j++){
for(my $k=1; $k < scalar @letters; $k++){
$dmn=@letters[$i].@letters[$j].@letters[$k];
if(isPresent($dmn)<1){
$cou++;
print $wh $dmn."\n";
if($cou %100 == 0){
print $cou.", ";
}
}
}
}
}
close $wh;
print "ok";
sub isPresent(){
my ($dmn)=@_;
foreach(@lines){
if ($_ eq $dmn){
return 1;
}
}
return 0;
}
Загружает файл sorted.txt и генерирует все возможные комбинации трех-символьных доменов от 0-0 до ZZZ, далее проверяет существуют ли эти домены в файле sorted.txt и если их нет, то создаётся файл free.txt.
Как раз эти имена вы сможете использовать для выбора и регистрации уже своего домена.
Второй способ:
Если у вас нет доступа к актуальным файлам доменных зон, можно написать бота, который переберёт все возможные комбинации имени домена, и воспользовавшись командой nslookup найдёт все незарегистрированные. Проблема в том, что, если домен приобретен, но в него не внесены записи, то он тоже будет считаться свободным – “Non-existent domain”, в итоге, мы получаем около 1000 ложных срабатываний.
Листинг бота:
print "Generating all domains names... \n";
my @domains;
@letters=('-','0'..'9','A'..'Z');
for(my $i=1; $i < scalar @letters; $i++){
for(my $j=0; $j < scalar @letters; $j++){
for(my $k=1; $k < scalar @letters; $k++){
push @domains, @letters[$i].@letters[$j].@letters[$k].'.net';
}
}
}
print "Scaning... \n"; unless(open FILE, '>free-domains.txt') {
die "\nUnable to create $file\n";
}
close FILE;
my $cou=0;
foreach my $domain (@domains)
{
chomp($domain);
my $output = qx(nslookup -type=ns $domain 2>&1);
my $r_c=$?;
print "|";
if((index $output, "Non-existent domain") > -1){
print "\n".$domain."\n";
open(my $wh, '>>', "free-domains.txt");
print $wh $domain."\n";
close($wh);
}
if($cou%1000==0){
print "\nLast checked($cou): ".$domain."\n";
}
$cou++;
}
Бот сохраняет все, как он считает, свободные домены в файл free-domains.txt
Полученный список можно прогнать через любой сервис массовой проверки доменов, я использовал https://www.reg.ru/domain/new/bulk
Посылая на проверку по 200-300 доменов, через этот сервис, можно достаточно быстро, перебрать весь список, а свободные домены поместятся в корзину.
Вот результат поиска на сегодняшний день: