2016-12-30 2 views
0

У меня есть «.uk» ccTLD. Я хочу получить список всех доменов второго уровня под ним. Я попытался использовать StringBuilder, который содержит различные комбинации и длины алфавитов (например, aa.uk-zz.uk, aaa.uk-zzz.uk). [код указан ниже]. Чтобы проверить это, я изначально планировал использовать класс Whois. Но после нескольких тестов я получаю «превышение квоты» в качестве ответа. Поэтому я отказался от этой возможности, поскольку каждому IP-адресу задан определенный предел. Возможно ли получить доступ и получить список доменов второго уровня сервера имен DNS? Если да, пожалуйста, сообщите мне, как это сделать в java.Как получить домены второго уровня под «.uk» ccTLD

`

общественного класса generateDomain {

public static void genDomain(int iDomainLength, String sPredecessor,int iSubLevel) { 

    //===========DECLARATIONS============== 
    char[] arr_charAlphabets; 
    String sDiffcombinations=""; 
    int[] arr_iPosition; 
    int iTotalPossibilities; 
    StringBuilder sBuilderComb; 
    //==========END OF DECLARATIONS======== 


    //===========START OF ARRAY BUILDER=================== 
    //Build an array of characters storing all alphabets 
    //a(97)-z(122) - lowercase only 
    arr_charAlphabets = new char[26]; 
    for(int iIterator=97;iIterator<=122;iIterator++){ 
     arr_charAlphabets[iIterator-97] = (char) iIterator; 
    } 
    //===========END OF ARRAY BUILDER====================== 

    //===========START OF TEMPLATE BUILDER================= 
    //This portion builds a template of <spaces> and 
    //these <spaces> will be replaced with alphabets 
    for(int iIterator=1;iIterator<=iDomainLength;iIterator++){ 
     sDiffcombinations+=" "; 
    } 
    //===========END OF TEMPLATE BUILDER=================== 
    sBuilderComb = new StringBuilder(sDiffcombinations); 

    arr_iPosition = new int[iDomainLength]; 
    iTotalPossibilities = (int) Math.pow(26, iDomainLength); 


    for (int iIterator1 = 0; iIterator1 < iTotalPossibilities; iIterator1++){ 

     for (int iIterator2 = 0; iIterator2 < iDomainLength; iIterator2++){ 

      if (arr_iPosition[iIterator2] == arr_charAlphabets.length){ 
       arr_iPosition[iIterator2] = 0; 
       if (iIterator2 + 1 < iDomainLength) { 
        arr_iPosition[iIterator2 + 1]++; 
       } 
      } 

      sBuilderComb.setCharAt(iIterator2, arr_charAlphabets[arr_iPosition[iIterator2]]); 
     } 

     arr_iPosition[0]++; 
     //====================================================== 
     System.out.println(sBuilderComb.toString()+sPredecessor); 

    } 


} 

public static void main(String[] args) { 
    genDomain(2, ".uk", 1); 
    System.out.println("Combinations of length 2 generated"); 
} 

}

`

+1

Только один вопрос на данный момент - почему? – home

+0

Это для проекта в университете – Tashley

+0

см. Это http://webmasters.stackexchange.com/questions/23786/is-it-possible-to-find-all-subdomains-for-a-certain-domain – borowis

ответ

0

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

Во-вторых, вы говорите, что делаете это для университетского проекта. В этом случае вы должны действительно узнать, как работает DNS, прежде чем писать другой символ исходного кода. Обучение - это то, почему вы в университете в первую очередь, не так ли?

В-третьих, правильный способ получить чужую информацию - не пытаться сорвать ее с их воли (как вы это делаете сейчас). Правильный способ - попросить их с удовольствием передать его вам и быть готовым к тому, что они могут потребовать компенсацию, чтобы дать вам это. «Их» в случае ccTLD UK - Nominet. Вся информация, которая вам нужна для ответа на ваш вопрос здесь, доступна на их веб-сайте.